22.1. Обзор#

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