Подготовка базы данных PostgreSQL#

Для работы Indicator требуется развернуть БД. Поддерживается СУБД PostgreSQL 12.x и выше. Рекомендуется использовать продукт Platform V Pangolin SE.

Для именования объектов БД (учетных записей, ролей, схем, табличных пространств и т.д.) следует руководствоваться требованиями используемой СУБД для имен без использования кавычек. Обычно в допустимый набор символов входят латинские буквы (a-z, A-Z), цифры (0-9) и символ подчеркивания ( _ ), имена должны начинаться с буквы или символа подчеркивания.

Создание учетных записей#

Для работы Indicator и для работы скриптов развертывания в БД необходимо создать технологические учетные записи (ТУЗ):

Имя ТУЗ PG

Назначение

Условия использования

as_admin

Владелец схемы БД.

ТУЗ обязательна. При использовании Platform V Pangolin в роль as_admin включается заранее созданная доменная ТУЗ владельца схемы БД.

as_TUZ

Для работы скриптов развертывания Indicator — создание объектов схемы БД средствами Liquibase

ТУЗ обязательна. При использовании Platform V Pangolin в роль as_TUZ включается заранее созданная доменная ТУЗ владельца схемы БД. Доменная ТУЗ с ролью as_TUZ, должна являться владельцем объектов БД, для этого перед выполнением DDL-команд должна выполняться команда set role as_admin

Создание схемы#

Необходимо создать:

  • Кластер PostgreSQL.

  • Роли as_admin, as_TUZ (valid until указать в соответствии с требованиями). Роль as_admin будет являться владельцем схемы, как и в случае использования БД Platform V Pangolin SE.

-- Скрипт выполняет DB admin c привилегией на создание ролей и пользователей
CREATE USER as_admin WITH PASSWORD 'pass123' LOGIN NOCREATEROLE NOCREATEDB NOSUPERUSER NOINHERIT NOREPLICATION NOBYPASSRLS VALID UNTIL '2099.12.31';
CREATE USER "as_TUZ" WITH PASSWORD 'pass123' LOGIN NOCREATEROLE NOCREATEDB NOSUPERUSER NOINHERIT NOREPLICATION NOBYPASSRLS VALID UNTIL '2099.12.31'

Пароль 'pass123' в скрипте на создание ролей и пользователей приведен для примера.

  • Создать табличные пространства необходимого размера, БД и схему. Необходимо выдать права владельца.

-- Названия объектов БД и пути даны в качестве примера (обычно они подходят для типовой установки)
-- Их необходимо проверить и заменить на актуальные
-- Создание табличного пространства. Выполняет DB admin.
CREATE TABLESPACE ind_t OWNER as_admin LOCATION '/pgdata/11/ts/ind_t';
GRANT CREATE ON TABLESPACE ind_t TO as_admin;
  • Создать БД.

-- Создаем БД. Выполняет DB admin
CREATE DATABASE ind_db OWNER as_admin ENCODING 'UTF-8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TABLESPACE ind_t;
GRANT ALL PRIVILEGES ON DATABASE ind_db TO as_admin;
  • Создать схему.

-- Создаем схему. Выполняет DB admin или as_admin
CREATE SCHEMA ind AUTHORIZATION as_admin;
REVOKE ALL ON SCHEMA public FROM public;
GRANT ALL PRIVILEGES ON SCHEMA ind TO as_admin;
ALTER DEFAULT PRIVILEGES IN SCHEMA ind GRANT ALL PRIVILEGES ON TABLES TO as_admin;
GRANT USAGE ON SCHEMA ind TO "as_TUZ";
GRANT SELECT, UPDATE, INSERT, DELETE ON ALL TABLES IN SCHEMA ind TO "as_TUZ";
ALTER DEFAULT PRIVILEGES IN SCHEMA ind GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "as_TUZ";
ALTER ROLE as_admin SET search_path to 'ind';
ALTER ROLE "as_TUZ" SET search_path to 'ind';
  • Назначаем as_admin владельцем схемы (опционально, если схему создавала УЗ с ролью as_admin)

ALTER SCHEMA ind OWNER TO as_admin;