22.1. Обзор#
22.1. Обзор
Небольшое количество объектов, таких как роль, база данных и табличное пространство, определены на уровне кластера и хранятся в табличном пространстве pg_global
. Внутри кластера находятся несколько баз данных, которые изолированы друг от друга, но могут получить доступ к объектам на уровне кластера. Внутри каждой базы данных находятся несколько схем, которые содержат объекты, такие как таблицы и функции. Таким образом, полная иерархия выглядит следующим образом: кластер, база данных, схема, таблица (или какой-либо другой тип объекта, например, функция).
Когда клиент подключается к серверу базы данных, он должен указать имя базы данных в своем запросе на подключение. Невозможно получить доступ к более чем одной базе данных на одно соединение. Однако клиенты могут открывать несколько соединений с одной и той же базой данных или разными базами данных. Безопасность на уровне базы данных имеет две составляющие: контроль доступа (см. Раздел 20.1), управляемый на уровне соединения, и контроль авторизации (см. Раздел 5.7), управляемый с помощью системы предоставления прав. Обертки внешних данных (см. postgres_fdw) позволяют объектам в одной базе данных действовать как прокси-объекты для объектов в другой базе данных или кластерах. Старый модуль dblink (см. dblink) предоставляет аналогичную возможность. По умолчанию все пользователи могут подключаться ко всем базам данных с использованием всех методов подключения.
Если планируется, что один кластер серверов Tantor SE будет содержать несвязанные проекты или пользователей, которые, в большинстве случаев, не должны знать о существовании друг друга, рекомендуется разместить их в отдельных базах данных и соответствующим образом настроить авторизацию и контроль доступа. Если проекты или пользователи взаимосвязаны и должны иметь возможность использовать ресурсы друг друга, их следует разместить в одной базе данных, но, вероятно, в отдельных схемах; это обеспечивает модульную структуру с изоляцией пространства имен и контролем авторизации. Дополнительную информацию о управлении схемами можно найти в разделе Раздел 5.9.
В то время как в рамках одного кластера можно создать несколько баз данных, рекомендуется тщательно продумать, оправдывают ли преимущества сопутствующие риски и ограничения. В частности, следует учитывать влияние настроек общего WAL (см. Глава 29) на возможности резервного копирования и восстановления. Хотя отдельные базы данных в кластере изолированы с точки зрения пользователя, они тесно связаны с точки зрения администратора базы данных.
Базы данных создаются с помощью команды CREATE DATABASE
(см. Раздел 22.2) и удаляются с помощью команды DROP DATABASE
(см. Раздел 22.5).
Чтобы определить набор существующих баз данных, изучите системный каталог pg_database
, например.
SELECT datname FROM pg_database;
Программа psql также полезна для перечисления существующих баз данных с помощью метакоманды \l
и опции командной строки -l
.
Примечание
Согласно стандарту SQL, базы данных называются “каталогами”, но на практике нет разницы.