Подготовка базы данных 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-команд должна выполняться команда |
Создание схемы#
Необходимо создать:
Кластер 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;