postgis. Поддержка геоданных#

Версия: 3.4.4.

В исходном дистрибутиве установлено по умолчанию: нет.

Связанные компоненты: См. раздел «Системные требования» этой статьи.

Схема размещения:

  • ext;

  • topology;

  • tiger;

  • tiger_data.

Примечание:

Расширение PostGIS распространяется по лицензии GNU GPL и не является составной частью продукта Pangolin.

Для версий 4.6.1, 5.2.1 (и более новых) были собраны и включены в дистрибутив расширения и поддерживающие библиотеки.

Расширение PostGIS представляет собой реализацию стандарта OpenGIS на основе стандарта SQL/MM.

Для реализации требований вводятся новые типы данных:

  • geometry;

  • geography;

  • bod2d;

  • box2df;

  • box3d;

  • raster;

  • spheroid.

Добавляются также функции для работы с этими типами.

Функциональное обеспечение позволяет работать с геометрическими, географическими и растерными объектами.

Данные могут быть представлены в двумерной, трехмерной или четырехмерной системе координат.

Расширение PgRouting предоставляет дополнительную функциональность к PostGIS, позволяющую определять расстояние между географическими объектами.

Тип данных geography предусматривает указание SRID (Spatial Reference Identifier) системы SRS (Spatial Reference System).

Системные требования#

В поставку продукта как библиотеки третьей стороны (3rd party) добавляются расширения:

  • postgis;

  • postgis_topology;

  • postgis_sfcgal;

  • postgis_raster;

  • postgis_tiger_geocoder;

  • address_standardizer;

  • address_standardizer_data_us;

  • pgrouting.

Системные пакеты, необходимые для работы расширений:

  1. Для ALT 8 SP (8.4):

    • libboost_thread1.67.0;

    • libboost_atomic1.67.0;

    • libboost_chrono1.67.0;

    • libboost_date_time1.67.0;

    • libboost_serialization1.67.0;

    • libtiff5;

    • json-c;

    • libpcre16;

    • libmpfr6.

    Команда установки:

    sudo apt-get install libboost_thread1.67.0 libboost_atomic1.67.0 libboost_chrono1.67.0 libboost_date_time1.67.0 libboost_serialization1.67.0 libtiff5 json-c libpcre16 libmpfr6
    
  2. Для RedHat 7:

    • boost-thread;

    • boost-atomic;

    • boost-chrono;

    • boost-date-time;

    • boost-serialization;

    • libtiff;

    • json-c;

    • pcre.

    Команда установки:

    sudo yum install boost-thread boost-atomic boost-chrono boost-date-time boost-serialization libtiff json-c pcre
    

Для работы расширений требуются библиотеки:

  • GDAL;

  • PROJ;

  • SFCGAL;

  • cgal;

  • geos.

Доработка#

В Postgresql SE включены инструменты для работы с геоданными (Spatial).

Вводимая функциональность исключает инструменты командной строки и GUI для загрузки и выгрузки данных, в отличие от свободно распространяемой версии. Исключение связано с фактом необходимости указывать пароль пользователя в открытом виде. Загрузка и выгрузка данных в систему производится стандартным образом при работе с доверенным ресурсом.

Убраны инструменты Imp/Exp данных.

Ограничения#

Текущие ограничения расширения:

  • в поставку не добавляются инструменты для загрузки или конвертации данных, а также пользовательские GIS-системы. Это связано с тем, что они используют пароли БД в открытом виде;

  • в поставку не добавляется jdbc драйвер PostGIS по причине наличия у драйвера лицензии GPL;

  • расширения входят в состав дополнительной части продукта (3rd party) и могут быть лицензированы «вирусными» лицензиями GPL, AGPL;

  • из поставки исключены функции ST_AsMVTGeom, ST_AsMVT, ST_AsGeobuf, поскольку они используют protobuf, отсутствующий в RHEL7. Аналогичное исключение применяется в свободно распространяемом Postgresql для RHEL7.

Установка#

Установка системных зависимостей#

