Назад | Перейти на главную страницу

Как лучше всего разделить клиентские сайты при установке PostgreSQL?

Мне нужно разместить несколько клиентских сайтов, используя одну установку PostgreSQL. Как лучше всего их разделить - по схеме или по экземпляру?

Факторами будут то, что упрощает администрирование (особенно резервное копирование / восстановление отдельных сайтов), производительность сайтов и общую эффективность использования памяти.

Спасибо Джейсон

«Лучший» способ сильно зависит от вашего варианта использования, однако еще в дни моего хостинга мы просто предоставляли каждому клиенту своего собственного пользователя БД, который был DBO в их конкретной базе данных, с соответствующими разрешениями и ограничениями входа (в Postgres и pg_hba.conf соответственно), чтобы они не могли связываться с чужими данными.

Резервное копирование / восстановление можно выполнить с помощью pg_dump (дамп каждой базы данных по отдельности, чтобы их можно было легко восстановить, не просматривая файл дампа), а производительность / настройка такие же, как и у любого среднего или большого экземпляра Postgres.


Разделение по схеме (в пределах одной базы данных) также является вариантом, но оно не обеспечивает тот же уровень разделения, что и отдельная БД, и вы, очевидно, не можете позволить клиентам создавать свои собственные схемы (или делать что-либо еще, требующее DBO ), если вы это сделаете.


Разделение по экземплярам (отдельный сервер Postgres для каждого клиента) - это окончательный уровень разделения, но на самом деле требуется отдельный Операционные системы user для каждого клиента (поэтому Postgres работает под совершенно разными пользователями). Это также огромный приемник памяти / ресурсов: в идеале Postgres (как и большинство систем БД) должен быть единственным, что работает на сервере, и только одним экземпляром.