Логическое устройство PostgreSQL

Начнем мы с контейнера верхнего уровня – виртуальной машины (ВМ). Внутри ВМ могут быть установлены разные версии PostgreSQL и на каждой версии может быть развернут 1 или более кластеров PostgreSQL. Я не ошибся – 1 инстанс СУБД PostgreSQL называется кластером в их терминологии.

Далее внутри инстанса у нас существуют 3 базы данных по умолчанию:

postgres – используется:
● первая база данных для регулярной работы
● создаётся по умолчанию
● хорошая практика – также не использовать
● но и не удалять – иногда нужна для различных утилит

template0 – используется:
● для восстановления из резервной копии
● по умолчанию даже нет прав на connect
● не рекомендовано вносить изменения – лучше всего не создавать в ней никаких объектов

template1 – используется:
● как шаблон для создания новых баз данных
● в нём имеет смысл делать некие действия, которые не хочется делать каждый раз при создании новых баз данных – создать хранимые функции/процедуры, создать справочники, включить расширения и т.п.

Конечно мы можем и сами создавать как шаблоны, так и базы данных.

Далее внутри БД у нас есть еще логическое разделение на схемы данных – schema. По умолчанию используется схема public – не самый рекомендованный вариант. Лучше создавать свою именованную схему. По умолчанию объекты (таблицы и др) в схеме видят другие объекты только этой же схемы, что очень удобно для логического разбиения на области видимости.

Внутри схемы уже непосредственно создаются отношения (relation). Одной схеме может принадлежать от 0 и более отношений. Соответственно, каждое отношение принадлежит своей схеме и своей базе данных.

Давайте посмотрим, какие виды отношений (relkind) у нас есть:
● r = ordinary table – обычная таблица – используется для хранения данных
● i = index – индекс – ускоряем поиск данных
● S = sequence – последовательность – генерируем автоматически нумерацию строк
● v = view – представление – грубо говоря сохраненный заранее вид запроса к таблицам
● m = materialized view – материализованное представление – кроме сохраненного текста запроса, также хранит и сами данные
● c = composite type – композитный тип – раширяем стандартный набор типов данных
● t = TOAST table – для хранения слишком больших строк
● f = foreign table – внешние таблицы – подключаем другой инстанс PostgreSQL или другой СУБД

Если представить визуально схему логического устройства PostgreSQL, то она будет выглядеть следующим образом:

Давайте посмотрим на практике.

Подключимся к созданному на предыдущем этапе кластеру и посмотрим список БД используя команду psql:

\l

Создадим свою БД и подключимся к ней:

CREATE DATABASE aeugene;

\c aeugene;

Теперь создадим таблицу и добавим пару записей:

CREATE TABLE test (i serial, t text);

INSERT INTO test(t) VALUES (‘Аристов’),(‘Евгений’);

SELECT * FROM test;

Видим, что автоматический счетчик строк (имя поля i, тип – счетчик с автоматическим увеличением) работает на отлично и обе строки у нас успешно сохранились внутри таблицы test в схеме public (а именно в ней мы по умолчанию и работаем) в БД aeugene.

Какие еще есть возможности по управлению схемой данных для хранения и управления БД мы рассмотрим в следующей статье.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

11 − 8 =