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