Можно ли заменить MongoDB на PostgreSQL и не переписать весь продукт

Базы данных и системы хранения

PostgreSQL
MongoDB
Базы данных / другое
Организация доступа к базам данных, ORM, собственные драйвера
Распределенные системы

Программный комитет ещё не принял решения по этому докладу

Целевая аудитория

Доклад будет полезен разработчикам и архитекторам, которые рассматривают миграцию с документных СУБД на PostgreSQL, используют JSONB или выбирают стратегию горизонтального масштабирования.

Тезисы

Яндекс.Трекер больше десяти лет развивался поверх MongoDB. За это время документная модель глубоко встроилась в архитектуру продукта: более ста коллекций, десятки тысяч пользовательских полей без фиксированной схемы, крупные документы и атомарные частичные обновления. При создании On-premises-версии нам потребовалось перенести сервис на PostgreSQL, сохранив основные свойства модели данных и не переписывая продукт с нуля. Мы выбрали хранение динамических полей в JSONB и проверили решение нагрузочными тестами на десятках миллионов документов. Исследовали производительность чтения и частичных обновлений, работу TOAST и VACUUM, сравнили PostgreSQL с MongoDB и отдельно проверили документы размером около 15 МБ. После этого изучили горизонтальное масштабирование с помощью Citus: локальные и кроссшардовые запросы, работу координатора, пагинацию и ребалансировку данных. В докладе расскажу, какие свойства MongoDB действительно потребовалось сохранить, почему для нашей модели доступа JSONB оказался практичнее EAV, как мы строили нагрузочные тесты и какие ограничения обнаружили при шардировании. Завершу деталями переписывания сервиса и запуска PostgreSQL-версии Трекера в On-premises.

20 лет в IT. Начинал с сайтов на LAMP. Затем бекенды на Java. Сейчас архитектор в команде Трекер, Вики, Формы.

Видео

Другие доклады секции

Базы данных и системы хранения