Промышленные решения на основе СУБД PostgreSQL

Какие особенности стоит учесть при проектировани критичных высоконагруженных систем с использованием СУБД PostgreSQL.
29 апреля, в 23:50

Переход на PostgreSQL


Итак, мы решили остановиться на PostgreSQL. Процесс миграции с MongoDB представлял собой непростую задачу. Мы разбили её на три этапа:

— подготовка базы PostgreSQL, миграция небольшой части данных
— обновление приложений, которые работают с MongoDB, для работы с PostgreSQL, включая какой-либо рефакторинг
— миграция продакшена на новую БД и размещение на новой платформе

Миграция небольшой части данных


Хотя и существуют инструменты для миграции, из-за особенности наших данных нам пришлось самостоятельно делать такие инструменты. Это были одноразовые Ruby-скрипты, каждый из которых занимался отдельной задачей – переносом обзоров, подчисткой кодировок, правкой основных ключей и прочего.

Обновление приложений


Больше всего времени ушло на обновление приложений, особенно тех, которые сильно зависели от MongoDB. Это заняло несколько недель. Процесс представлял собой следующее:

— замена драйвера/кода/модели MongoDB на код для PostgreSQL
— прогон тестов
— исправление тестов
— повторить пункт 2

Для приложений, работавших не на Rails, мы остановились на использовании Sequel. Для Rails взяли ActiveRecord. Sequel – удобный набор инструментов, поддерживающий почти все особые функции PostgreSQL. В построении запросов он выигрывает у ActiveRecord, хотя местами получается чересчур много текста.

К примеру, надо вам подсчитать количество пользователей, использующих определённую локаль в процентах к общему количеству. На простом SQL такой запрос может выглядеть так