Установите системные пакеты, необходимые для работы расширений:

  1. Для ALT 8 SP (8.4):

    sudo apt-get install libboost_thread1.67.0 libboost_atomic1.67.0 libboost_chrono1.67.0 libboost_date_time1.67.0 libboost_serialization1.67.0 libtiff5 json-c libpcre16 libmpfr6
    
  2. Для RedHat 7:

    sudo yum install boost-thread boost-atomic boost-chrono boost-date-time boost-serialization libtiff json-c pcre
    

Установка поддерживающих библиотек#

Для AstraLinux, ALT 8 SP:

sudo apt-get install /usr/pangolin-6.3/3rdparty/postgis/pangolin-postgis-3.4.2_{OS}.x86_64.rpm -y
sudo apt-get install /usr/pangolin-6.3/3rdparty/pgrouting/pangolin-pgrouting-3.6.1_{OS}.x86_64.rpm -y

Для SberLinux 8.8:

sudo dnf install /usr/pangolin-6.3/3rdparty/postgis/pangolin-postgis-3.4.2-sberlinux8.8.x86_64.rpm -y
sudo dnf install /usr/pangolin-6.3/3rdparty/pgrouting/pangolin-pgrouting-3.6.1-sberlinux8.8.x86_64.rpm -y

Перезагрузка сервера#

Перед использованием расширений необходимо выполнить перезагрузку сервера СУБД Pangolin (restart --force).

Настройка#

Настройка max_connections#

В max_connections хранится максимальное число конкурентных подключений к серверу PostgreSQL. Под каждое фактическое подключение создается отдельный процесс в операционной системе. По умолчанию обычно это 100 подключений, но это число может быть меньше, если ядро накладывает свои ограничения (это определяется в процессе initdb). Этот параметр можно задать только при запуске сервера.

Для standby сервера значение этого параметра должно быть больше или равно значению на primary. В противном случае на standby сервере не будут разрешены запросы.

Свойство

Описание

Тип значения

Числовой

Значение по умолчанию

100

Как меняется

ALTER system SET max_connections=<value>
Правкой файла postgresql.conf.
Правкой файла config.yml в случае управления через Patroni

Где хранится

postgresql.conf

Диапазон значений

1-262143

Рекомендуемое значение

GREATEST (5 x CPU cores, 100)

Рекомендации#

max_connections устанавливается как максимальное количество соединений, которое, как вы ожидаете будет израсходовано при пиковой нагрузке. Обратите внимание, что каждое соединение использует shared_buffer память, а также дополнительную неразделяемую память. Поэтому будьте осторожны, чтобы полностью не исчерпать память системы, исходя из доступных ресурсов на хосте.

Оптимальное максимальное количество max_connections примерно в 5 раз превышает количество процессоров ядра. Эта формула часто дает очень небольшое число, что непрактично в большинстве реальных случаев.

Помимо этого, следует использовать пул соединений, например через Pangolin Manager.

Использование расширения#

Отключение аудита#

На момент создания расширения рекомендуется отключить аудит, если он был включен. Если этого не сделать, процесс включения расширения займет значительное время и потребует большого количества оперативной памяти (не менее 24 ГБ).

Отключить аудит можно выполнив SQL запрос:

ALTER ROLE current_user SET pgaudit.log='none';

После этого необходимо переподключиться к сервису.

Включение расширения#

Подключитесь к базе данных и выполните команды по загрузке всех или только необходимых расширений:

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_raster;
CREATE EXTENSION postgis_sfcgal;
CREATE EXTENSION postgis_tiger_geocoder CASCADE; -- needed extension fuzzystrmatch
CREATE EXTENSION postgis_topology;
CREATE EXTENSION address_standardizer;
CREATE EXTENSION address_standardizer_data_us;
CREATE EXTENSION pgrouting;

Включение аудита#

После создания расширения необходимо включить аудит, если он был включен до установки:

ALTER ROLE current_user RESET pgaudit.log;

После этого необходимо переподключиться к сервису.

Ссылки на документацию разработчика#

Дополнительно поставляемый модуль postgis: https://postgis.net/docs/manual-3.1/.