Зависит от конкретной версии 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, и с ним нет таких
дурацких проблем, хоть и разворачивается в разы сложнее, не без полуночного красноглазия.