Недавно при прохождении собеседования задали вопрос: Что лучше, SQL или NoSQL?

Ответ: Ничего не лучше, это просто разные инструменты для решения разных задач.

Postgres - популярное и проверенное решение, обкатанное во многих больших компаниях (да-да, ваши резюме, балансы счетов, какие-нибудь опционы и много всего ещё лежит именно в этой БД), оно отлично подходит для тех ситуаций, когда хочется надежности.

В то же время, в некоторых проектах в любой момент может прийти менежер со словами: "ещё вчера нам нужно было добавить 1 поле, сегодня уже 3 и всё это очень срочно". В таких условиях приходится либо плодить бесконечные миграции, либо ... да нет, миграции.

Именно здесь на сцену выходят MongoDB и подобные schemaless-решения (строго говоря, она хранит документы с динамически модифицируемой структурой). Хотите быстро добавить поле? Хотите работать с полем, которое добавили час назад и которого в 95% документов вообще нет? Да пофигу, я могу это всё на лету.

В то же время, есть какие-то сервисы, которым только и надо, что инкрементировать какой-то счетчик и здесь разворачивать любую из вышеозначенных СУБД - всё равно что формировать детскую песочницу ядерным взрывом, несколько избыточно. Здесь блистают Redis-ы и прочие key-value хранилища.

Я это всё к чему говорю. Не бывает лучше или хуже. Бывает разная степень полезности в конкретной ситуации.

В связи с этим хочется показать прекрасный доклад Олега Бартунова (астроном, научный сотрудник МГУ, немного скалолаз и вообще крутой дядька, ещё руководит компанией с названием Postgres Professional):

Сам доклад, на самом деле, несколько противоречит вышеозначенному тезису и продвигает мысль о том, что надо использовать Postgres везде, в т.ч. переезжать в него из NoSQL. Но пока мы сделаем скидку на то, что докладчик несколько аффилирован с инструментом и поделим убедительность на полтора.

В целом, из видео Вы узнаете:

  • насколько PostgreSQL гибкий
  • почему key-value можно впихивать прямо в него и при чем тут термин hstore
  • будут хорошие бенчмарки, в которых postgres всех уделает совершенно по делу (по моему опыту mongo не может в настоящий хайлоад)

Будет ещё всякое такое, что уже отъезжает от названия этой заметки и потому предлагаю ознакомиться самостоятельно.


Comments

comments powered by Disqus