С PostgreSQL у вас есть две различные области, которые могут выполнять пул, либо на уровне приложения (т. Е. Jdbc, встроенный в пул и т. Д.), Либо на промежуточном уровне, который находится между приложением и базами данных, такими как pgbouncer или pgpool.
Если вы выполняете пул на промежуточном уровне, таком как pgbouncer или pgpool, тогда этот уровень также может выполнять балансировку нагрузки для отдельных запросов. Кроме того, при балансировке нагрузки вы можете выполнять запись одним из двух способов: у вас может быть один мастер записи, который реплицирует ваши ведомые устройства с помощью других средств, используя такой инструмент, как slony, или встроенную потоковую репликацию, показанную в pg 9.0. и выше, или вы можете сделать так, чтобы балансировщик нагрузки делал всю запись, так что входящие чтения бьют только по одному дБ, но записи бьют каждую базу данных, чтобы поддерживать их все обновленными.
Или, если вы любитель приключений, вы можете переместить слой балансировки нагрузки вниз на другой слой в сам postgresql, используя plproxy. Это язык pl для pgsql, предназначенный для того, чтобы вы могли поместить одну базу данных pg во внешний интерфейс, в которой нет фактических данных, и эта база данных может работать поверх нескольких, возможно, избыточных баз данных для невероятной пропускной способности. plpoxy довольно сложна в настройке и запуске, но она также достаточно масштабируема. Обратите внимание, что ваше приложение должно быть переписано для поддержки, чтобы его нельзя было бросить ни в какое старое приложение, а просто работать.
http://slony.info/
http://wiki.postgresql.org/wiki/PL/Proxy
http://pgpool.projects.postgresql.org/