Обзор
Эта страница переведена при помощи нейросети GigaChat.
Небольшое число объектов, таких как имена ролей, баз данных и табличных пространств, определены на уровне кластера и сохраняются в табличном пространстве pg_global
. В пределах кластера располагаются несколько баз данных, каждая из которых изолирована от остальных, но имеет доступ к объектам уровня кластера. Каждая база данных содержит множество схем, включающих такие объекты, как таблицы и функции. Таким образом, полная иерархия выглядит так: кластер → база данных → схема → таблица (или другой объект, например, функция).
При подключении к серверу клиент должен указать имя базы данных в запросе. Одновременно можно работать только с одной базой данных. Однако пользователи могут устанавливать несколько соединений с одной или разными базами данных. Управление безопасностью на уровне базы данных включает два аспекта: контроль доступа (см. раздел Файл pg_hba.conf), регулирующий подключения, и авторизацию (см. раздел Определение данных), реализуемую через систему выдачи привилегий. Внешние обертки данных (см. postgres_fdw) позволяют объектам одной базы данных выступать в роли посредников для объектов другой базы данных или кластера. Аналогичная функциональность доступна в старом модуле dblink (см. dblink). По умолчанию все пользователи могут подключаться к любой базе данных любыми доступными методами.
Если требуется изолировать разные проекты или пользователей, лучше размещать их в отдельных базах данных и регулировать доступ соответствующими настройками авторизации и контроля доступа. Если же проекты взаимосвязаны и требуют совместного использования ресурсов, их стоит разместить в одной базе данных, но разделить по схемам, что обеспечит удобную организацию пространства имен и контроля доступа. Больше сведений о схемах можно найти в разделе Определение данных.
Несмотря на возможность создания множества баз данных в одном кластере, стоит внимательно взвесить преимущества и недостатки подобного решения. Особое внимание уделите аспектам журнала упреждающей записи (WAL), резервного копирования и восстановления (см. раздел «Надежность и журнал предварительной записи»). Отдельные базы данных изолированы для пользователей, но внутренне тесно связаны с позиции администратора.
Создание баз данных осуществляется командой CREATE DATABASE
(см. раздел Создание базы данных), уничтожение — командой DROP DATABASE
(см. раздел Удаление баз данных). Список существующих баз данных можно посмотреть в системном каталоге pg_database
, например:
SELECT datname FROM pg_database;
Утилита psql предоставляет специальную команду и опцию командной строки, удобные для просмотра списка имеющихся баз данных.
В стандарте SQL термин «каталоги» используется для обозначения баз данных, но на практике разницы между терминами нет.