Базы данных
Обзор
База данных (БД) — это набор данных, физически хранимых вместе. Каждый ADB-кластер может содержать несколько баз данных. Однако клиентские приложения могут обращаться не более чем к одной базе данных ADB в рамках одного соединения — кросс-запросы между различными базами данных невозможны по причине жесткого разделения БД.
В каждом ADB-кластере существует несколько шаблонных (template) и используемых по умолчанию (default) БД. Их описание приведено в таблице ниже.
Название | Описание |
---|---|
adb |
Можно использовать в качестве БД по умолчанию для клиентских подключений. Все необходимые объекты можно добавлять в эту БД. Создается автоматически через ADCM — после применения действия Create database к развернутому ADB-кластеру. Тем не менее, при необходимости можно создать и дополнительные пользовательские БД. Обратите внимание, что имя БД |
diskquota |
Используется ADB-расширением Diskquota. Это расширение предназначено для ограничения дискового пространства, выделяемого под схемы и роли |
postgres |
Как правило, используется в качестве БД по умолчанию для административных задач. Например, в процессах запуска, в процессе обнаружения взаимных блокировок Global Deadlock Detector и так далее |
template0 |
Этот шаблон используется для внутренних нужд СУБД. Возможно использование |
template1 |
Используется в качестве шаблона для новых БД, создаваемых с помощью команды |
ВНИМАНИЕ
Не рекомендуется удалять либо изменять БД, приведенные выше.
|
Просмотр существующих баз данных
Для получения списка БД в текущем ADB-кластере можно использовать несколько способов. Два из них описаны ниже.
Способ 1 — psql
При работе с терминальным клиентом psql для вывода списка БД можно воспользоваться мета-командой \l
. Для этого необходимо:
-
Подключиться к Master-серверу ADB (например, через SSH) под пользователем
gpadmin
, который создается по умолчанию:$ sudo su - gpadmin
-
Вывести список БД:
$ psql -l
Результат команды:
List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+---------+----------+------------+------------+--------------------- adb | gpadmin | UTF8 | en_US.utf8 | en_US.utf8 | =Tc/gpadmin + | | | | | gpadmin=CTc/gpadmin diskquota | gpadmin | UTF8 | en_US.utf8 | en_US.utf8 | postgres | gpadmin | UTF8 | en_US.utf8 | en_US.utf8 | template0 | gpadmin | UTF8 | en_US.utf8 | en_US.utf8 | =c/gpadmin + | | | | | gpadmin=CTc/gpadmin template1 | gpadmin | UTF8 | en_US.utf8 | en_US.utf8 | =c/gpadmin + | | | | | gpadmin=CTc/gpadmin (5 rows)
Способ 2 — SQL-запрос
После подключения к выбранной БД через psql-клиент (или любую иную клиентскую программу) можно выполнить специальный SQL-запрос, который извлекает список БД из таблицы системного каталога pg_catalog.pg_database
. Для этого необходимо:
-
Подключиться к Master-серверу ADB (например, через SSH) под пользователем
gpadmin
, который создается по умолчанию:$ sudo su - gpadmin
-
Подключиться к БД через psql (или иную клиентскую программу):
$ psql adb
Результат команды:
psql (9.4.24) Type "help" for help.
-
Выполнить следующий SQL-запрос для вывода всех БД в ADB-кластере:
SELECT * from pg_catalog.pg_database ORDER BY datname;
Результат команды:
datname | datdba | encoding | datcollate | datctype | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | datminmxid | dattablespace | datacl -----------+--------+----------+------------+------------+---------------+--------------+--------------+---------------+--------------+------------+---------------+----------------------------------- adb | 10 | 6 | en_US.utf8 | en_US.utf8 | f | t | -1 | 12809 | 702 | 1 | 1663 | {=Tc/gpadmin,gpadmin=CTc/gpadmin} diskquota | 10 | 6 | en_US.utf8 | en_US.utf8 | f | t | -1 | 12809 | 948 | 1 | 1663 | postgres | 10 | 6 | en_US.utf8 | en_US.utf8 | t | t | -1 | 12809 | 1881 | 1 | 1663 | template0 | 10 | 6 | en_US.utf8 | en_US.utf8 | t | f | -1 | 12809 | 702 | 1 | 1663 | {=c/gpadmin,gpadmin=CTc/gpadmin} template1 | 10 | 6 | en_US.utf8 | en_US.utf8 | t | t | -1 | 12809 | 1799 | 1 | 1663 | {=c/gpadmin,gpadmin=CTc/gpadmin} (5 rows)
Создание базы данных
Чтобы создать новую базу данных, необходимо использовать команду CREATE DATABASE
и затем указать имя базы данных.
В следующем примере создается новая база данных books_store
:
CREATE DATABASE books_store;
Результат команды:
CREATE DATABASE
Чтобы подключиться к новой базе данных, можно использовать psql-команду \c
:
\c books_store
Результат команды:
You are now connected to database "books_store" as user "gpadmin". books_store=#
ПРИМЕЧАНИЕ
Чтобы создать базу данных, необходимо иметь соответствующие права для этой операции либо быть суперпользователем. Если у вас нет таких привилегий, пожалуйста, свяжитесь с вашим администратором БД. |