Прямая работа с БД ORBISmap Server
ORBISmap Server работает на базе СУБД PostgreSQL и, в отличие от многих других систем, поддерживает прямую работу пользователя с БД. Прямая работа с БД - это выполнение команд SQL вручную (с помощью стандартной утилиты psql), с помощью специализированного ПО (Navicat, PgAdmin) или с помощью ПО для работы с геоданными (QGis, ArcGis). Под поддержкой прямой работы понимается способность системы автоматически актуализировать свое состояние после изменений в БД.
Система способна отслеживать и обрабатывать следующие изменения:
- Работа со схемами (в терминах системы - картами)
- Создание (CREATE SCHEMA)
- Изменение (ALTER SCHEMA)
- Удаление (DROP SCHEMA)
- Работа с таблицами (в терминах системы - векторными слоями)
- Создание (CREATE TABLE)
- Изменение (ALTER TABLE)
- Удаление (DROP TABLE)
- Работа с представлениями (в терминах системы - виртуальными слоями)
- Создание (CREATE VIEW)
- Изменение (ALTER VIEW)
- Удаление (DROP VIEW)
- Работа со строками таблиц и представлений (в терминах системы - с объектами слоев)
- Создание (INSERT)
- Изменение (UPDATE)
- Удаление (DELETE)
Например, при создании схемы и таблицы будет создана карта и слой в ней с соответствующими кодами. Следующий код показывает, как создать копию слоя в своей карте в консоли psql:
CREATE SCHEMA my_map;
CREATE TABLE my_map.parks_copy AS SELECT * FROM other_map.parks;
В результате будет создана карта с кодом my_map
, а в ней слой с кодом parks_copy
. Пользователь, от которого выполнялись эти команды, получит полные права доступа для новых сущностей, а права доступа для остальных пользователей будут унаследованы согласно общим правилам (см. раздел Права доступа).
Отслеживание изменений ведется автоматически на уровне транзакции. Это означает, что при откате транзакции изменения в системе также не будут применены. Однако между фактом проводки (коммита) транзакции и реальной актуализацией метаданных допустима задержка в пределах от 1 до 30 секунд.
Также при прямой работе с БД учитывается изменение данных и ведется инвалидация кеша. Допустим, настроена публичная карта, и мы видим некоторый ее участок
Можно подключиться к БД с помощью QGis
выбрать слой
найти
и удалить лишний объект
После этого, если обновить страницу с этим участком карты, можно наблюдать изменения
Структурно, база данных состоит из нескольких схем:
__orbismap_server
- служебная схема с метаданными, закрыта для всех пользователейtiger
,tiger_data
,topology
- служебные схемы расширений, необходимых для работы PostGIS.catalog
- базовая служебная схема ORBISmap Server и расширения PostGIS.- Другие схемы - карты в системе.
Поскольку не все изменения поддаются отслеживанию, эта система имеет ряд существенных ограничений:
- Не отслеживаются действия с пользователями и ролями
- Не отслеживаются действия с правами доступа и наследованием ролей
- Не отслеживаются действия с пользовательскими индексами таблиц
- Изменение любой из служебных схем (см. выше) могут нарушить работу системы
- Изменение параметров локализации, хранения таблиц, типов данных - могут нарушить работу системы