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