Возможности системы
Содержание раздела
- Единый синтаксис и единый интерфейс
- Темпоральность
- Изоляция данных
- Быстрые запись и чтение данных
- Различные варианты структуры хранилища
- Кластеризация серверов системы
- Автовыбор оптимальной СУБД для исполнения запроса
- Устойчивость к дублированию данных
- Возможность подключения таблиц СУБД
- Хранение холодных данных
- Аутентификация
- Роли и полномочия
- Партиционирование данных
Единый синтаксис и единый интерфейс
Работа с системой ведется через JDBC или REST API. В продуктивных инсталляциях внешняя система обращается к системе Prostore, отправляя запросы с помощью программных вызовов. Также все описанные в документе запросы можно отправлять вручную с помощью любого SQL- или HTTP-клиента.
Система предоставляет собственный язык запросов SQL+ на основе SQL. Это позволяет работать со всеми поддерживаемыми СУБД, используя единый синтаксис.
Связанные разделы:
Темпоральность
Традиционные СУБД хранят статические снимки объектов модели. Каждое изменение данных приводит к последовательному переходу от одного состояния базы данных к другому, и предыдущее состояние становится недоступным.
В отличие от традиционных СУБД, в системе используется темпоральная модель данных: для каждого объекта хранятся все его состояния от момента создания до момента уничтожения объекта. Это позволяет работать как с текущими, так и прошлыми состояниями данных.
Примеры бизнес-применений темпоральной модели данных:
- вычисление тенденций во времени,
- аудит изменений данных,
- обнаружение аномалий в данных,
- восстановление состояния данных на любой момент в прошлом,
- восстановление отдельных записей после случайных изменений,
- поддержка медленно меняющихся измерений (Slowly Changing Dimensions, SCD).
Связанные разделы:
Изоляция данных
Система позволяет управлять видимостью данных, изолируя их при чтении на основании номера версии или метки времени, соответствующей этим данным. Уровнем изоляции данных можно управлять с помощью ключевого слова FOR SYSTEM_TIME.
Быстрые запись и чтение данных
Система позволяет оптимизировать работу в зависимости от предполагаемого объема данных. Для записи и чтения больших объемов данных предназначены функции загрузки и выгрузки данных, для записи и чтения небольших объемов — функции вставки и чтения.
Связанные разделы:
Различные варианты структуры хранилища
Система позволяет работать с разнородным хранилищем данных, состоящим из нескольких СУБД одного или разных типов. Поддерживаются следующие типы СУБД:
В зависимости от задач и нагрузки можно сочетать СУБД в разных вариантах:
- равноправная схема, где все СУБД работают параллельно;
- иерархическая схема, где есть главная СУБД и подчиненные СУБД.
Связанные разделы:
Кластеризация серверов системы
Система поддерживает кластеризацию — использование нескольких серверов системы (нод) в одном окружении. Все ноды кластера равноправны и могут выполнять любые виды запросов. Сбой ноды не прерывает работу остальных нод.
Подробнее о компонентах, гарантиях и ограничениях кластера см. в разделе Кластеризация Prostore.
Автовыбор оптимальной СУБД для исполнения запроса
В системе действует автовыбор оптимальной СУБД для запросов на чтение и выгрузку данных. Если в запросе явно не указана СУБД-источник данных, он перенаправляется в наиболее оптимальную СУБД для такого рода запросов. Функция автовыбора СУБД учитывает сильные стороны каждой из СУБД хранилища. Подробнее см. в разделе Маршрутизация запросов к данным.
Устойчивость к дублированию данных
Система устойчива к дублированию данных: при загрузке или вставке дубликатов записей система сохраняет только один экземпляр каждой записи.
Возможность подключения таблиц СУБД
Система позволяет включать в схему данных обычные таблицы СУБД хранилища (standalone-таблицы). Такие таблицы включаются вне контекста темпоральности и изоляции и могут применяться в задачах, где темпоральность избыточна. Работа со standalone-таблицами ведется с использованием синтаксиса SQL+.
Хранение холодных данных
Система может регулярно в автоматическом режиме переносить холодные данные на отдельные виртуальные или физические сервера. Это позволяет оптимизировать хранение неактуальных, редко запрашиваемых версий данных, выделив для них менее мощные и дорогие ресурсы по сравнению с часто запрашиваемыми данными. Подробнее см. в разделе Остужение данных.
Аутентификация
Система поддерживает аутентификацию запросов на основе авторизационных токенов (JSON Web Token, также JWT). Если аутентификация включена, доступ к системе получают только те пользователи и внешние системы, которые предоставили корректные и достоверные авторизационные токены.
Для генерации авторизационных токенов можно использовать любой авторизационный сервис, поддерживающий стандарт JWT, например Keycloak.
Роли и полномочия
Права доступа к функциям системы определяются комбинацией ролей. При получении запроса система определяет роли, назначенные отправителю запроса, и разрешает ему только те действия, которые разрешены его ролями.
Партиционирование данных
Система поддерживает горизонтальное и вертикальное партиционирование данных для СУБД ADP, которое позволяет ускорить запросы к данным за счет обращения к подмножеству данных (партициям), а не всему набору данных.