Некоторое количество объектов, таких как имена ролей, баз данных и табличных пространств, определяются на уровне кластера и хранятся в
pg_global табличном пространстве. Внутри кластера находятся несколько баз данных, которые изолированы друг от друга, но могут обращаться к объектам уровня кластера. Внутри каждой базы данных содержится несколько схем,
включающих такие объекты, как таблицы и функции. Таким образом, полная иерархия
такова: кластер, база данных, схема, таблица (или объект другого типа,
например, функция).
При подключении к серверу базы данных клиент должен указать имя базы данных в запросе на соединение. Доступ более чем к одной базе данных в рамках одного соединения невозможен. Однако клиенты могут открывать несколько соединений с одной и той же базой данных или с разными базами данных. Безопасность на уровне базы данных включает два компонента: управление доступом (см. Раздел 3.5.1), реализуемое на уровне соединения, и контроль авторизации (см. Раздел 2.2.8), осуществляемый через систему привилегий (grant). Обертки сторонних данных (см. postgres_fdw) позволяют объектам внутри одной базы данных выступать в качестве прокси для объектов в других базах данных или кластерах. Устаревший модуль dblink (см. dblink) предоставляет аналогичную возможность. По умолчанию все пользователи могут подключаться ко всем базам данных, используя любые методы подключения.
Если один Digital Q.DataBase кластер серверов планируется использовать для размещения несвязанных проектов или пользователей, которые в значительной степени не должны знать друг о друге, рекомендуется разместить их в отдельных базах данных и соответствующим образом настроить права доступа и механизмы управления доступом. Если же проекты или пользователи взаимосвязаны и должны иметь возможность использовать ресурсы друг друга, их следует разместить в одной базе данных, но, скорее всего, в разных схемах; это обеспечивает модульную структуру с изоляцией пространств имен и контролем авторизации. Дополнительная информация об управлении схемами приведена в Раздел 2.2.10.
Хотя в рамках одного кластера может быть создано несколько баз данных, рекомендуется тщательно оценить, перевешивают ли преимущества возможные риски и ограничения. В частности, следует учитывать влияние общего журнала предзаписи (WAL) (см. Глава 3.13) на параметры резервного копирования и восстановления. Несмотря на то, что отдельные базы данных в кластере изолированы с точки зрения пользователя, они тесно взаимосвязаны с точки зрения администратора баз данных.
Базы данных создаются при помощи команды CREATE DATABASE команда (см. Раздел 3.7.2) и удаляются командой
DROP DATABASE команда (см. Раздел 3.7.5).
Для получения списка существующих баз данных обратитесь к
pg_database системному каталогу, например:
SELECT datname FROM pg_database;
Использование psql программы, \l мета-команды
и -l параметра командной строки также эффективно для вывода списка существующих баз данных.
Согласно SQL стандарту, базы данных называются «каталогами», однако на практике разницы между ними нет.