Процедура подготовки сервера PostgreSQL производится администратором СУБД.
Важно. Параметры USER_NAME и DATABASE_NAME должны быть прописаны в верхнем регистре.
Выполнение скриптов происходит любым из доступных способов, например, с помощью приложения «pgAdmin», доступного на официальном сайте pgAdmin.
Пользователь создается при помощи скрипта, который выполняется в клиентской части СУБД:
CREATE ROLE "USER_NAME" LOGIN ENCRYPTED PASSWORD 'USER_PASSWORD' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
ALTER ROLE "USER_NAME" SET lo_compat_privileges='on';
где:
USER_NAME. Имя создаваемого пользователя (схемы);
USER_PASSWORD. Пароль для создаваемого пользователя (схемы).
Создание базы данных можно произвести с помощью следующего скрипта, выполняемого в клиентской части СУБД:
CREATE DATABASE "DATABASE_NAME" WITH OWNER = "USER_NAME" ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = default LC_CTYPE = default CONNECTION LIMIT = -1;
GRANT ALL ON DATABASE "DATABASE_NAME" TO "USER_NAME";
где:
USER_NAME. Имя пользователя, созданного ранее;
DATABASE_NAME. Имя базы данных.
Создание схемы можно произвести с помощью следующего скрипта, выполняемого в клиентской части СУБД:
CREATE SCHEMA SCHEMA_NAME;
где:
SCHEMA_NAME. Имя схемы.
Примечание. Более подробную информацию по работе со схемами смотрите в документации PostgreSQL.
Для хранения многобайтовой информации в PostgreSQL используется тип данных Lo. По умолчанию, после создания базы данных, поддержка работы с данным типом отключена. Для включения поддержки выполните следующий скрипт:
CREATE FUNCTION loin (cstring) RETURNS lo AS 'oidin' LANGUAGE internal IMMUTABLE STRICT;
CREATE FUNCTION loout (lo) RETURNS cstring AS 'oidout' LANGUAGE internal IMMUTABLE STRICT;
CREATE FUNCTION lorecv (internal) RETURNS lo AS 'oidrecv' LANGUAGE internal IMMUTABLE STRICT;
CREATE FUNCTION losend (lo) RETURNS bytea AS 'oidsend' LANGUAGE internal IMMUTABLE STRICT;
CREATE TYPE lo ( INPUT = loin, OUTPUT = loout, RECEIVE = lorecv, SEND = losend, INTERNALLENGTH = 4, PASSEDBYVALUE );
CREATE CAST (lo AS oid) WITHOUT FUNCTION AS IMPLICIT;
CREATE CAST (oid AS lo) WITHOUT FUNCTION AS IMPLICIT;
CREATE OR REPLACE FUNCTION lo_manage() RETURNS pg_catalog.trigger AS '$libdir/lo' LANGUAGE C;
После того как все шаги выполнены успешно можно перейти к созданию репозитория.
В Prognoz Platform версии 8.1 был исправлен скрипт, связанный с регистрацией типа lo. Если репозиторий на базе СУБД PostgreSQL (версии 9.3 или выше) был создан в более ранних версиях Prognoz Platform, то его необходимо обновить, выполнив следующий скрипт:
CREATE OR REPLACE FUNCTION losend (lo) RETURNS bytea AS 'oidsend' LANGUAGE internal IMMUTABLE STRICT;
Если при работе используется схема по умолчанию Public, то у всех пользователей репозитория будет возможность создания таблиц. Это может привести к проблемам обновления пользователей и учёту прав доступа у пользователей, которые являются администраторами репозитория. Для избежания возможных ошибок рекомендуется создавать все объекты только под пользователями, входящими в группу Администраторы.
Конфигурация по умолчанию для серверов PostgreSQL включает в себя функцию автоочистки - освобождение пространства, занимаемого удалёнными из таблиц данными, с помощью SQL-команды VACUUM. Также производится обновление статистики, которая используется планировщиком для выбора способа выполнения запросов. Если предполагается интенсивная работа по изменению данных в таблицах, то рекомендуется настроить конфигурацию таким образом, чтобы автоочистка производилась в периоды малых нагрузок на сервер (ночью, в выходные). Настройку можно производить в соответствии с документацией, доступной на сайте разработчика по адресу https://postgrespro.ru/docs/postgrespro/9.5/routine-vacuuming#autovacuum.
См. также: