Задать вопрос
@bRUtality
highload developer

Простейший решардинг для PostgreSQL?

Доброго дня, коллеги!

Есть база PostgreSQL на одном физическом сервере, нужно раскидать ее на 2 сервера. Задача упрощается тем фактом, что есть непересекающиеся данные (две мастер таблицы со своими потомками). Т.е. в идеале нужен как бы один инстанс, а физические разделы серверов база видела как tablespace (ну, чтобы, как вы догадываетесь, применить tablespacing).

Обычно горизонтальный шардинг, как я понимаю, решается балансировщиком. Самый простой из них - Postgres-XC. Вот, собственно, вопрос в том, можно ли сделать попроще, учитывая исходные данные задачи?
  • Вопрос задан
  • 2341 просмотр
Подписаться 9 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
voidnugget
@voidnugget
Программист-прагматик
Зависит от конкретной версии PostgreSQL'я.
Если самый простейший - можно с коробки в 9.5 через postgres_fdw вот так . В <9.5 нельзя так как там внешние таблички (foreign tables) не могут наследоваться. Cам fdw afaik однопоточный по историческим причинам, по этому имеет смысл хранить сразу несколько шардов в пределе одного сервера.

Если нужна поддержка, и что-то попроще чем ванильный SQL, то лучше взять какое-то готовое расширение (extension) типа pg_shard, и потом докупить у них же их плюшки к PostgreSQL'ю по потребности. pg_shard умеет только операции равности (equality) хешей столбцов у шардов, эт значит что если выползти за границы таблички любым range query - оно начнёт бороздить все шарды, что порядком надоедает. Реализацию операций сравнения (больше/меньше) хешей пока не замечал, хотя давно его не ковырял. Т.е. хоть это и довольно таки простое решение, без понимания его ограничений чуть более чем наверняка можно напороться на квазилион граблей. Иногда складывается впечатление что разработчики специально затягивают feature list для того что бы клиенты переходили на их платный CitusDB.

Уууу.... CitusDB сегодня заопенсорсили.

PostgreSQL-XC нынче чуток морально устарел, и на его основе был разработан PostgreSQL-XL, про который уже упоминалось на хабре. Поддержки как таковой у него нет, но есть пару российских вендоров которые в нём перманентно ковыряются, так как это сугубо опенсорсятинка. Имхо, по функционалу оно на много превосходит pg_shard, и с ним нет таких дурацких проблем, хоть и разворачивается в разы сложнее, не без полуночного красноглазия.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы