- PVSM.RU - https://www.pvsm.ru -

Сразу оговорюсь — я не имею ничего против размещения части бизнес логики в хранимых функциях, если это предусмотрено в архитектуре системы и оправдано по ряду практических соображений, которые выходят за рамки этой статьи.
C Oracle у меня старые и тесные взаимоотношения. Видел много отличных архитектур и кода, и много ужасных «залеп». Oracle предоставляет разработчику неисчерпаемую бездну возможностей, и практически всегда находится нужная именно сейчас «фишка».
В целом, Oracle — удивительный инструмент, и я не устаю удивляться тому, как всё это богатство может работать в принципе и работать стабильно.
Около двух лет назад я перешёл из Enterprise мира в свободное плавание, где махина Oracle с её $47k за ядро — вне досягаемости.
Одним из первых freelance проектов был небольшой биллинг для суб-оператора спутниковой связи. Встал вопрос выбора РСУБД. MySQL сразу отпал по причине недоразвитости процедурного языка, выбор пал на PostgreSQL.
По мере работы над этим и следующими проектами я составлял список субъективных плюсов и минусов PostgreSQL по сравнению с Oracle с точки зрения разработчика БД. Его и представляю вашему вниманию:
function test() returns void as
$$
begin
end;
$$ language plpgsql;
Или необходимость писать perform, чтобы вызвать процедуру по имени:
perform my_proc(); вместо просто my_proc();
Хорошим дополнением этому списку было бы сравнение с точки зрения DBA, но тут, как говорится, я не вполне копенгаген. Было бы очень интересно в будущем увидеть такое сравнение на Хабре.
Выводы? PostgreSQL есть куда расти, но уже сейчас при разработке проектов не сверхбольших масштабов он выглядит очень достойно рядом с чего уж таить — эталоном рынка РСУБД.
Автор: CPro
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/12796
Ссылки в тексте:
[1] Псевдо тип serial: http://www.postgresql.org/docs/9.1/static/datatype-numeric.html#DATATYPE-SERIAL
[2] Можно писать функции на чистом SQL: http://www.postgresql.org/docs/9.1/static/xfunc-sql.html
[3] Замечательный with: http://www.postgresql.org/docs/9.1/static/queries-with.html
[4] Generate_series: http://www.postgresql.org/docs/9.1/static/functions-srf.html
[5] CONSTRAINTS: http://www.postgresql.org/docs/9.1/static/sql-createtable.html
[6] RULES: http://www.postgresql.org/docs/9.1/static/rules.html
[7] реализованы VIEW: http://www.postgresql.org/docs/9.1/static/rules-views.html
[8] WHERE: http://www.postgresql.org/docs/9.1/static/indexes-partial.html
[9] LIMIT с OFFSET: http://www.postgresql.org/docs/devel/static/queries-limit.html
[10] Убогое партиционирование: http://www.postgresql.org/docs/9.1/static/ddl-partitioning.html
[11] MERGE: http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm
Нажмите здесь для печати.