История изменений
Содержание раздела
- Текущая версия — 6.12.1 (17.10.2024)
- Версия 6.12 (03.10.2024)
- Версия 6.11 (20.08.2024)
- Версия 6.10 (25.06.2024)
- Версия 6.9 (02.05.2024)
- Версия 6.8.1 (21.02.2024)
- Версия 6.8 (13.02.2024)
- Версия 6.7 (22.11.2023)
- Версия 6.6 (04.10.2023)
- Версия 6.5 (11.08.2023)
- Версия 6.4 (31.05.2023)
- Версия 6.3 (04.04.2023)
- Версия 6.2.1 (03.03.2023)
- Версия 6.2 (14.02.2023)
- Версия 6.1.1 (13.01.2023)
- Версия 6.1 (21.12.2022)
- Версия 6.0 (31.10.2022)
- Версия 5.8 (25.08.2022)
- Версия 5.7 (23.06.2022)
- Версия 5.6.1 (07.06.2022)
- Версия 5.6 (19.05.2022)
- Версия 5.5 (06.04.2022)
- Версия 5.4 (21.02.2022)
- Версия 5.3 (14.01.2022)
- Версия 5.2 (26.10.2021)
- Версия 5.1 (27.08.2021)
- Версия 5.0 (12.08.2021)
- Версия 4.1 (26.07.2021)
- Версия 4.0 (12.07.2021)
- Версия 3.7.3 (30.06.2021)
Текущая версия — 6.12.1 (17.10.2024)
Изменения
- Доработана команда
ERASE_WRITE_OPERATION
с флагомforce
, имеющим значениеtrue
: теперь для отмены операции не требуется работоспособность коннекторов.
Исправления
- Механизм работы
RESUME_WRITE_OPERATION
расширен остановкой операции в коннекторах. - Исправлена недоступность списка логических БД и дочерних сущностей, отображаемых в дереве сущностей SQL-клиентов.
- Исправлена невозможность исполнения запросов с использованием JDBC-драйвера версии ниже 6.12.
- Исправлено зависание параметризованных запросов при вставке объема данных, кратного размеру буфера на вставку.
- Исправлен возврат неактуальных значений
ROWS_COUNT
иROWS_COUNT_DELTA
статистики, который мог происходить после смены лидера кластера.
По-прежнему рекомендуется использовать Prostore и JDBC-драйвер с одинаковыми номерами версий, так как совместимость разных версий не гарантируется.
Обновление документации
Исправлено описание уведомлений о событиях, отправляемых по НТТР и сохраняемых в сигнальном топике Kafka:
- имя поля
dateTime
исправлено наdatetime
; - тип поля
ts
исправлен соstring
наinteger
; - точность значений
deltaDate
иchangeDateTime
унифицирована до 6 опциональных знаков после точки: (может варьироваться от секунд до микросекунд); - спецификация StatusEventAPI скорректирована и теперь имеет версию 1.0.2.
Версия 6.12 (03.10.2024)
Новая функциональность
Потоковая загрузка данных
Добавлена возможность загрузки потока данных напрямую в целевую таблицу, без использования брокера Kafka. Потоковая загрузка данных доступна при программном подключении по HTTP/2 или HTTP/1.1 с использованием метода upload. Возможные форматы загрузки данных: CSV и Avro.
На стороне внешней системы-источника данных должен быть реализован HTTP-клиент, который будет определять формат загрузки данных, порядок подготовки и отправки данных, а также порядок обработки ответов от Prostore.
Примеры реализации HTTP-клиента для потоковой загрузки данных см. в разделе Работа с данными > Потоковая загрузка данных.
Отправка сообщений о событиях по HTTP
Добавлена возможность отправки сообщений о системных событиях по HTTP.
Сообщения отправляются внешним сервисам-подписчикам, заданным в конфигурации ноды, с использованием указанного в конфигурации HTTP-метода. Для каждого подписчика может быть задано несколько узлов на случай недоступности некоторых из них.
На стороне подписчиков должен быть реализован HTTP-метод обработки сообщений о событиях в формате, в котором их формирует система Prostore. Подписчик должен выделить URL-адрес, обращаясь по которому система Prostore будет отправлять сообщения о событиях, а также определить порядок обработки сообщений от Prostore и формирования ответа.
Подробнее см. в разделе Другие функции системы > Уведомления о событиях > Отправка сообщений о событиях по HTTP.
HTTP-метод для DDL-запросов
В HTTP API добавлен метод ddl для исполнения DDL-запросов. Он позволяет настроить на стороне внешней системы доступ к DDL-запросам на уровне метода, без привязки к ролевой модели Prostore.
Альтернативно для исполнения DDL-запросов можно использовать более универсальный метод query, поддерживающий все виды запросов SQL+.
Числовые последовательности
Добавлена поддержка числовых последовательностей для СУБД ADB и ADP. Порядок применения последовательностей определяется внешней системой и зависит от предъявляемых к ней бизнес-требований.
Для управления числовыми последовательностями доступны команды:
- CREATE SEQUENCE — создает последовательность в датасорсе;
- DROP SEQUENCE — удаляет последовательность из датасорса;
- GET_SEQUENCES — возвращает список последовательностей по датасорсу.
Управлять значениями последовательностей можно с помощью функций NEXTVAL, SETVAL и CURRVAL в SELECT-запросах.
Функции по управлению текстовым поиском
В SELECT-запросы добавлена поддержка функций по управлению текстовым поиском:
Функции для текстового поиска доступны в запросах к Prostore, но сам поиск выполняется в СУБД. Подробнее о текстовом поиске см. в документации PostgreSQL и Greenplum.
Для ускорения текстового поиска в СУБД ADP рекомендуется создать индекс типа GIN
или GIST
для всех столбцов таблиц, которые будут участвовать в текстовом поиске (см. пример в разделе CREATE INDEX).
Системные столбцы в SELECT-запросах
В SELECT-запросах и SELECT-подзапросах появилась возможность указывать системные столбцы sys_from
, sys_to
и sys_op
. Столбцы можно указать в списке выбираемых столбцов, в условии WHERE
и (или) в условии JOIN
-соединения сущностей.
Ответ на SELECT-запрос содержит системные столбцы, только если они были явно указаны в списке выбираемых столбцов запроса. Запрос с символом *
не возвращает системные столбцы.
-- запрос всех логических столбцов, а также системных столбцов sys_from и sys_to
SELECT *, sys_from, sys_to FROM marketing.sales;
-- запрос всех логических столбцов без системных столбцов с условием на значение системного столбца sys_from
SELECT * FROM marketing.sales WHERE sys_from > 9
При построении материализованного представления на основе запроса, содержащего системные столбцы, соответствующие столбцы представления не могут начинаться с префикса sys_
.
Изменения
HTTP API
- Добавлены методы upload и ddl.
- Изменен ответ HTTP-метода
query
:- в ответе Avro-формата изменены значения полей схемы Avro:
- значение поля
name
изменено сresultSet
наQueryResultRow
; - значение поля
namespace
изменено сprostore
наquery.result
;
- значение поля
- в ответе JSON-формата поле
queryId
перемещено выше и теперь находится перед блоком данныхresult
.
- в ответе Avro-формата изменены значения полей схемы Avro:
Конфигурация
- Добавлены параметры:
DTM_CORE_PLUGINS_WITHOUT_FROM
,DTM_CORE_HTTP2_WINDOW_SIZE
,ZOOKEEPER_KAFKA_GET_OFFSETS_RETRY_COUNT
,ZOOKEEPER_KAFKA_GET_OFFSETS_RETRY_TIMEOUT_MS
,ADP_IDLE_TIMEOUT_MS
,ADP_MAX_LIFETIME_TIMEOUT_MS
.
- Добавлены секции параметров:
streaming
— задает параметры потоковой загрузки данных;csvParser
— задает параметры интерпретации загружаемых CSV-файлов;poststatusevent
— задает параметры подписчиков, которым отправляются HTTP-уведомления о системных событиях.
Другие изменения
- Leaderless-режим работы кластера переведен в статус не рекомендуемого для использования (deprecated).
- Добавлена поддержка параметров receiveBufferSize (JDBC) и
windowSize
(HTTP/2), которые позволяют регулировать размер буфера данных, получаемых от Prostore, на стороне внешней системы. - Изменена логика обогащения запросов вследствие поддержки системных столбцов в запросах.
- Доработан откат сбойных операций по загрузке данных: теперь операции, которые еще не начали исполняться в коннекторах, откатываются без участия коннекторов.
Дополнительные действия при обновлении
При обновлении с версии ниже 6.7 на версию 6.12 выполните все действия по обновлению, указанные для версии 6.7.
Новая функциональность, изменения и исправления связанных компонентов
Обновлены коннекторы:
- В коннекторы Kafka-Postgres reader, Kafka-Postgres writer, Kafka Jet writer, Kafka-Clickhouse reader и Kafka-Clickhouse writer добавлены зависимости для logback и micrometer.
- Конфигурация коннекторов Kafka-Postgres reader, Kafka-Postgres writer, Kafka Jet writer расширена параметрами
POSTGRES_IDLE_TIMEOUT_MS
иPOSTGRES_MAX_LIFETIME_TIMEOUT_MS
. - В коннекторе Kafka-Postgres reader устранена проблема утечки памяти.
Обновление документации
Добавлены разделы:
- О системе Prostore > Основные понятия > Потоковая загрузка данных;
- О системе Prostore > Основные понятия > Числовая последовательность;
- Другие функции системы > Уведомления о событиях;
- Другие функции системы > Уведомления о событиях > Отправка сообщений о событиях по HTTP;
- HTTP API > DDL-запрос;
- HTTP API > Потоковая загрузка;
- Запросы SQL+ > CREATE SEQUENCE;
- Запросы SQL+ > DROP SEQUENCE;
- Запросы SQL+ > GET_SEQUENCES.
Обновлены разделы:
- Раздел Регистрация событий в сигнальном топике Kafka включен в родительский раздел Уведомления о событиях.
- Раздел О системе Prostore > Основные понятия > Загрузка данных расширен списком поддерживаемых сущностей, способами загрузки данных и описанием работы загрузки.
- Раздел Запросы SQL+ > SELECT расширен описанием функций по управлению числовыми последовательностями и текстовым поиском.
Исправлены некорректные значения в разделе Развертывание > Конфигурация > Конфигурация ноды:
- значения
KAFKA_JET_CHECK_TIMEOUT_MS
,ADP_MPPW_CONNECTOR_CHECK_TIMEOUT_MS
иADP_MPPR_CONNECTOR_CHECK_TIMEOUT_MS
исправлены с 1000 на 2000; - значения
KAFKA_JET_RETRY_COUNT
,ADP_MPPW_CONNECTOR_RETRY_COUNT
иADP_MPPR_CONNECTOR_RETRY_COUNT
исправлены с 3 на 1.
Версия 6.11 (20.08.2024)
Версия 6.11 доступна в архиве.
Новая функциональность
Гарантия свежести данных (линеаризуемость) в кластере
Согласованность данных в кластере с лидером увеличена до уровня линеаризуемости. Теперь для каждой ноды кластера гарантируется получение самых последних изменений данных независимо от того, какая нода выполнила запрос на изменение данных. Например, если в кластере с тремя нодами данные изменили с ноды 1, то после этого SELECT-запросы с ноды 1, ноды 2 и ноды 3 вернут одинаково свежий результат.
Для кластера в leaderless-режиме (без лидера) согласованность данных, гарантируемая по умолчанию, по-прежнему остается на уровне Eventual Consistency с возможностью ее повышения с помощью команды SYNC
.
HTTP-методы по мониторингу состояния нод в кластере
В HTTP API добавлены методы, позволяющие отслеживать состояние нод Prostore в кластере:
/health/startup
— возвращает информацию о состоянии ноды после запуска;/health/liveness
— возвращает информацию о доступности ноды;/health/readiness
— возвращает информацию о готовности ноды к обработке запросов;/health
— возвращает все перечисленную информацию о состоянии ноды.
Расширенная параметризация запросов
Расширена поддержка параметров в запросах:
- в JDBC- и HTTP-запросах можно заменять значения
FOR SYSTEM_TIME
на индексированные параметры (символы?
); теперь любые константы запроса можно заменять на индексированные параметры; - в HTTP-запросах можно заменять любые константы на именованные параметры; такие параметры можно упоминать в запросе многократно и в любом порядке;
- в HTTP-запросах можно применять выражение
FOR SYSTEM_TIME
ко всем сущностям запроса, для которых не задано иное, с помощью системного параметра.
Подробнее о видах параметров и их использовании см. в разделе «Параметры запросов».
Изменения
Работа кластера в основном режиме (с лидером)
- Регистрация изменений данных и схемы данных в сервисной БД переведена на лидера.
- Исполнение
ROLLBACK DELTA
иERASE_WRITE_OPERATION
перенесено на лидера. - Обработка retention-правил переведена на лидера.
- Обработка SELECT-запросов к данным прокси-таблиц и standalone-таблиц отвязана от лидера и выполняется даже при недоступности лидера.
Логические типы данных
- Добавлен алиас
LONG
для типа данныхBIGINT
. - Добавлен алиас
STRING
для типа данныхVARCHAR
.
ROLLBACK DELTA и ERASE_WRITE_OPERATION
- Добавлено время ожидания отмены операций записи, определяемое параметром конфигурации
DELTA_ROLLBACK_OPERATIONS_TIMEOUT_MS
:- в
ROLLBACK DELTA
время ожидания действует для операций, запущенных запросами загрузки и обновления данных; - в
ERASE_WRITE_OPERATION
с флагомforce
, имеющим значениеtrue
, время ожидания действует для операций, запущенных запросами загрузки.
- в
- Для
ERASE_WRITE_OPERATION
удалено требование предварительно выполнятьRESUME_WRITE_OPERATION
для операций загрузки данных в случаях, если нода была перезапущена и восстановление ее состояния отключено (значение параметра конфигурацииAUTO_RESTORE_STATE
равноfalse
).
COMMIT DELTA
- Удалено ограничение в
COMMIT DELTA
с ключевым словомSET
: теперь дельту можно закрыть с более ранними датой и временем, чем дата и время отдельных операций записи, выполненных после последней закрытой дельты. Это возможно, только если в дельте не обновлялись логические таблицы, обновленные в отдельных операциях записи.
Конфигурация
- Добавлена секция
management.endpoint.health
с настройками метрик состояния нод. - Добавлена секция
privateapiwebclient
с настройками HTTP-клиентов приватного API. - Добавлен параметр
DELTA_ROLLBACK_OPERATIONS_TIMEOUT_MS
, определяющие максимальное время ожидания завершения операций при откате дельты. - Удален параметр
PNODE_LEADER_CALL_TIMEOUT_MS
.
Исправления
- Удален тайм-аут, из-за которого SELECT-запросы к версионируемым данным и запросы к дельтам могли завершаться неуспешно при медленном соединении между лидером кластера и сервисной БД.
Дополнительные действия при обновлении
При обновлении с версии ниже 6.7 на версию 6.11 выполните все действия по обновлению, указанные для версии 6.7.
Новая функциональность, изменения и исправления связанных компонентов
- DTM Tools 1.19.
- Обновлен коннектор Kafka Jet writer: добавлена поддержка алиасов типов данных
STRING
иLONG
. - Обновлены коннекторы Kafka-Postgres reader, Kafka-Postgres writer, Kafka-Clickhouse reader и Kafka-Clickhouse writer: поддержана логика сохранения пути к топику Kafka во внешних таблицах загрузки и выгрузки, обновленная в Prostore 6.10.
Обновление документации
Добавлены разделы:
- HTTP API > Состояние нод,
- HTTP API > Состояние нод > Доступность ноды,
- HTTP API > Состояние нод > Завершение запуска ноды,
- HTTP API > Состояние нод > Готовность ноды,
- HTTP API > Состояние нод > Общее состояние ноды,
- Работа с данными > Параметры запросов.
Дополнены и уточнены разделы:
- Раздел «Спецификация OpenAPI» расширен спецификацией методов по мониторингу состояния нод и переименован в «Спецификации OpenAPI».
- Раздел «HTTP API» > «Запросы и операции» > «Запрос SQL+» расширен примерами параметризованных запросов.
- В разделе «Запросы SQL+ > SELECT» уточнена таблица с доступностью выражений
FOR SYSTEM_TIME
.
Версия 6.10 (25.06.2024)
Версия 6.10 доступна в архиве.
Новая функциональность
Запрос GET_TS
Добавлен новый запрос GET_TS
, который позволяет получить метку времени успешно завершенной операции записи в логической таблицы по номеру этой операции.
Если в системе разграничены роли и полномочия пользователей, запрос могут выполнять только пользователи с ролью env_datawriter
или env_owner
.
В отличие от запроса GET_CN
, запрос GET_TS
не поддерживает указание значения в будущем. Указанный номер операции должен быть меньше или равен максимальному номеру операции записи в логической таблице.
Запрос ALTER TABLE ADD DATASOURCE
Добавлен новый запрос ALTER TABLE ADD DATASOURCE
, который позволяет расширить логическую таблицу на указанный датасорс без манипуляций с физической схемой данных и перезапуска ноды.
Запрос доступен для обычных логических таблиц и партиций. Расширение таблицы доступно на любой датасорс, если в ней нет данных, и только на ADB и (или) ADP, данные таблицы размещены хотя бы в одном датасорсе типа ADB или ADP.
Если в системе разграничены роли и полномочия пользователей, запрос могут выполнять только пользователи с ролью env_ddladmin
или env_owner
.
Подключение произвольных брокеров Kafka
Добавлена возможность подключения произвольных брокеров Kafka для загрузки и выгрузки данных, а также для выгрузки бэкапа и восстановления логической БД из бэкапа. Теперь эти брокеры могут не совпадать с теми брокерами, которые заданы в конфигурации системы.
Подробнее см. в разделах:
- Загрузка данных из Kafka > Формат пути к топику Kafka,
- Выгрузка данных в Kafka > Формат пути к топику Kafka,
- BACKUP_TO_KAFKA,
- RESTORE_FROM_KAFKA.
Изменения
Запросы ERASE*
- Для
ERASE_WRITE_OPERATION
добавлен опциональный флаг принудительной отмены операции. - Для
ERASE DELTA
добавлена блокировка запуска DDL-команд во время исполнения запроса.
Путь к топику Kafka во внешних таблицах
- Изменена логика сохранения пути к топику Kafka во внешних таблицах загрузки и выгрузки: теперь в путь без указания порта не подставляется номер порта, действующий по умолчанию.
- Добавлена проверка имен топиков, указываемых при создании внешней таблицы.
Конфигурация
- Удалены неиспользуемые параметры:
ADQM_CONSUMER_GROUP
,ADQM_BROKERS
иADQM_MPPW_LOAD_TYPE
.
Другие изменения
- Для
RECOVER_DATASOURCE
изменен порядок выбора датасорса-источника: теперь приоритетным среди датасорсов подходящего типа считается тот датасорс, который не участвует в retention-правилах восстанавливаемой таблицы. - Оптимизирована скорость вставки данных
INSERT/UPSERT VALUES
с помощью запроса prepared statement, содержащего большое количество параметров. - Для
GET_WRITE_OPERATIONS
изменен алгоритм расчета хеша, возвращаемого в столбцеquery
по запросам вставки и удаления данных.
Исправления
- Удалено ограничение, из-за которого внешняя таблица загрузки должна была принадлежать той же логической БД, что и целевая таблица, куда загружаются данные. Теперь таблицы могут принадлежать любым логических БД.
- Исключено автоматическое пересоздание сущностей в информационной схеме при отсутствии изменений в метаданных сущности.
Дополнительные действия при обновлении
При обновлении с версии ниже 6.7 на версию 6.10 выполните все действия по обновлению, указанные для версии 6.7.
Новая функциональность, изменения и исправления связанных компонентов
Обновление документации
Новые разделы:
- ALTER TABLE ADD DATASOURCE,
- GET_TS.
Доработки и корректировки:
- Разделы «Загрузка данных из Kafka» > «Формат пути к топику Kafka» и «Выгрузка данных в Kafka» > «Формат пути к топику Kafka» расширены секцией «Путь к топику произвольных брокеров Kafka».
- Раздел «Программное JDBC-подключение» расширен секцией «Реализация чтения данных с помощью подготовленного запроса (prepared statement)».
- В разделе «Регистрация событий в сигнальном топике Kafka» скорректировано описание типа события
DATAMART_SCHEMA_CHANGED
: уточнено, что событие записывается при успешном выполнении DDL-запроса независимо от того, изменил запрос логическую схему данных или нет. - В разделе «ROLLBACK DELTA» исправлено описание успешного ответа: возвращается номер отмененной дельты, а не последней закрытой дельты.
- Список слов в разделе «Зарезервированные слова» расширен словом
link
.
Версия 6.9 (02.05.2024)
Версия 6.9 доступна в архиве.
Новая функциональность
Запрос UPDATE для обновления значений столбцов таблицы
Добавлен новый запрос UPDATE
, который позволяет обновлять значения указанных столбцов таблицы. Значения столбцов можно обновлять константами, результатами вычисления выражений и результатами SELECT-подзапросов к другим сущностям. Значения обновляются только в тех строках таблицы, которые соответствуют заданному в запросе условию.
Запрос доступен для логических таблиц, размещенных в любых поддерживаемых СУБД, а также для прокси- и standalone-таблиц, размещенных в СУБД ADB и ADP.
Если в системе разграничены роли и полномочия пользователей, запрос могут выполнять только пользователи с ролью env_datawriter
или env_owner
.
Потоковое чтение данных порциями указанного размера
Добавлена возможность вычитывать данные потоком порций указанного размера. Потоковое чтение позволяет вычитывать большие объемы данных без брокера сообщений Kafka, не переполняя оперативную память ноды Prostore.
Потоковое чтение данных доступно из СУБД ADB и ADP при следующих вариантах подключения:
- программное JDBC-подключение,
- HTTP-подключение по протоколу HTTP/2.
Чтобы переключить запрос чтения данных на чтение потоком порций, необходимо задать для него размер порций данных. Если в запросе на чтение данных размер порций данных не задан или равен 0, используется обычный режим чтения и система возвращает всю запрошенную выборку одним ответом.
Подробнее о потоковом чтении данных см. в разделе «Потоковое чтение данных». Пошаговая инструкция по чтению данных доступна в разделе «Как прочитать данные».
Выгрузка типа LINK с указанием логического типа Avro
Для СУБД ADB, ADP и ADQM добавлена выгрузка данных типа LINK
с указанием логического типа Avro link
. Основный (физический) тип данных Avro остается при этом строковым.
Пример фрагмента выгружаемой схемы Avro для столбца link_col
с типом LINK
:
{
"name": "link_col",
"type": [
"null",
{
"type": "string",
"logicalType": "link"
}
],
"default": null
}
Раньше фрагмент выгружаемой схемы Avro для того же столбца link_col
выглядел так:
{
"name": "link_col",
"type": [
"null",
{
"type": "string",
"avro.java.string": "String"
}
],
"default": null
}
Обновление записей при загрузке данных из Kafka в standalone- и прокси-таблицы ADP
Добавлена возможность обновления записей в standalone- и прокси-таблицах, размещенных в СУБД ADP, с помощью функции загрузки данных.
Теперь при загрузке данных в таблицу, где уже есть записи с первичными ключами, указанными в запросе, система обновляет такие записи значениями из запроса без возврата ошибки о дубликатах. Также standalone- и прокси-таблицы в СУБД ADP стали устойчивы к загрузке записей с дублирующимся первичным ключом в одном запросе: теперь в этом случае система сохраняет один экземпляр каждой записи без возврата ошибки о дубликатах.
Механизм загрузки записей с дублирующимся первичным ключом в standalone- и прокси-таблицы других СУБД остается прежним: в зависимости от правил целевой СУБД возвращается ошибка или записи загружаются, несмотря на конфликт ключей.
Возврат данных HTTP-методом query в Avro-формате
Для метода HTTP API query
добавлена возможностью возврата ответа в Avro-формате с выбранным алгоритмом сжатия данных из следующих:
avro
— без сжатия,avro-deflate
— сжатие по алгоритму Deflate,avro-snappy
— сжатие по алгоритму Snappy,avro-bzip2
— сжатие по алгоритму BZip2,avro-xz
— сжатие по алгоритму XZ,avro-zstandard
— сжатие по алгоритму Zstandard.
Формат ответа можно задать в URL метода с помощью параметра format
.
Изменения
HTTP API
Обновлен HTTP-метод query
:
- расширен URL:
- список значений параметра
format
расширен новыми значениями, предназначенными для указания Avro-формата с выбранным сжатием данных; - добавлен параметр
compressionLevel
, определяющий коэффициент сжатия данных в Avro-формате;
- список значений параметра
- изменен формат тела запроса:
- добавлены параметры
fetchSize
иfetchTimeoutMs
; - изменен порядок обработки значения
maxRowsToRead
: теперь при значении 0 ответ не имеет ограничений на количество строк, а при отрицательном значении возвращается ошибка (раньше в обоих случаях возвращалось ноль строк); - список возможных значений параметра
maxRowsToRead
расширен значениемnull
, которое означает отсутствие ограничения и эквивалентно значению 0 или отсутствию параметра.
- добавлены параметры
JDBC-драйвер
- JDBC-драйвер расширен поддержкой методов, управляющих курсорами СУБД.
- Изменен тайм-аут
Statement.setQueryTimeout
: теперь он задает максимально допустимое время начала получения ответа (для потокового чтения — время начала получения каждой порции данных), а не время получения полного ответа. - Изменен порядок работы JDBC-драйвера с сервисом исполнения запросов:
- взаимодействие этих компонентов переведено на публичный HTTP API (с закрытого HTTP API) по протоколу HTTP/2 в Avro-формате;
- добавлена возможность выбора формата обмена данными между этими компонентами с помощью параметров
format
иcompressionLevel
.
- Добавлена возможность задавать максимальное количество запросов, синхронно исполняемых в одном подключении, с помощью параметра
statementConcurrency
. Значение по умолчанию равно 2 и соответствует прежнему поведению драйвера.
Конфигурация
- Добавлены параметры:
ZOOKEEPER_KAFKA_CONNECTION_RETRY_COUNT
— задает максимальное число попыток подключения кластера ZooKeeper к брокеру сообщений Kafka;ZOOKEEPER_DS_WRITE_OPTIMISTIC_RETRY_COUNT
— задает максимальное число попыток выполнения операции записи в случае срабатывания блокировки optimistic;KAFKA_JET_RETRY_COUNT
,ADP_MPPW_CONNECTOR_RETRY_COUNT
иADP_MPPR_CONNECTOR_RETRY_COUNT
— задают количество попыток установления соединения с коннекторами Jet writer, Kafka-Postgres reader и Kafka-Postgres writer;DELTA_ROLLBACK_RETRY_COUNT
иDELTA_ROLLBACK_RETRY_TIMEOUT_MS
— задают количество попыток отката дельты и время ожидания между такими попытками;WRITE_OPERATION_ROLLBACK_RETRY_COUNT
иWRITE_OPERATION_ROLLBACK_RETRY_TIMEOUT_MS
— задают количество попыток отката операции записи и время ожидания между такими попытками.
- Удалены неиспользуемые параметры
ADB_FETCH_SIZE
иADP_FETCH_SIZE
.
Взаимодействие с СУБД
- Добавлена проверка актуальности FDW-серверов ADP и механизм их пересоздания в случае неактуальности.
- Улучшена информативность ошибок, возникающих при загрузке данных в ADB: теперь в тексте указывается корневая ошибка, полученная от СУБД.
Версии используемого ПО
- Рекомендуемая к установке операционная система изменена с Centos 7 на Альт 8 СП (8.4).
- Обновлена версия клиента Vert.x Kafka, используемого системой.
Другие изменения
- Для операций записи в разных таблицах логической БД добавлена гарантия возрастания меток времени в соответствии с порядком, в котором операции были завершены.
- Улучшен механизм отката неуспешных операций загрузки данных: теперь откат возможен даже при отсутствии внешней таблицы, использовавшейся в запросе.
- Улучшен механизм восстановления соединения с ZooKeeper при выгрузке данных: теперь соединение с ZooKeeper автоматически восстанавливается в случае его потери.
- Улучшена стабильность работы компонентов при проблемах с сетевой инфраструктурой: стабильность работы системы с коннекторами и коннекторов с СУБД, а также стабильность отката дельт и операций записи.
Исправления
- Исправлена ошибка, возникавшая при использовании функции
TIMESTAMPDIFF
для данных ADQM. - Исправлено некорректное логирование ошибки, возникавшей при обработке retention-правил, как успешного результата.
- Исправлен расчет статистики для асинхронных HTTP-запросов. Теперь неуспешные запросы учитываются корректно, и любые запросы попадают в статистику только после завершения их обработки.
- Исправлен механизм проверки количества записей, загруженных из топика из Kafka. Теперь, если в каком-то из целевых датасорсов после загрузки данных оказалось меньше или больше записей, чем в других, операция считается неуспешной и автоматически отменяется (раньше такая операция могла иногда считаться успешной).
- Исправлен некорректный возврат дубликатов записей при запросе к партиционной таблице с неравномерно разложенными данными.
- Исправлена ошибка, приводившая к невозможности выполнения параметризованного запроса
RETRY INSERT SELECT
в случаях, если в SELECT-подзапросе было указано ключевое словоDATASOURCE_TYPE
.
Дополнительные действия при обновлении
При обновлении с версии ниже 6.7 на версию 6.9 выполните все действия по обновлению, указанные для версии 6.7.
Новая функциональность, изменения и исправления связанных компонентов
- DTM Tools 1.17.
- Версия ADP, рекомендуемая к установке, изменена с 13.5 на 13.14.
- Обновлена версия клиента Vert.x Kafka для коннекторов: Kafka-Postgres reader, Kafka-Postgres writer, Kafka Jet writer, Kafka-Clickhouse reader и Kafka-Clickhouse writer.
- В конфигурацию коннекторов Kafka-Postgres writer и Kafka Jet writer добавлены параметры
POSTGRES_CONNECT_RETRY_COUNT
иPOSTGRES_CONNECT_RETRY_TIMEOUT_MS
.
Обновление документации
Добавлены новые разделы:
- Потоковое чтение данных,
- UPDATE.
Переработана структура документации:
- Глава «Работа с системой» превращена в четыре отдельные главы: «Подключение», «Работа со схемой данных», «Работа с данными», «Другие функции системы».
- Перемещены и переименованы разделы:
- глава «REST API» переименована в «HTTP API»,
- глава «Запуск в эксплуатацию» переименована в «Развертывание»,
- глава «Сборка и развертывание» помещена в главу «Развертывание» и переименована в «Минимальное развертывание»,
- разделы «Формат загрузки данных», «Загружаемые типы данных», «Формат пути к топику Kafka», «Рекомендации по топикам Kafka» перемещены из главы «Справочная информация» в раздел «Загрузка данных из Kafka».
- Глава «Как устроена система» удалена, а ее дочерние разделы перемещены в другие главы:
- раздел «Компоненты системы и их связи» перемещен в главу «О системе Prostore» и переименован в «Компоненты и интерфейсы»,
- раздел «Основные понятия» перемещен в главу «О системе Prostore»,
- раздел «Кластеризация Prostore» перенесен в главу «Развертывание»,
- раздел «Восстановление датасорсов» перемещен в главу «Другии функции системы».
- Удалены разделы:
- Порядок обработки запросов на обновление схемы данных,
- Порядок обработки запросов на загрузку данных,
- Порядок обработки запросов на обновление данных,
- Порядок обработки запросов на выгрузку данных,
- Порядок обработки запросов на чтение данных.
Исправлены разделы:
- Из раздела «Формат пути к топику Kafka» удалена информация про
chroot
, так как фактически указаниеchroot
в пути к топику не поддерживается. - Из разделов с описанием DDL-запросов и раздела «Ограничения системы» удалена неактуальная информация о невозможности исполнения DDL-запросов к прокси-таблицам и представлениям при наличии активной операции записи.
- Из разделов «INSERT SELECT», «INSERT SELECT FROM EXTERNAL TABLE», «INSERT VALUES», «UPDATE», «UPSERT VALUES» и «Ограничения системы» удалена неактуальная информация о невозможности исполнения запросов к прокси-таблицам и standalone-таблицам при наличии активных DDL-операций.
- В раздел «Выгружаемые типы данных Avro» добавлена информация о типе данных
CHAR
и алиасах дляBIGINT
иINTEGER
. - В раздел «Логические типы данных» добавлена информация об алиасах для
BIGINT
иINTEGER
.
Версия 6.8.1 (21.02.2024)
Версия 6.8.1 доступна в архиве.
- Исправлена ошибка, возникавшая при исполнении SELECT-запросов с выражением
FOR SYSTEM_TIME STARTED/FINISHED
для standalone-таблиц с помощью preparedStatement (включая параметризованный запрос REST API).
Версия 6.8 (13.02.2024)
Новая функциональность
Управление индексами в СУБД
Добавлена возможность управлять индексами в любых таблицах СУБД с помощью запросов:
CREATE INDEX
— создает индекс;DROP INDEX
— удаляет индекс;GET_INDEXES
— возвращает информацию об индексах.
Управление индексами доступно в СУБД ADB и ADP. Изменение индексов средствами системы недоступно.
Кластер с автоматически выбираемым лидером
Для кластера добавлен новый режим работы — с автоматическим выбором ноды-лидера при наличии двух и более нод.
Этот режим теперь включен по умолчанию. При необходимости кластер можно переключить в прежний режим работы с полностью равноправными нодами (режим leaderless) — установив для всех нод кластера значение параметра конфигурации PNODE_LEADERLESS_ENABLED
, равное true
.
Все ноды в кластере с лидером выполняют любые виды запросов и возвращают одинаково актуальные результаты. Синхронизацией материализованных представлений и расчетом значения ROWS_COUNT
в статистике занимается лидер, обработкой retention-правил — случайно выбранная нода.
Кластер с лидером имеет более высокий уровень согласованности данных, гарантируемый по умолчанию, чем кластер без лидера, — последовательной согласованности (Sequential Consistency) вместо согласованности в конечном счете (Eventual Consistency).
Подробнее об уровнях согласованности данных в кластере и способах их повышения см. в разделе «О кластеризации».
Чтение и выгрузка данных из нескольких партиций партиционированной таблицы
Добавлена возможность читать и выгружать данные из всех партиций партиционированной таблицы, задействованных в запросе. В запросе к партиционированной таблице теперь необязательно указывать условие, которое однозначно определяет только одну партицию таблицы: условие в запросах SELECT
, INSERT SELECT
и INSERT INTO download_external_table
может распространяться на любое количество партиций таблицы или вообще отсутствовать.
Если задействованные по запросу партиции расположены в разных датасорсах, система собирает результаты из всех таких датасорсов и возвращает результаты в ответе как единое множество записей, по возможности исключая дублирующиеся датасорсы (реплики).
Подробнее о выборе датасорсов см. в разделе «Маршрутизация запросов к данным».
Материализованные представления с источником и приемником в одном датасорсе
Добавлена поддержка материализованных представлений, построенных на основе данных датасорса любого типа и размещенных в том же датасорсе.
INSERT SELECT из ADP в ADG
Для запроса INSERT SELECT
расширен список поддерживаемых типов датасорсов: теперь также доступна вставка данных из датасорса типа ADP в датасорс типа ADG.
Изменения
Формат запросов
- Для запроса
CREATE MATERIALIZED VIEW
добавлена возможность не указывать ключевое словоDATASOURCE_TYPE
с датасорсом-источником. Теперь, если датасорс-источник не указан, система выбирает один или несколько наиболее оптимальных датасорсов для исполнения SELECT-подзапроса, на котором построено представление.
Формат ответов
- Ответы запросов на загрузку и обновление данных расширены столбцом
rowsAffected
, содержащим количество строк таблицы, затронутых запросом. Расчет значенияrowsAffected
доступен для СУБД ADB и ADP. - Массив в столбце
write_op_finished
ответаGET_DELTA_HOT
расширен атрибутомrowsAffected
. - Ответ SELECT-запроса с ключевым словом
ESTIMATE_ONLY
расширен и теперь может содержать несколько строк — по количеству задействованных датасорсов.
HTTP API
- Массив
delta_hot.writeOperationsFinished.cnList
в ответе методов, возвращающих информацию об открытой дельте, расширен свойствомrowsAffected
. - В ответы методов, возвращающих информацию о сущностях, добавлен массив
materializedCnList
с данными источника и номером последней операции записи, загруженной в материализованное представление из источника.
Сигнальный топик Kafka
- Формат даты и времени в поле
datetime
ключа сообщения расширен и теперь может содержать от 0 до 6 знаков долей секунды после точки. - Список полей по событиям
DATAMART_SCHEMA_CHANGED
расширен полямиentityName
иentityDefinition
. - Для событий
DATAMART_SCHEMA_CHANGED
добавлена поддержка внешних таблиц всех видов. - Для событий
WRITE_OK
добавлена регистрация количества затронутых строк таблицы в полеrowsAffected
(раньше поле заполнялось значениемnull
).
Конфигурация
- Добавлен параметр
KAFKA_STATUS_EVENT_EXTERNAL_DDL_ENABLED
, позволяющий включать и отключать публикацию событий о создании и удалении внешних таблиц в сигнальном топике Kafka. - Добавлены секции параметров:
pnode
— задает параметры ноды и режим работы кластера;webclient
— задает параметры внутреннего взаимодействия HTTP-клиентов.
- Удалены параметры
ADG_WEB_CLIENT_MAX_POOL_SIZE
иADQM_WEB_CLIENT_MAX_POOL_SIZE
; вместо них теперь используются общие параметры из новой секцииwebclient
.
ROLLBACK DELTA
- Добавлена возможность откатывать дельту при наличии незавершенных операций записи, начатых до открытой дельты. Ограничение на откат дельты при наличии незавершенных операций, начатых в этой дельте, по-прежнему сохраняется.
- Добавлена блокировка новых операций записи во время отката дельты.
Другие изменения
- Изменен порядок запуска некоторых процессов в кластере: теперь в режиме работы кластера, действующем по умолчанию, синхронизацией материализованных представлений и расчетом значения
ROWS_COUNT
в статистике занимается только нода-лидер. - Добавлена возможность выполнять команды
RESUME_WRITE_OPERATION
,ROLLBACK CRASHED_WRITE_OPERATIONS
,ERASE_WRITE_OPERATION
иROLLBACK DELTA
, не дожидаясь завершения всех выполняемых операций загрузки данных в СУБД ADB. Теперь перечисленные команды прерывают активные операции в ADB так же, как они это делают в других СУБД. - Для команд
ALTER TABLE ...
добавлена возможность изменять логические таблицы в открытой дельте при наличии в этих таблицах операций записи, выполненных в дельте. Ограничение на изменение логических таблиц при наличии в них незавершенных операций записи по-прежнему остается. - Команды
ENABLE_DATASOURCE
,DISABLE_DATASOURCE
иDROP DATABASE
расширены механизмом, повторяющим попытку обновления динамической конфигурации в ZooKeeper в случае внутренней ошибки. - Команда
ERASE DELTA
расширена механизмом, перезапускающим синхронизацию материализованных представлений, которые принадлежат целевой логической БД, но построены на данных других логических БД, начиная с нулевой дельты. - Лог-сообщения по удалению и остужению данных согласно retention-правилам расширены идентификаторами незавершенных операций записи, препятствующих запуску retention-правил.
- Для функции, вычисляющей контрольную сумму в командах
CHECK_DATA
,CHECK_SUM
иCHECK_SUM_SNAPSHOT
, удалено свойствоLEAKPROOF
. Использование этого свойства раньше требовало полномочий суперпользователя в СУБД ADB и ADP при запуске Prostore. - Изменен текст ошибки для запросов вида
<таблица,_не_существующая_в_датасорсе_исполнения_запроса> FOR SYSTEM_TIME AS OF DELTA_NUM <номер_несуществующей_дельты>
: теперь возвращается текстDelta does not exist
вместоQueried entity is missing for the specified DATASOURCE_TYPE...
.
Исправления
- Исправлена ошибка
CHECK_VERSIONS
, возникавшая при сетевой недоступности компонента. - Исправлена ошибка
TRUNCATE ACTUAL
, приводившая к пересчету значения параметра статистикиROWS_COUNT
вместо его обнуления. - Исправлена ошибка, возникавшая при вставке данных из логической таблицы в standalone-таблицу, когда standalone-таблица и данные логической таблицы находились в разных физических схемах.
- Исправлена неконсистентность данных, которая возникала в материализованных представлениях, построенных на данных нескольких логических БД, в случае закрытия дельт с явной установкой времени в нескольких связанных логических БД.
- Исключена вероятность частичной видимости изменений в последней закрытой дельте.
Дополнительные действия при обновлении
При обновлении с версии ниже 6.7 на версию 6.8 выполните все действия по обновлению, указанные для версии 6.7.
Новая функциональность, изменения и исправления связанных компонентов
- DTM Tools 1.16.
- Версия ADB обновлена с 6.25.1 до 6.26.0.
- Обновлены версии коннекторов: Kafka-Postgres reader, Kafka-Postgres writer и Kafka Jet writer.
Обновление документации
- Исправлено описание конфигурации:
- Исправлены значения параметров:
KAFKA_JET_POLL_DURATION_MS
: 100 -> 1000;ADB_MPPW_DEFAULT_MESSAGE_LIMIT
: 10000 -> 1000;DTM_LOGGING_LEVEL
: TRACE -> DEBUG.
- Добавлены пропущенные ранее параметры:
KAFKA_JET_CHECK_TIMEOUT_MS
;ADP_MPPW_GET_ENDPOINT
;ADP_MPPW_CONNECTOR_CHECK_TIMEOUT_MS
;ADP_MPPR_CONNECTOR_CHECK_TIMEOUT_MS
.
- Исправлены пути для параметров:
clusterkey.deserializer
->key.deserializer
;ru.datamart.prostore.query.execution
->ru.datamart.prostore
.
- Удалено значение параметра
ADB_PASS
.
- Исправлены значения параметров:
- Добавлены разделы:
- Индекс,
- CREATE INDEX,
- DROP INDEX,
- GET_INDEXES,
- Управление индексами.
- Раздел «Формат даты и времени в ответах REST API» переименован в «Строковый формат даты и времени в ответах».
- Термин «системный топик Kafka» заменен на «сигнальный топик Kafka».
Версия 6.7 (22.11.2023)
Версия 6.7 доступна в архиве.
Новая функциональность
Доступность изменений вне дельт
Записи, внесенные операциями записи вне дельты, теперь доступны в SELECT-запросах без FOR SYSTEM_TIME
сразу после завершения этих операций, а не после закрытия ближайшей дельты, как это было до версии 6.7.
Каждая операции записи, выполненная вне дельты, получает метку времени, равную дате и времени завершения операции с точностью до микросекунд. Это означает, что записи вне дельт теперь версионируются более точно по времени — по своим меткам времени, а не по метке ближайшей дельты.
Операции записи, выполненные в дельте, по-прежнему получают метку времени, равную дате и времени закрытия дельты.
Механизм работы запросов SELECT * FOR SYSTEM_TIME STARTED IN/FINISHED IN
, CHECK_DATA
и CHECK_SUM
остался прежним: эти запросы учитывают записи, относящиеся к указанной дельте и операциям записи между указанной дельтой и предыдущей к ней. Например, запрос SELECT * FROM marketing.clients FOR SYSTEM_TIME STARTED IN (10, 10)
возвращает записи, добавленные и измененные в таблице clients
в дельте 10 и в отдельных операциях записи между дельтой 9 и 10.
Запрос GET_CN
Добавлен запрос GET_CN
, который позволяет получить номер последней операции записи на указанный момент времени. Момент времени можно указать как строковую метку времени или как Unix-время.
Если в системе разграничены роли и полномочия пользователей, запрос GET_CN
могут выполнять только пользователи с ролью env_datawriter
или env_owner
.
Запросы ENABLE_STATISTICS_ROWS_COUNT и DISABLE_STATISTICS_ROWS_COUNT
Добавлены запросы, которые позволяют включать и отключать для отдельных сущностей расчет количества строк в статистике по логическим сущностям:
ENABLE_STATISTICS_ROWS_COUNT
— включает режим автоматического расчета количества строк для сущности;DISABLE_STATISTICS_ROWS_COUNT
— отключает режим автоматического расчета количества строк для сущности.
Если в системе разграничены роли и полномочия пользователей, запросы ENABLE_STATISTICS_ROWS_COUNT
и DISABLE_STATISTICS_ROWS_COUNT
могут выполнять только пользователи с ролью env_ddladmin
или env_owner
.
Режим расчета количества строк, действующий по умолчанию для логических сущностей окружения, управляется, как и до версии 6.7, параметром конфигурации CORE_STATISTICS_DATA_COUNT_ENABLED
.
Оптимизированный расчет ROWS_COUNT и ROWS_COUNT_DELTA с отсрочкой
Механизм расчета статистики оптимизирован и теперь рассчитывает значения ROWS_COUNT
и ROWS_COUNT_DELTA
инкрементально, используя результаты предыдущего расчета, без перерасчета с нулевой дельты.
Также добавлена возможность отсрочки расчета ROWS_COUNT
и ROWS_COUNT_DELTA
, которая позволяет рассчитывать эти значения раз в интервал сразу по всем новым закрытым дельтам. Длительность отсрочки определяется параметром конфигурации CORE_STATISTICS_DATA_COUNT_PERIOD_MS
. По умолчанию отсрочки нет, и расчет значений ROWS_COUNT
и ROWS_COUNT_DELTA
запускается после закрытия каждой дельты.
Новые выражения FOR SYSTEM_TIME
Добавлены варианты выражений FOR SYSTEM_TIME
в SELECT-запросах:
FOR SYSTEM_TIME STARTED TS (datetime1, datetime2)
— выбирает записи, добавленные и измененные между двумя метками времени, включая обе границы;FOR SYSTEM_TIME FINISHED TS (datetime1, datetime2)
— выбирает записи, удаленные между двумя метками времени, включая обе границы.
Изменения
Формат ответов
- Из ответов запросов
GET_DELTA_*
иCOMMIT DELTA
удален столбецcn_to
. Правая граница дельты теперь определяется только датой и временем закрытия этой дельты. - Ответы запросов на загрузку и обновление данных расширены столбцом
ts
, содержащим дату и время завершения операции записи. - Из ответа
CHECK_VERSIONS
удалена информация о коннекторе Kafka-Greenplum reader (PXF), так как теперь коннектор считается частью ADB, а не отдельным сервисом.
HTTP API
- Ответ метода
/datamarts/{datamart}/entities/{entity}
расширен полями:id
,lastTs
,lastTslogPage
,statisticsRowsCountEnabled
иhistoryInTslogOnly
. - Из ответов методов по дельтам, удалено поле
cnTo
. - Поле
writeOperationsFinished.cnList
в ответах/datamarts/{datamart}/deltas/latest
и/datamarts/{datamart}/deltas/latest_hot
преобразовано из списка значений в список объектов.
Введенные и удаленные ограничения
- Удалено ограничение, которое блокировало закрытие дельты с помощью
СOMMIT DELTA IMMEDIATE
до завершения всех операций записи, начатых до открытия дельты. Теперь закрывать дельту запросомСOMMIT DELTA IMMEDIATE
можно в любой момент, независимо от наличия незавершенных операций записи. - Добавлена возможность запуска системы при недоступности некоторых или всех СУБД хранилища.
- Добавлены ограничения:
- выполнение
RECOVER_DATASOURCE
недоступно при наличии открытой дельты или незавершенных операций записи в целевой логической БД; UPSERT VALUES
недоступен для standalone-таблицы, если связанная с ней внешняя writable-таблица не имеет первичного ключа.
- выполнение
Синтаксис запросов
Добавлена поддержка меток времени с любой точностью от секунд до микросекунд в запросах:
SELECT ... FOR SYSTEM_TIME AS OF '<timestamp>'
,CHECK_SUM_SNAPSHOT
,TRUNCATE HISTORY
,TRUNCATE ACTUAL
,COMMIT DELTA
,GET_DELTA_BY_DATETIME
.
Механизм работы запросов
Изменен механизм отбора записей в запросах:
CHECK_SUM_SNAPSHOT
с меткой времени — проверяет записи по состоянию на последнюю завершенную операцию записи на указанный момент, а не на последнюю закрытую дельту на тот момент;TRUNCATE ACTUAL
— удаляет записи после указанного момента времени (исключая границу), а не по указанный момент включительно;TRUNCATE HISTORY
с меткой времени — удаляет записи, которые стали неактуальными в последнюю операцию записи на указанный момент времени или раньше, а не в последнюю дельту на тот момент или раньше.
Конфигурация
- Добавлена секция параметров
tslog
с параметрами, определяющими уровень вложенности и вместимость узлов tslog. - Добавлен параметр
KAFKA_STATUS_EVENT_WRITE_OPERATIONS_ENABLED
, управляющий публикацией событий об операциях записи в сигнальном топике. - Добавлен параметр
CORE_STATISTICS_DATA_COUNT_PERIOD_MS
, задающий интервал между закрытием дельты и началом расчета количества строк в сущностях. - Изменено значение параметра
ADB_MPPW_USE_ADVANCED_CONNECTOR
:false
→true
.
Изменения в работе с ADB
- Версия ADB, рекомендуемая к установке, изменена с 6.17.5 на 6.25.1.
- Изменен коннектор, используемый для загрузки данных в ADB. Теперь вместо FDW-коннектора используется улучшенный PXF-коннектор (Advanced PXF connector).
- Изменен шаблон имен консьюмер-групп, которые формирует улучшенный PXF-коннектор при загрузке данных в ADB. Теперь шаблон включает имя датасорса и имеет формат
kgw_<environment_name>_<datasource_name>_<logical_table_name>
. - Изменен порядок выбора первого сообщения при загрузке данных в ADB с помощью новой внешней таблицы загрузки. Теперь, если запрос на загрузку данных содержит внешнюю таблицу загрузки, которая раньше не использовалась, данные вычитываются с начала топика, а не с первого непрочитанного сообщения. В остальных случаях — при повторной загрузке данных в ADB с помощью одной внешней таблицы загрузки, а также при любой загрузке в другие СУБД — данные по-прежнему считываются с первого непрочитанного сообщения топика.
Другие изменения
- Список зарезервированных слов расширен словом
ts
. - Добавлены новые типы событий, записываемых в сигнальный топик Kafka: событие
WRITE_OK
о завершении операции записи и событиеWRITE_CANCEL
об отмене операции записи.
Исправления
- Исправлена проблема загрузки данных, которая возникала при использовании одинаковых имен окружений в нескольких СУБД.
Известные проблемы
- Возможна нецелостная синхронизация материализованных представлений, если дельты закрываются с ключевым словом
SET
и установкой даты и времени дельты в прошлом или будущем относительно серверного времени. - Запросы
SELECT... FOR SYSTEM_TIME...
к данным материализованных представлений, синхронизированным до версии 6.7, возвращают результаты, смещенные примерно на дельту назад. По новым данным, синхронизированным в версии 6.7, возвращается точный результат. - Недоступна одновременная загрузка данных из одного топика Kafka в разные таблицы ADG. Проблема наблюдается в версии 6.7 и более ранних версиях системы.
Дополнительные действия при обновлении
- До обновления на версию 6.7 закройте дельты и дождитесь синхронизации материализованных представлений во всех логических базах данных окружения.
- Если планируется закрывать дельты командой
COMMIT DELTA IMMEDIATE
, после обновления на версию 6.7 в каждой логической таблице сделайте пустую операцию записи (например, запросомINSERT INTO tbl SELECT * FROM tbl WHERE 1=0
). Иначе возможно «грязное» чтение данных первой незавершенной операции в таблице.
Новая функциональность, изменения и исправления связанных компонентов
- DTM Tools 1.16.
- Обновлены версии PXF-коннекторов: Kafka-Greenplum reader, Kafka-Greenplum writer, Greenplum-Clickhouse и Greenplum-Tarantool.
Обновление документации
- Добавлены разделы:
- Основные понятия > Tslog,
- Основные понятия > Статистика обработки запросов,
- Работа с системой > Управление статистикой обработки запросов,
- Запросы SQL+ > GET_CN,
- Запросы SQL+ > ENABLE_STATISTICS_ROWS_COUNT,
- Запросы SQL+ > DISABLE_STATISTICS_ROWS_COUNT.
- Унифицирована терминология: теперь вместо двух равнозначных терминов «горячая дельта» и «открытая дельта» используется только второй — «открытая дельта».
Версия 6.6 (04.10.2023)
Версия 6.6 доступна в архиве.
Новая функциональность
Прокси-таблицы
В системе появился новый тип логической сущности без версионирования данных — прокси-таблица. В отличие от обычной логической таблицы, прокси-таблица поддерживает параллельную запись данных и всегда размещается в единственном датасорсе.
Создавать, изменять и удалять прокси-таблицы можно точно так же, как и логические таблицы. Cоздавать прокси-таблицы также можно новым запросом CREATE PROXY TABLE
.
Данные прокси-таблиц можно загружать, обновлять, читать и выгружать точно так же, как и данные логических таблиц. Единственное отличие — запись данных в прокси-таблицы происходит вне механизма операций записи и дельт.
Асинхронные запросы по HTTP
Добавлена возможность отправки запросов на выполнение в асинхронном режиме. Возможность доступна только для запросов на загрузку, обновление и выгрузку данных, отправленных по HTTP.
Запуск без брокера сообщений Kafka
Добавлена возможность запуска системы без брокера сообщений Kafka и коннекторов к СУБД. Если система развернута и запущена без Kafka и коннекторов, добавлять, изменять и удалять данные только с помощью запросов обновления данных.
Для запуска системы без брокера Kafka параметр конфигурации KAFKA_STATUS_EVENT_ENABLED
должен иметь значение false
.
Удаление данных из нескольких партиций
Добавлена возможность одновременного удаления данных из всех партиций, соответствующих условию WHERE
, с помощью запроса DELETE
к партиционированной таблице.
При обработке DELETE-запроса к партиционированной таблице система определяет все задействованные партиции таблицы и удаляет записи, соответствующие условию, из всех таких партиций. Если условие WHERE
не указано, удаляются все записи всех партиций партиционированной таблицы.
Ограничение на однозначное определение партиции в DELETE-запросе больше не применяется. Вместо него теперь действует другое ограничение: если в DELETE-запросе указано условие, это условие должно быть исполнимо во всех датасорсах, откуда удаляются записи партиций. То есть все логические сущности, указанные в условии, должны быть расположены, как минимум, в тех датасорсах, где расположены задействованные в запросе партиции таблицы.
Фильтрация данных при загрузке из Kafka с помощью внешних readable-таблиц
Добавлена возможность фильтрации данных, загружаемых из топика Kafka с помощью внешней readable-таблицы. Фильтр может включать ключевые слова: WHERE
, LIMIT
и/или OFFSET
.
Заданный фильтр применяется только к загружаемым записям: коннекторы вычитывают из топика все данные, не прочитанные ранее, без учета фильтра.
Ключевое слово RETRY в запросах загрузки данных
Расширена поддержка ключевого слова RETRY
, перезапускающего обработку незавершенной операции записи со статусом «Выполняется». Теперь оно поддерживается не только в запросах обновления данных, но и в запросах загрузки данных.
Изменения
Синтаксис запросов:
- Запросы
GET_DELTA_*
расширены опциональным параметром, задающим имя логической базы данных, по которой запрашивается информация. - Запрос
CREATE TABLE
расширен опциональным ключевым словомOPTIONS
, позволяющим создать прокси-таблицу. - Запрос
RECOVER_DATASOURCE
расширен опциональным параметром, который задает количество операций записи, восстанавливаемых системой за один проход.
HTTP API:
- Добавлены GET- и POST-методы управления асинхронными операциями.
- Тело запроса
query
расширено опциональным флагомasync
, определяющим режим выполнения запроса — синхронный или асинхронный. - Список возможных кодов ответа расширен кодом 404.
JDBC:
- Для JDBC-интерфейса
Statement
добавлена поддержка методаsetMaxRows
.
Конфигурация:
- Значение параметра конфигурации
ADB_MPPW_FDW_TIMEOUT_MS
изменено с 1000 на 1200. - Удалена неиспользуемая секция параметров
core:plugins:category:autoSelect
.
Компоненты:
- Функции сервиса мониторинга статусов Kafka (
status monitor
) включены в состав сервиса исполнения запросов (query execution core
);status monitor
больше не поставляется как отдельный компонент системы. - Оптимизирована загрузка данных в партиции с помощью коннектора
Kafka Jet writer
: теперь данные сразу загружаются в датасорсы партиций, минуя датасорс партиционированной таблицы.
Партиционирование:
- Для запросов загрузки, вставки и удаления данных добавлено ограничение на одновременную запись данных в партиционированную таблицу и ее партиции. Параллельная запись данных напрямую в партиции остается доступной.
Другие изменения:
- Из процесса маршрутизации запросов на чтение и выгрузку удален неиспользуемый этап, который предполагал определение подкатегории запроса на основе количества задействованных узлов.
- Системное представление
information_schema.tables
расширено столбцомdefinition
с определением типа логической сущности. - Набор возможных типов физических таблиц расширен новым типом — таблицей, соответствующей прокси-таблице. Имя таблицы такого типа не имеет суффикса и полностью соответствует имени связанной прокси-таблицы.
- В список зарезервированных слов добавлены
proxy
иsys_<any_string>
.
Исправления
- Исправлена проблема запуска системы без брокера сообщений Kafka и коннекторов к СУБД.
- Исправлена проблема повторной активации тайм-аута на переподключение к ZooKeeper, приводившая к сложностям восстановления соединения с ZooKeeper.
- Исправлена ошибка в запросах к сущностям информационной схемы, имена которых начинаются на
SYS
.
Известные проблемы
- Недоступна одновременная загрузка данных из одного топика Kafka в разные таблицы ADG. Проблема наблюдается в версии 6.6 и более ранних версиях системы.
Новая функциональность, изменения и исправления связанных компонентов
Обновление документации
- Добавлены разделы:
- Сборка и развертывание минимальной конфигурации,
- Асинхронные запросы и операции,
- Прокси-таблица,
- CREATE PROXY TABLE,
- REST API > Статистика > Получение информации об асинхронных операциях,
- REST API > Статистика > Удаление информации об асинхронных операциях,
- Снятие блокировки DDL-запросов,
- Справочная информация > Поддержка SQL > Математические операции и функции;
- Раздел «Связи с другими системами и компонентами» переименован в «Компоненты системы и их связи».
- Удален раздел «Компоненты системы», так как он заменен разделом «Компоненты системы и их связи».
- Разделы с описанием HTTP-методов по управлению статистикой перегруппированы. Теперь все GET-методы по статистике описаны в одном разделе, а все POST-методы — в другом.
- Списки изменений компонентов сгруппированы в одной главе: раздел «Release Notes» утилиты перенесен из главы «Утилита DTM Tools» в главу «Release Notes».
Версия 6.5 (11.08.2023)
Версия 6.5 доступна в архиве.
Новая функциональность
Восстановление сбойных датасорсов
Добавлена возможность восстановления сбойного датасорса без остановки работы системы и других датасорсов хранилища данных. Пока на сбойном датасорсе проходят восстановительные работы, все запросы на чтение и запись данных распределяются по оставшимся датасорсам.
Восстановление датасорса выполняется с помощью трех новых команд:
DISABLE_DATASOURCE
— отключает сбойный датасорс;RECOVER_DATASOURCE
— восстанавливает схему и данные сбойного датасорса, используя резервный датасорса-источник, и при успешном восстановлении включает датасорс;ENABLE_DATASOURCE
— включает датасорс после ручного восстановления.
Материализованные представления на основе партиционированных таблиц
Для материализованных представлений добавлена поддержка партиционированных таблиц. Это означает, что теперь материализованное представление можно построить на базе SELECT-подзапроса к одной или нескольким партиционированным таблицам или их сочетании с другими таблицами.
SELECT-подзапрос представления, обращающийся к партиционированной таблице, должен однозначно определять одну из партиций этой таблицы.
Загрузка данных из Kafka с помощью внешних readable-таблиц
Добавлена альтернативная возможность загружать данные из топиков Kafka в датасорсы типа ADP — с помощью внешних readable-таблиц. Загрузка выполняется коннектором Kafka Jet writer и доступна только при его наличии в инсталляции.
Загрузка данных новым способом запускается той же командой и имеет те же требования к формату данных, что и загрузка данных с помощью внешней таблицы загрузки.
Кластеризация коннекторов на загрузку и выгрузку данных ADP
В систему добавлена поддержка кластера из нескольких коннекторов Kafka-Postgres reader
и Kafka-Postgres writer
с автоматической балансировкой нагрузки между коннекторами каждого типа. Теперь, если инсталляция содержит несколько коннекторов каждого типа, запросы на загрузку и выгрузку данных продолжают обрабатываться, пока в рабочем состоянии остается хотя бы один коннектор каждого типа.
Чтобы настроить работу Prostore с кластером коннекторов, укажите сетевые адреса хостов, на которых установлены эти коннекторы, для параметров конфигурации:
ADP_REST_START_LOAD_URL
,ADP_REST_STOP_LOAD_URL
,ADP_MPPW_CONNECTOR_VERSION_URL
,ADP_MPPR_QUERY_URL
,ADP_MPPR_CONNECTOR_VERSION_URL
.
Значения перечисленных параметров указываются в формате http://host_1:port_1,host_2:port_2,.../path_to_rest_method
. Например, параметр ADP_REST_START_LOAD_URL
может иметь значение http://server1:8096,server2:8096/newdata/start
.
Изменения
Конфигурация
- Значение параметра
ADB_MPPW_DEFAULT_MESSAGE_LIMIT
увеличено с 100 до 10000. - Добавлены секции параметров:
core.jet
— задает параметры работы коннекторов Kafka Jet writer;core.kafka.consumer
— задает параметры десериализации значений Kafka;springdoc
— задает пути до спецификации HTTP API системы Prostore.
- Для следующих параметров добавлена поддержка списка из нескольких коннекторов:
ADP_REST_START_LOAD_URL
,ADP_REST_STOP_LOAD_URL
,ADP_MPPW_CONNECTOR_VERSION_URL
,ADP_MPPR_QUERY_URL
,ADP_MPPR_CONNECTOR_VERSION_URL
.
HTTP API
- Запрос метода
/datamarts[/{datamart}]/query
расширен опциональным параметромmaxRowsToRead
, который передается в теле сообщения и задает максимальное количество строк, возвращаемых в ответе. - Ответ метода
/datamarts/{datamart}/entities/{entity}
, расширен опциональным параметромlastCn
. Параметр содержит номер последней операции записи, выполненной в сущности. - Ответ метода
/versions
расширен строкой с версией коннектора Kafka Jet writer.
Другие изменения
- Запрос
CREATE READABLE EXTERNAL TABLE
расширен ключевым словомFORMAT
и новыми параметрами ключевого словаOPTIONS
, предназначенными для создания внешней readable-таблицы для загрузки данных из брокера Kafka. - Запрос
INSERT SELECT FROM external_table
расширен поддержкой внешних readable-таблиц в качестве таблиц, определяющих параметры загрузки данных из топика Kafka. - Ответ
COMMIT DELTA
расширен полямиdelta_num
,cn_from
иcn_to
, содержащими информацию о номере дельты, а также о первой и последней операции записи в дельте. - Ответ
CHECK_VERSIONS
расширен строкой с версией коннектора Kafka Jet writer. - В физических таблицах СУБД ADB и ADP изменен формат имен индексов первичных ключей: теперь он не включает имя логической БД.
- В процесс отмены операции загрузки данных добавлена дополнительная проверка, что загрузка данных из Kafka остановлена перед отменой операции.
Исправления
- Исправлен конфликт номеров операций записи, который мог происходить при совпадении времени закрытия дельты и выполнения операции записи вне дельты.
- Исправлена ошибка в SELECT-запросах, возникавшая при наличии подзапроса с ключевым словом
WITH
. - Исправлена ошибка, возникавшая в СУБД ADQM при попытке переименовать логическую таблицу с помощью
ALTER TABLE RENAME
. - Для СУБД ADB и ADP исправлено переименование индексов в физических таблицах при переименовании логической таблицы с помощью
ALTER TABLE RENAME
.
Известные проблемы
- Недоступна одновременная загрузка данных из одного топика Kafka в разные таблицы ADG. Проблема наблюдается в версии 6.5 и более ранних версиях системы.
Новая функциональность, изменения и исправления связанных компонентов
Обновление документации
- Запрос
INSERT SELECT FROM upload_external_table
и соответствующий раздел переименованы вINSERT SELECT FROM external_table
, так как теперь запрос поддерживает загрузку с помощью двух видов внешних таблиц: таблицы загрузки и readable-таблицы. - Добавлены разделы:
- Как устроена система > Восстановление датасорсов,
- Как устроена система > Основные понятия > Резервный датасорсa,
- Работа с системой > Восстановление датасорса,
- Запросы SQL+ > DISABLE_DATASOURCE,
- Запросы SQL+ > RECOVER_DATASOURCE,
- Запросы SQL+ > ENABLE_DATASOURCE,
- Утилита DTM Tools.
- Расширены разделы:
- Датасорс — секциями «Действия с датасорсами» и «Состояния датасорсов».
- Внешняя таблица — описанием readable-таблиц, предназначенных для загрузки данных из брокера сообщений Kafka.
- Загрузка данных — инструкциями по загрузке данных с помощью readable-таблицы.
- CREATE READABLE EXTERNAL TABLE — параметрами и примером readable-таблицы, предназначенной для загрузки данных из брокера Kafka.
- Раздел «Настройка JSON-логов» расширен инструкцией и примером настройки plain-логов и переименован в «Настройка отображения логов».
- Раздел «Зарезервированные слова» дополнен списком слов, совпадающих с именами команд и ключевых слов системы.
Версия 6.4 (31.05.2023)
Версия 6.4 доступна в архиве.
Новая функциональность
Роли и полномочия
Доступ к запросам, доступным в системе, разграничен на основе ролей. Изменения касаются всех внешних интерфейсов: JDBC и HTTP.
Система предоставляет фиксированный набор ролей. Роли, используемые нодой Prostore по умолчанию, задаются в конфигурации ноды с помощью параметра CORE_DEFAULT_ROLES
. Если в системе включена аутентификация, для каждого отправителя запроса можно назначить свои роли с помощью значения атрибута roles
, заданного в авторизационном токене.
По умолчанию, если в конфигурации или авторизационном токене не определено иное, сохраняется прежнее поведение системы: все пользователи и внешние системы по умолчанию имеют полный доступ к Prostore.
Партиционирование данных
Для СУБД ADP добавлена возможность партиционирования данных. Партиционирование позволяет распределять данные на подмножества (партиции) и масштабировать данные как вертикально — в пределах одного датасорса, так и горизонтально — по разным датасорсам. Эффективное распределение данных по партициям позволяет увеличить скорость обработки запросов к партициям по сравнению с запросами, которые обращаются к полному набору данных.
Партиционирование данных реализуется с помощью логических таблиц новых видов — партиционированных таблиц и партиций. Подробнее о настройке см. в разделе «Управление партиционированием данных».
Логирование IP-адресов отправителей запросов
Добавлена возможность вывода IP-адресов отправителей запросов в JSON-логах системы. Вывод IP-адресов настраивается в logback.xml с помощью параметра clientIp
, как описано в разделе «Настройка JSON-логов».
Изменения
Добавлен параметр конфигурации CORE_DEFAULT_ROLES
, который задает список ролей, используемых при отсутствии информации о ролях в авторизационном токене или отсутствии аутентификации.
Известные проблемы
- Недоступна одновременная загрузка данных из одного топика Kafka в разные таблицы ADG. Проблема наблюдается в версии 6.4 и более ранних версиях системы.
Обновление документации
- Добавлены разделы:
- Как устроена система > Основные понятия > Партиционирование данных,
- Как устроена система > Основные понятия > Партиционированная таблица,
- Как устроена система > Основные понятия > Партиция,
- Как устроена система > Основные понятия > Нода Prostore (нода),
- Работа с системой > Управление партиционированием данных,
- Работа с системой > Подключение > Роли и полномочия,
- Как устроена система > Кластеризация Prostore,
- Запуск в эксплуатацию > Конфигурация > Конфигурация кластера,
- Справочная информация > Формат даты и времени в ответах REST API.
- Раздел «CREATE TABLE» расширен синтаксисом и примерами создания партиционированных таблиц и партиций.
- Раздел «Маршрутизация» расширен секциями с описанием маршрутизации запросов к партиционированным таблицам и партициям.
- Раздел «Настройка retention-правил» переименован в «Управление retention-правилами».
- Раздел «Конфигурация системы» переименован в «Конфигурация ноды».
Версия 6.3 (04.04.2023)
Версия 6.3 доступна в архиве.
Новая функциональность
Retention-правила
Добавлена возможность настраивать retention-правила для логических таблиц, согласно которым система будет периодически обрабатывать неактуальные версии данных с истекшим сроком хранения.
Доступные стратегии обработки неактуальных версий данных:
- остужение — перемещение данных в датасорс, выделенный для хранения холодных данных;
- удаление — окончательное удаление данных.
Retention-правила поддерживаются для СУБД ADB и ADP. Для каждого датасорса, где размещаются данные логической таблицы, можно настроить свое правило.
Подробнее о retention-правилах см. в разделе «Retention-правило», о настройке правил — в разделе «Управление retention-правилами».
Аутентификация
Добавлена возможность аутентифицировать все запросы по авторизационным токенам (JSON Web Token, также JWT). Для создания авторизационных токенов можно использовать любой авторизационный сервис, поддерживающий стандарт JWT, например Keycloak.
Аутентификация включается с помощью параметра конфигурации AUTH_JWKS_URI
.
Если аутентификация включена, каждый запрос должен содержать корректный авторизационный токен. В JDBC-запросах авторизационный токен передается как пароль пользователя, в HTTP-запросах — в заголовке типа Authorization
.
Подробнее об аутентификации запросов см. в разделе «Аутентификация».
Новые запросы
CHECK_JWKS
— обновляет кэш публичных ключей, используемый для проверки авторизационных токенов при аутентификации.ALTER TABLE ADD RETENTION
— добавляет retention-правило для существующей логической таблицы.ALTER TABLE DROP RETENTION
— удаляет retention-правило.
Материализованные представления ADP -> ADG
Добавлена возможность создавать материализованные представления в датасорсах типа ADG на основе данных датасорса типа ADP.
HTTP API-метод swagger-ui
В HTTP API добавлен метод swagger-ui
, возвращающий HTML-страницу с OpenAPI-спецификацией в формате Swagger UI.
Изменения
Конфигурация
- Добавлена секция
datacooling
, которая содержит параметры для управления неактуальными версиями данных согласно retention-правилам. - Добавлен параметр
AUTH_JWKS_URI
, который задает путь к API-методу авторизационного сервиса, возвращающему информацию о публичных ключах. Параметр используется, если включена аутентификация запросов по авторизационным токенам. - Значение параметра
ZOOKEEPER_DS_OPTIMISTIC_RETRY_COUNT
увеличено с 5 до 20.
Другие изменения
- Синтаксис
CREATE TABLE
расширен ключевым словомRETENTION
. - Ответ
GET_ENTITY_DDL
расширен информацией о retention-правилах. - В запросы HTTP API добавлен опциональный заголовок
Authorization
, используемый для передачи авторизационного токена. - В ответах HTTP API изменен формат метаданных логических сущностей.
- Добавлена возможность вывода идентификаторов пользователей-владельцев авторизационных токенов в JSON-логах системы. Вывод идентификаторов настраивается в logback.xml с помощью параметра
subjectId
. - Физическая схема данных расширена таблицами
<table_name>_history_<source>
, используемыми для хранения холодных данных. - Добавлен индекс на столбец
sys_to
физических таблиц*_actual
в СУБД ADB и ADP. - Изменен порядок обработки запросов к СУБД ADB: вместо алгоритма Round Robin теперь используется очередь, откуда запросы выбираются и обрабатываются в асинхронном режиме.
Исправления
- Ошибка в запросах
ALTER TABLE RENAME/DROP COLUMN IF EXISTS
иALTER TABLE RENAME IF EXISTS
при отсутствии целевого столбца/целевой таблицы. - Ошибка в запросах
ALTER TABLE ADD COLUMN IF NOT EXISTS
при наличии целевого столбца в таблице.
Известные проблемы
- Недоступна одновременная загрузка данных из одного топика Kafka в разные таблицы ADG. Проблема наблюдается в версии 6.3 и более ранних версиях системы.
Особенности миграции
- Невозможно обновление на версию 6.3 с предыдущих версий в горячем режиме: перед миграцией необходимо выключить все ноды Prostore.
Обновление документации
- Добавлены разделы:
- Основные понятия > Холодные данные,
- Основные понятия > Остужение данных,
- Основные понятия > Retention-правило,
- Основные понятия > Тип датасорса,
- Подключение > Аутентификация,
- Работа с системой > Настройка retention-правил,
- REST API > Swagger UI,
- Запросы SQL+ > CHECK_JWKS,
- Запросы SQL+ > ALTER TABLE ADD RETENTION,
- Запросы SQL+ > ALTER TABLE DROP RETENTION,
- Release notes.
- В раздел «Настройка JSON-логов» добавлены параметры
queryId
(идентификатор, полученный в HTTP-запросе) иsubjectId
(идентификатор владельца авторизационного токена). - Разделы «REST API» расширены примерами запросов с авторизационным токеном.
- Раздел
CREATE TABLE
расширен описанием ключевого словаRETENTION
. - Раздел «Подключение» > «Подключение с помощью SQL-клиента» расширен инструкциями по настройке подключения с указанием авторизационного токена.
- Раздел «Порядок перезапуска системы» удален.
Версия 6.2.1 (03.03.2023)
Версия 6.2.1 доступна в архиве.
- Исправлена ошибка при старте системы, связанная с JSON-логированием.
Версия 6.2 (14.02.2023)
Новая функциональность
COMMIT DELTA IMMEDIATE
Добавлена возможность закрыть дельту немедленно, не дожидаясь завершения активных операций записи дельты. Для этого запрос COMMIT DELTA
расширен ключевым словом IMMEDIATE
.
Ключевое слово IMMEDIATE
позволяет включить в дельту операции записи, начатые в этой дельте и выполненные в рамках непрерывного диапазона завершенных операций, и исключить из дельты все остальные операции — незавершенные и следующие по номерам за незавершенными.
Операции, исключенные из дельты, становятся отдельными операциями записи без метки времени. Исключенные операции получают свою метку времени при закрытии дельты, следующей после завершения этих операций. До установки метки времени те изменения данных, которые были внесены такими операциями, доступны в запросах на чтение и выгрузку данных при указании номеров операций.
Запрос COMMIT DELTA
без ключевого слова IMMEDIATE
работает так же, как и раньше: если все операции записи дельты завершены, дельта закрывается, иначе выдается ошибка.
Закрыть дельту запросом COMMIT DELTA
или COMMIT DELTA IMMEDIATE
можно, только если завершены все операции записи логической БД, начатые до этой дельты.
WITH в SELECT-запросах и подзапросах
Синтаксис SELECT-запроса расширен опциональным ключевым словом WITH
, которое позволяет использовать обобщенные табличные выражения (Common Table Expressions или CTE).
Ключевое слово доступно в запросах к СУБД ADB и ADP.
Ключевое слово WITH
доступно во всех видах SELECT-запросов и SELECT-подзапросов: в отдельных запросах на выборку данных, в подзапросах в составе DDL-запросов на создание логических и материализованных представлений, в подзапросах в составе INSERT SELECT
и т.д.
В табличных выражениях можно использовать любые поддерживаемые ключевые слова, в том числе FOR SYSTEM_TIME
, а также другие табличные выражения того же запроса. В табличных выражениях недоступно использование операторов, изменяющих данные: INSERT
, UPSERT
и DELETE
.
Рекурсивные и материализованные табличные выражения не поддерживаются.
SELECT-запросы и подзапросы без FROM
В SELECT-запросы и подзапросы добавлена возможность не указывать ключевое слово FROM
. Это может быть полезно, например, при вычислении выражений на основе констант.
Возможность доступна в СУБД ADB, ADP и ADQM. Подробнее см. в разделе «Поддержка SQL».
Материализованные представления ADP -> ADP и ADP1 -> ADP2
Добавлена возможность создавать материализованные представления в датасорсах типа ADP на основе данных того же или другого датасорса типа ADP.
INSERT SELECT из ADP1 в ADP2
Добавлена возможность вставки данных с помощью INSERT SELECT
из датасорса типа ADP в другой датасорс типа ADP.
Внешние таблицы в GET_ENTITY_DDL
Запрос GET_ENTITY_DDL
и API-метод /datamarts/{datamart}/entities/{entity}/ddl
теперь поддерживают все виды внешних таблиц: внешние таблицы загрузки и выгрузки, а также внешние readable- и writable-таблицы.
Ключевые слова IF EXISTS и IF NOT EXISTS в DDL-запросах
Опциональное ключевое слово IF NOT EXISTS
добавлено в запросы:
CREATE DATABASE
,CREATE TABLE
,CREATE MATERIALIZED VIEW
,CREATE DOWNLOAD EXTERNAL TABLE
,CREATE UPLOAD EXTERNAL TABLE
,CREATE WRITABLE EXTERNAL TABLE
,CREATE READABLE EXTERNAL TABLE
.
Опциональное ключевое слово IF EXISTS
добавлено в запросы:
DROP DATABASE
,ALTER VIEW
,DROP VIEW
,DROP DOWNLOAD EXTERNAL TABLE
,DROP UPLOAD EXTERNAL TABLE
,DROP WRITABLE EXTERNAL TABLE
,DROP READABLE EXTERNAL TABLE
.
Изменения
Опциональные ключи в запросах CREATE READABLE/WRITABLE EXTERNAL TABLE для ADB и ADP
Ключевые слова PRIMARY KEY
и DISTRIBUTED BY
, которые задают первичный ключ и ключ шардирования, стали опциональными в запросах CREATE READABLE EXTERNAL TABLE
и CREATE WRITABLE EXTERNAL TABLE
в случаях, когда связанная standalone-таблица размещается в ADB или ADP.
Также PRIMARY KEY
и DISTRIBUTED BY
по-прежнему опциональны при создании внешней таблицы, если связанная standalone-таблица уже существует в датасорсе.
Унификация имен датасорсов в GET_CHANGES и GET_ENTITY_DDL
В ответах GET_CHANGES
и GET_ENTITY_DDL
унифицировано написание имен датасорсов: теперь имя датасорса всегда возвращается в одинарных кавычках и в верхнем регистре (например, 'ADP'
), независимо от того, как оно было написано в оригинальном DDL-запросе.
Другие изменения
- В SELECT-запросах изменен порядок следования ключевых слов
OFFSET
иFETCH
; теперь используетсяOFFSET... FETCH...
. Прежний порядокFETCH... OFFSET...
не рекомендуется использовать, так как его поддержка может быть удалена в будущем. INSERT INTO download_external_table
теперь можно исполнять как параметризованный запрос.- В
UPSERT SELECT
добавлена проверка на наличие первичного ключа в запросе. - В секцию конфигурации
zookeeper
добавлен параметрZOOKEEPER_DS_MAX_SEQUENCE_SIZE
. - Добавлена возможность подключения системы к СУБД ADB и ADP, использующим аутентификацию SCRAM-SHA-256.
- Логи об ошибках ADB теперь включают текст ошибки, полученный от ADB.
Исправления
- Исправлена ошибка, которая в некоторых случаях приводила к утечке памяти при загрузке данных в СУБД ADP.
Обновление документации
- Раздел «COMMIT DELTA» расширен описанием ключевого слова
IMMEDIATE
. - Раздел «SELECT» расширен описанием ключевого слова
WITH
.
Версия 6.1.1 (13.01.2023)
Версия 6.1.1 доступна в архиве.
- Исправлена ошибка, возникавшая при загрузке данных в СУБД ADB.
Версия 6.1 (21.12.2022)
Новая функциональность
HTTP API
Добавлена возможность работать с системой по HTTP. HTTP API поддерживает отправку всех запросов SQL+, а также имеет выделенные методы для работы со схемой данных, дельтами, статистикой и компонентами.
INSERT SELECT ADB -> ADP
Добавлена возможность вставки данных из датасорса типа ADB в датасорс типа ADP с помощью INSERT SELECT
. Теперь вставка данных из датасорсов типа ADB возможна в датасорсы любого типа.
TRUNCATE ACTUAL и ERASE DELTA для ADG
Для ADG добавлена поддержка запросов TRUNCATE ACTUAL
и ERASE DELTA
. Теперь эти запросы доступны для всех поддерживаемых СУБД хранилища.
Изменения
Ответы
- Изменен состав ответа
CHECK_MATERIALIZED_VIEW
:- добавлен столбец
is_sync_lock_exists
; - удален столбец
sync_period
.
- добавлен столбец
- В ответ команды
CHECK_VERSIONS
и HTTP-метода/versions
добавлена строка с версией HTTP API. - Изменено форматирование в ответах
GET_ENTITY_DDL
,CHECK_MATERIALIZED_VIEW
,GET_CHANGES
иGET_WRITE_OPERATIONS
: теперь текст запроса, возвращаемый в ответе, включает переносы строк. Раньше текст запроса возвращался без переносов. - Изменено форматирование в ответе
SELECT... ESTIMATE_ONLY
: теперь текст обогащенного запроса содержит символы переноса строк\n
. Раньше текст запроса возвращался без этих символов. - Изменен формат даты, времени и метки в ответе
GET_WRITE_OPERATIONS
: теперь значения возвращаются как дата, время и метка времени соответственно, а не как целое число.
Удаленные ограничения
- Для
SELECT
,INSERT SELECT
иDELETE
удалено ограничение на символы переноса в условииWHERE
: теперь доступно сравнение со скалярными значениями строк, содержащими символы переноса строки. - Для
CHECK_SUM
удалено ограничение на количество столбцов сущности. - Для
TRUNCATE ACTUAL
иERASE DELTA
удалено ограничение, связанное с невозможностью удаления изменений, которые были добавлены отдельными операциями записи между указанной и предыдущей дельтами: теперь такие изменения также удаляются. - Для
ROLLBACK DELTA
удалено ограничение в ADG, связанное с отменой повторных изменений в рамках одной дельты: теперь запрос отменяет такие изменения. - Для
ROLLBACK DELTA
удалено ограничение, связанное с необходимостью повторения запроса: теперь запрос удаляет все записи за один вызов, повторный запуск запроса не требуется.
Статистика по логическим сущностям
- Изменено место хранения значений
ROWS_COUNT
иROWS_COUNT_DELTA
: теперь они хранятся в Zookeeper, а не на ноде, и не обнуляются при рестарте системы. - Оптимизирован алгоритм расчета
ROWS_COUNT
иROWS_COUNT_DELTA
: теперь при добавлении новой сущности значения по промежуточным дельтам не рассчитываются.
Работа с компонентами
- Добавлено восстановление соединения с Zookeeper в случае его потери.
- Механизм загрузки данных в ADG теперь использует параметр конфигурации
ADG_CONSUMER_GROUP
вместо настроек на стороне ADG.
Логи
- Добавлена возможность вывода идентификаторов HTTP-запросов в JSON-логах системы. Вывод идентификаторов настраивается в logback.xml с помощью параметра
queryId
. - В логи добавлена информация о датасорсах, где были выполнены запросы.
- Удален Logback.xml из JDBC-драйвера. На стороне внешних систем, использующих JDBC, следует отключить JDBC-логирование.
Другие изменения
- В секцию
zookeeper
добавлены параметрыZOOKEEPER_DS_CONNECTION_RETRY_COUNT
иZOOKEEPER_DS_OPTIMISTIC_RETRY_COUNT
. - Изменен расчет разницы между двумя явно заданными метками времени в функции
TIMESTAMPDIFF
: теперь для параметровDAY
,HOUR
иMINUTE
возвращается число полных дней/часов/минут без округления вверх. Например, выражениеTIMESTAMPDIFF(DAY, TIMESTAMP '2022-01-15 23:59:59', TIMESTAMP '2022-01-16 00:00:01')
теперь возвращает 0 вместо 1. - Изменен порядок обработки escape-последовательностей в запросах: теперь они сохраняются, а не удаляются.
Исправления
- Потеря соединения с Zookeeper.
GET_ENTITY_STATISTICS
для логических таблиц, созданных с указаниемLOGICAL_ONLY
.- Разница в работе функции
TIMESTAMP_DIFF
для разных СУБД. - Ошибка инициализации ADB.
ROLLBACK DELTA
для дельты, открытой после отдельной операции записи.- Сравнение в условии
WHERE
со строковой константой, содержащей символы новой строки.
Обновление документации
- Добавлены разделы:
- Работа с системой > Подключение > Подключение с помощью HTTP-клиента;
- Ограничения;
- Ограничения > Ограничения СУБД.
- Раздел «Ограничения системы» перемещен в раздел «Ограничения».
- Раздел «Запросы SQL+» вынесен из главы «Справочная информация» и оформлен отдельной главой.
Версия 6.0 (31.10.2022)
Версия 6.0 доступна в архиве.
Новая функциональность
Несколько СУБД одного типа
Добавлена возможность работы с несколькими СУБД одного типа. Каждый сервер или кластер СУБД теперь имеет свое имя, по которому к нему можно обратиться с помощью ключевого слова DATASOURCE_TYPE
, и свои параметры конфигурации.
В документации для обозначения сервера или кластера СУБД, находящегося в хранилище данных, введен термин «датасорс». Тип СУБД датасорса обозначается как «тип датасорса».
Изменение данных без дельт
Добавлена возможность загружать и обновлять данные без открытия дельты. Подробнее см. в разделе «Операция записи» > «Операции в дельте и вне дельты».
Новые запросы, функции и выражения
Запросы:
ALTER TABLE RENAME
,ALTER TABLE ADD COLUMN
,ALTER TABLE RENAME COLUMN
,ALTER TABLE DROP COLUMN
.
Функции:
TIMESTAMPADD
,TIMESTAMPDIFF
.
Выражения с FOR SYSTEM_TIME
, доступные при обращении к логическим таблицам:
FOR SYSTEM_TIME AS OF CN sys_cn
,FOR SYSTEM_TIME STARTED CN (sys_cn1, sys_cn2)
,FOR SYSTEM_TIME FINISHED CN (sys_cn1, sys_cn2)
.
CHECK_SUM и CHECK_SUM_SNAPSHOT для открытой дельты
Добавлена возможность рассчитывать контрольную сумму записей в открытой дельте с помощью запросов CHECK_SUM
и CHECK_SUM_SNAPSHOT
. Возможность доступна только для логических таблиц.
JVM-метрики
Добавлена поддержка JVM-метрик, собираемых с помощью Micrometer.
Подробнее о метриках см. в разделе «Запуск в эксплуатацию» > «Запрос JVM-метрик».
Изменения
Ограничения
- Для
ERASE DELTA
введено ограничение: перед указанной дельтой не должно быть операций записи, выполненных между этой и предыдущей дельтой. - Для
ROLLBACK DELTA
введено ограничение на исполнение в ADG: запрос не отменяет повторные изменения операции, совершенные в рамках одной дельты. - Для
TRUNCATE ACTUAL
удалено ограничение: теперь возможно удаление данных логической таблицы, с которой связано несинхронизированное материализованное представление.
Ответы
- Изменен ответ
CHECK_VERSIONS
: теперь имена компонентов, относящихся к датасорсам, возвращаются в формате<имя_датасорса>: <имя_компонента>
. - Изменены ответы на запросы загрузки и обновления данных: теперь вместо пустого объекта ResultSet возвращается ResultSet с одной строкой и столбцом, содержащим номер выполненной операции записи.
- Изменен ответ SELECT-запроса с ключевым словом
ESTIMATE_ONLY
: параметрplugin
переименован вdatasource
. - Изменены следующие строки в ответе
CHECK_DATA
:checksum for delta <delta_num> is OK
→checksum for operations for delta <delta_num> is OK
,checksum mismatch
→checksum for operations for delta <delta_num> mismatch
.
Входящие параметры
- В
ERASE DELTA
удалена поддержка метки времени; теперь в запросе можно указывать только номер дельты. - В DDL- и SELECT-запросах унифицированы значения
DATASOURCE_TYPE
: теперь значения рекомендуется указывать в одинарных кавычках; значения без кавычек и в двойных кавычках продолжают поддерживаться, но могут быть удалены в будущих версиях.
Логические типы данных
- Для типа
BIGINT
добавлен алиасINT64
. - Тип
INT32
переименован вINTEGER
и для него добавлен алиасINT32
. - Тип
INT
больше не используется, но пока продолжает поддерживаться.
Конфигурация
- В конфигурацию сервиса исполнения запросов и сервиса мониторинга статусов Kafka добавлена секция
prometheus
с параметромPROMETHEUS_ENABLED
. - В конфигурации ADB удален параметр
ADB_WITH_HISTORY_TABLE
. - В конфигурации ADG секции
tarantool
иdb
заменены на секциюdatasource
. - В конфигурации ADG удалена секция
circuitbreaker
. - Изменена секция
datasource
: теперь секция содержит массив элементов, каждый из которых — это набор параметров датасорса, включая секцииmppr
,mppw
иrollback
. - В секцию
datasource
добавлены параметрыname
иenv
.
Другие изменения
- Для
CHECK_DATA
изменена проверка по запросу без столбцов: теперь она выполняется так же, как по запросу со столбцами, — по контрольной сумме, а не количеству записей. - Расширена поддержка функций
CURRENT_DATE
,CURRENT_TIME
иCURRENT_TIMESTAMP
в СУБД ADB и ADP: теперь их можно указывать безCAST
.
Исправления
RESET_STATISTICS
без указания параметров.- Расчет количества запросов чтения в
GET_ENTITY_STATISTICS
для логических представлений на основеCOUNT
. - SELECT-запросы без указания алиасов логических представлений.
RETRY DELETE
для ADG.- Значения
sys_close_date
в ADQM для дат в далеком будущем. - Обновленные записи в материализованных представлениях.
- Признак nullable-столбца, возвращаемый среди метаданных по JDBC.
Известные проблемы
- В условии
WHERE
запросовSELECT
,INSERT SELECT
иDELETE
недоступно сравнение со скалярными значениями строк, содержащими символы переноса строки. Ограничение действует во всех версиях до 6.0 включительно. - В запросе
CHECK_SUM
недоступен расчет контрольной суммы для более чем 50 столбцов. Ограничение действует во всех версиях до 6.0 включительно.
Обновление документации
- Удалены понятия актуальных, горячих и архивных записей; вместо них теперь используется понятие «версия данных», номер версии соответствует номеру операции записи (см. раздел «История изменений данных»).
- Введено понятие датасорса, обозначающее сервер или кластер СУБД в хранилище данных.
- Добавлен раздел «Запрос JVM-метрик».
- Переработаны разделы:
- История изменений данных,
- Дельта,
- Операция записи,
- Версионирование данных.
Версия 5.8 (25.08.2022)
Версия 5.8 доступна в архиве.
Новая функциональность
- Запросы
RESET_STATISTICS
иSYNC
. - Загружаемый тип данных
uuid
.
Изменения
- Добавлены ограничения:
- недоступно параллельное выполнение запросов
ROLLBACK DELTA
; - недоступен расчет контрольной суммы в открытой дельте с помощью
CHECK_SUM
; - в псевдонимах (алиасах) сущностей и столбцов недоступны символы, отличные от латинских букв, цифр и символов подчеркивания.
- недоступно параллельное выполнение запросов
- Для SELECT-запросов удалена поддержка ключевого слова
COLLATE
. - В ответ
GET_ENTITY_STATISTICS
добавлены параметрыROWS_COUNT
иROWS_COUNT_DELTA
. - Добавлены параметры конфигурации:
CORE_STATISTICS_DATA_COUNT_ENABLED
,TARANTOOL_QUERY_REST_ENDPOINT
иDTM_DELTA_WATCHER_POOL_SIZE
.
Изменения в поддержке ADG
Для ADG теперь поддерживаются:
INSERT VALUES
,INSERT SELECT
иDELETE
;CHECK_SUM_SNAPSHOT
;CHECK_SUM
для логических представлений, основанных на данных ADG;- создание readable- и writable-таблиц, связанных со standalone-таблицами ADG, без поля
bucket_id
, а также запросы загрузки и чтения данных из таких readable- и writable-таблиц без указанияbucket_id
.
Для ADG не поддерживаются:
- соединения
NATURAL JOIN
,RIGHT JOIN
,LEFT JOIN
,FULL JOIN
иCROSS JOIN
; - ключевые слова
LIMIT
иOFFSET
; - функции и арифметические операторы.
Исправления
- Приведение значения к JDBC-типу в SELECT-запросах к внешним readable-таблицам, связанным с системной таблицей СУБД.
- Удаление кэша материализованного представления при удалении данных представления из некоторых СУБД.
- SELECT-запросы к внешним readable-таблицам, значение
LOCATION
которых указывает на имя логической БД в верхнем регистре. - Возврат ошибки по компоненту в ответе
CHECK_VERSIONS
при сбое компонента.
Известные проблемы
- Создание материализованных представлений на основе одной логической таблицы без группировки и агрегации данных поддерживается только в случае, если таблица и представление расположены в одной логической базе данных. Ограничение действует во всех версиях до 5.8 включительно.
Обновление документации
Добавлены разделы:
- Основные понятия > Операция по изменению схемы;
- Основные понятия > История изменений данных;
- О системе Prostore > Возможности системы;
- Справочная информация > Соглашения об именах.
Обновлены разделы:
- раздел «Дельта» расширен секцией «Работа с дельтами, закрытыми с датой и временем в будущем»;
- термины из раздела «Термины и определения» вынесены в раздел «Основные понятия» как отдельные страницы; раздел «Термины и определения» удален;
- раздел «Введение» переименован в «О системе Prostore» и переработан;
- раздел «Обзор понятий, компонентов и связей» переименован в «Как устроена система» и переработан;
- раздел «Эксплуатация» переименован в «Запуск в эксплуатацию»;
- рекомендации по использованию топиков Kafka вынесены из раздела «Внешняя таблица» в отдельный раздел — «Рекомендации по топикам Kafka».
Версия 5.7 (23.06.2022)
Версия 5.7 доступна в архиве.
Новая функциональность
- Запросы:
TRUNCATE ACTUAL
,ERASE DELTA
,GET_ENTITY_STATISTICS
;
- Материализованные представления ADB -> ADP.
Изменения
- Расширен список операций, хранящихся в журнале: теперь в нем также хранится информация об отмененных операциях.
- Расширен синтаксис запроса
GET_CHANGES
: теперь в запросе доступен флаг, который включает вывод отмененных операций. - В SELECT-запросах изменен порядок выбора записей:
- запросы без ключевого слова
FOR SYSTEM_TIME
теперь выбирают записи, актуальные по состоянию на последнюю дельту по текущему времени сервера; записи дельт, закрытых с будущими датой и временем, не возвращаются; - запросы к standalone-таблицам с выражениями
FOR SYSTEM_TIME STARTED IN
иFOR SYSTEM_TIME FINISHED IN
теперь всегда возвращают пустой результат (раньше эти выражения игнорировались).
- запросы без ключевого слова
- Обновлена конфигурация системы:
- для параметра
DTM_METRICS_SCOPE
удалено значениеrequests
, - секция
metrics
заменена на секциюstatistics
, - добавлен параметр
ADP_POOL_REQUEST_TIMEOUT
.
- для параметра
Исправления
- Выбор устаревших данных.
- Переключение между нодами ADQM при выполнении одной операции записи.
- Валидация значения
LOCATION
вCREATE READABLE EXTERNAL TABLE
иCREATE WRITABLE EXTERNAL TABLE
. - Синхронизация материализованных представлений со связанными логическими БД, чьи дельты закрыты с будущими датой и временем.
- Ошибка
ERASE_CHANGE_OPERATION is not an EDDL statement
. - Приведение BOOLEAN-значения к JDBC-типу в запросах
INSERT INTO
для ADQM. - Блокировка DDL-операций после выполнения
DROP TABLE
с указанием несуществующей СУБД.
Обновление документации
- Обновлен дизайн схем.
Версия 5.6.1 (07.06.2022)
Версия 5.6.1 доступна в архиве.
Изменения
- Удалено ограничение на одновременный запуск запросов на создание, изменение и удаление таблиц и представлений: теперь такие запросы попадают в очередь и обрабатываются по порядку.
- Добавлен параметр конфигурации
CORE_DDL_QUEUE_ENABLED
, включающий использование очереди операций по изменению логической схемы; чтобы вернуть прежнее поведение системы, установите значение параметра равнымfalse
.
Обновление документации
- Добавлен раздел «Основные понятия» > «Очередь операций по изменению схемы».
Версия 5.6 (19.05.2022)
Новая функциональность
- Материализованные представления на основе данных из разных логических БД.
- Ключевое слово
LISTAGG
, доступное в SELECT-запросах к ADB и ADP. - Расчет контрольной суммы по логическим представлениям с помощью
CHECK_SUM
иCHECK_SUM_SNAPSHOT
.
Изменения
- Синтаксис
CHECK_SUM_SNAPSHOT
расширен меткой времени, по состоянию на которую должна быть рассчитана контрольная сумма. - Для
DELETE
добавлена поддержка подзапросов и JOIN-соединений в условииWHERE
. - В SELECT-запросе изменен порядок выбора записей по ключевым словам
FOR SYSTEM_TIME STARTED IN
иFOR SYSTEM_TIME FINISHED IN
: теперь возвращается разница в состоянии данных между указанными дельтами, а не все версии записей за этот период. - Добавлено ограничение на имена столбцов логических таблиц и материализованных представлений: они не могут начинаться со служебных слов.
- Добавлен параметр конфигурации
ADB_MPPR_BUFFER_SIZE
.
Исправления
INSERT SELECT
с подзапросом, содержащий функцииCURRENT_DATE
,CURRENT_TIME
илиCURRENT_TIMESTAMP
иDATASOURCE_TYPE = 'ADB'
.FOR SYSTEM_TIME
для логических представлений.- Дубликаты записей при выполнении
INSERT VALUES
в ADQM. DELETE
в ADQM.DELETE
с алиасом в подзапросе.ERASE_WRITE_OPERATION
для отменяемых операций загрузки данных.- Материализованные представления, связанные с логическими таблицами в других логических БД.
Известные проблемы
- Есть небольшая вероятность кэширования шаблона запроса предыдущей дельты. Если это произошло, кэшированные запросы возвращают устаревшие данные до момента закрытия новой дельты или рестарта системы. Проблема существует во всех версиях до 5.6 включительно.
Обновление документации
- Переработан раздел «Запросы SQL+»: запросы разделены по категориям, и для каждого запроса добавлено краткое описание.
- Дополнен список ограничений в разделе «Ограничения системы» и справочнике запросов: ограничения, встречавшиеся в блоках примечаний, теперь вынесены в явном виде в список ограничений.
Версия 5.5 (06.04.2022)
Версия 5.5 доступна в архиве.
Новая функциональность
- Возможность работать со standalone-таблицами — таблицами, которые не относятся к логической и физической схемам данных.
- Новые сущности, предназначенные для работы со standalone-таблицами: внешняя writable-таблица и внешняя readable-таблица.
- Запросы:
- запросы по управлению внешними writable- и readable-таблицами:
CREATE WRITABLE EXTERNAL TABLE
;DROP WRITABLE EXTERNAL TABLE
;CREATE READABLE EXTERNAL TABLE
;DROP READABLE EXTERNAL TABLE
;
ERASE_CHANGE_OPERATION
;ERASE_WRITE_OPERATION
.
- запросы по управлению внешними writable- и readable-таблицами:
Изменения
- Синтаксис
CREATE UPLOAD EXTERNAL TABLE
расширен ключевым словомOPTIONS
; значениеauto.create.sys_op.enable=false
ключевого слова позволяет создать таблицу, предназначенную для загрузки в standalone-таблицу. - Изменен способ возобновления операций по обновлению данных: теперь нужно повторить исходный запрос, добавив в его начало ключевое слово
RETRY
, а повторение запроса без ключевого слова не возобновляет обработку операции. - Добавлены параметры конфигурации
TARANTOOL_DB_SYNC_BUFFER_SIZE
иADQM_BUFFER_SIZE
.
Исправления
DROP TABLE
с указанием СУБД для таблицы, связанной с логическими или материализованными представлениями в другой СУБД.- Формат поля
changeDateTime
в сигнальном топике Kafka. - Порядок столбцов ключа шардирования для логических таблиц в системных представлениях
INFORMATION_SCHEMA
. - Исполнение
DROP TABLE
иDROP MATERIALIZED VIEW
для сущностей других типов.
Обновление документации
- Добавлены разделы:
- Работа с системой > Управление операциями;
- Справочная информация > Формат сообщений в сигнальном топике Kafka.
- Запрос
INSERT INTO logical_table
переименован в справочнике запросов вINSERT SELECT FROM upload_external_table
. Переименование связано с тем, что теперь запрос позволяет загружать данные не только в логические таблицы, но и в standalone-таблицы; синтаксис запроса не изменился, изменилось только имя запроса в документации. - Раздел «Разбор ошибок загрузки и обновления данных» переименован в «Причины ошибок при загрузке и обновлении данных» и перенесен в главу «Справочная информация»; информация об обработке операций записи вынесена в новый раздел «Управление операциями».
Версия 5.4 (21.02.2022)
Версия 5.4 доступна в архиве.
Новая функциональность
Запросы:
UPSERT VALUES
,CHECK_SUM_SNAPSHOT
.
Изменения
- Начало строки подключения изменено с
jdbc:adtm
наjdbc:prostore
. - Запрос
UPSERT VALUES
переименован вINSERT VALUES
, запросUPSERT SELECT
— вINSERT SELECT
. - Конфигурация:
- добавлен параметр
KAFKA_STATUS_EVENT_TOPIC
; - изменены значения по умолчанию:
- параметр
ADQM_DB_NAME
теперь имеет значение по умолчаниюdefault
; - параметр
ADQM_CLUSTER
теперь имеет значение по умолчаниюdefault_cluster
; - значения параметра
ADQM_SHARDING_EXPR
изменены сcityHash64
иintAdd
наCITY_HASH_64
иINT_ADD
соответственно;
- параметр
- начало путей
io.arenadata
во всех вхождениях заменено наru.datamart
.
- добавлен параметр
- Добавлено ограничение на имена логических сущностей и их столбцов: имя должно начинаться с латинской буквы, после первого символа могут следовать латинские буквы, цифры и символы подчеркивания в любом порядке.
- Изменен ответ
GET_CHANGES
в случае отсутствия журнала: теперь возвращается пустой объект ResultSet, а не ошибка.
Исправления
- Приведение
INT
-BOOLEAN
в JOIN-соединениях запросаCREATE MATERIALIZED VIEW
. - Возможность создания нескольких дельт в одну секунду.
GET_ENTITY_DDL
для системных представленийINFORMATION_SCHEMA
.- Агрегация данных с помощью
COUNT
в запросах на выгрузку из ADQM. - Тип данных
UUID
в условии типаWHERE uuid_col IN ('uuid_value')
. - Обработка некорректного имени поля в топике Kafka.
- Агрегационные запросы к логическим таблицам, размещенным в ADQM и имеющим первичный ключ типа
UUID
. - Ошибка при определении категории и подкатегории SELECT-запроса.
- JDBC-сериализация значений
NULL
.
Обновление документации
- Добавлены неучтенные ранее параметры конфигурации для ADG:
TARANTOOL_VERTX_WORKERS
,TARANTOOL_DB_SYNC_CONNECTION_TIMEOUT
,TARANTOOL_DB_SYNC_READ_TIMEOUT
иTARANTOOL_DB_SYNC_REQUEST_TIMEOUT
. - Локализация статуса 2 операции записи изменена с «Ошибка» на «Отменяется».
- Имя логической базы данных в примерах изменено с
sales
наmarketing
.
Версия 5.3 (14.01.2022)
Версия 5.3 доступна в архиве.
Новая функциональность
- Материализованные представления ADB -> ADQM;
- Вставка данных из ADB в ADQM с помощью
UPSERT SELECT
; - Запросы:
CHECK_MATERIALIZED_VIEW
;DENY_CHANGES
;ALLOW_CHANGES
;GET_CHANGES
;GET_ENTITY_DDL
.
- Перезапуск незавершенных операций по обновлению данных.
- Журнал DDL-операций.
- Выбор оптимальной СУБД хранилища при выгрузке данных.
Изменения
- Удалено требование на целочисленные ключи шардирования в логических таблицах: теперь ключ может содержать столбцы с любыми типами данных.
- В системное представление
tables
добавлен новый тип сущности —MATERIALIZED VIEW
. - Конфигурация системы:
- добавлен параметр
ADQM_SHARDING_EXPR
; - добавлен параметр
ADB_MPPW_USE_ADVANCED_CONNECTOR
; - удален параметр
EDML_DATASOURCE
; - исправлен путь до параметра
ADB_WITH_HISTORY_TABLE
сadb:mppw:with-history-table
наadb:with-history-table
; - исправлен путь до параметров
ADG_MAX_MSG_PER_PARTITION
иADG_CB_FUNC_IDLE
: из пути удален параметрkafka
.
- добавлен параметр
Исправления
- Дублирование параметров в
CONFIG_SHOW
. - Первичные ключи с типом
DATE
в ADQM. - Проблемы SELECT-запросов:
- Обработка
IN
. - Сравнение с константами в условии
WHERE
. - Разница в количестве параметров между запросом и шаблоном.
LIMIT
в подзапросах.- Дублирование алиаса сущности в подзапросе.
- Обработка
- Параметризованный запрос (prepared statement) с динамическими и статическими типами данных.
- Создание логического представления с ключевым словом
DATASOURCE_TYPE
. - Пересоздание материализованного представления с тем же именем.
- Ошибка инициализации при наличии в хранилище только СУБД ADP.
UPSERT SELECT
без списка столбцов целевой таблицы.- Отсутствие ошибки в SELECT-запросе с ключевым словом
ORDER BY
, указанным послеDATASOURCE_TYPE
. RESUME_WRITE_OPERATIONS
для операций в ADQM.- Значения, возвращаемые запросом
GET_WRITE_OPERATIONS
дляUPSERT VALUES
. CHECK_TABLE
для ADQM.- Отображение записей открытой дельты в материализованных представлениях, размещенных в ADQM.
- Расположение исторических записей в ADQM после
UPSERT VALUES
.
Обновление документации
- Добавлены разделы:
- Справочная информация > Зарезервированные слова — содержит список слов, которые не могут использоваться как имена сущностей и имена полей;
- Справочная информация > Ограничения системы — содержит список всех ограничений, имеющихся в запросах системы.
- Из описания запроса
CREATE TABLE
удалено неподдерживаемое ключевое словоDEFAULT
. - Изменена терминология: архивация актуальных записей теперь называется удалением, а удаление записей с помощью запроса
TRUNCATE HISTORY
— удалением записей с историей.
Версия 5.2 (26.10.2021)
Версия 5.2 доступна в архиве.
Новая функциональность
- Запросы обновления данных — альтернатива загрузке для небольших объемов данных:
UPSERT VALUES
;UPSERT SELECT
;DELETE
.
- Другие запросы:
CONFIG_SHOW
;GET_WRITE_OPERATIONS
;RESUME_WRITE_OPERATION
.
- Ключевое слово
COLLATE
, доступное в SELECT-запросах к ADG. - Выгрузка данных из материализованных представлений.
Изменения
- Изменена маршрутизация SELECT-запросов: теперь учитывается не только категория запроса, но и набор узлов кластера, для которых предназначен запрос.
- Ограничено исполнение запросов по управлению схемой данных в сервисной базе данных
INFORMATION_SCHEMA
. - Изменен перечень операций, отменяемых запросом
ROLLBACK DELTA
: отменяются все завершенные операции (как операции загрузки данных, так и обновления данных), а также незавершенные операции загрузки данных; незавершенные операции обновления данных не отменяются. - Конфигурация:
- добавлены параметры
AUTO_RESTORE_STATE
,ADB_MAX_RECONNECTIONS
,ADB_QUERIES_BY_CONNECT_LIMIT
иADB_RECONNECTION_INTERVAL
; - добавлена секция параметров
autoSelect
для настройки порядка выбора СУБД в зависимости от категории и подкатегории запросов; - удален параметр
CORE_TIME_ZONE
(больше не используется); - путь к параметру
DTM_METRICS_PORT
изменен сmanagement.server.port
наserver.port
; - путь к параметру
DTM_CORE_METRICS_ENABLED
изменен сcore.metrics.isEnabled
наcore.metrics.еnabled
.
- добавлены параметры
Исправления
- Микросекунды в условии
WHERE
в SELECT-запросах. RIGHT JOIN
со значениямиNULL
в запросах на выгрузку данных.- Кириллица в условии
WHERE
запросовCREATE VIEW
иALTER VIEW
.
Обновление документации
- Добавлены разделы:
- Работа с системой > Обновление данных;
- Работа с системой > Другие действия > Разбор ошибок загрузки и обновления данных;
- Обзор понятий, компонентов и связей > Связи с другими компонентами и системами > Порядок обработки запросов на обновление данных;
- Эксплуатация > Конфигурация > Конфигурация коннекторов.
- Описание конфигурационных параметров системы перенесено из раздела «Конфигурация» в раздел «Конфигурация системы».
- Имя системы заменено на
Prostore
в соответствии с именем проекта с открытым исходным кодом. - Скорректировано описание служебного поля
sys_op
: поле должно отсутствовать во внешней таблице загрузки и логической таблице и должно присутствовать в загружаемых сообщениях топика Kafka.
Версия 5.1 (27.08.2021)
Версия 5.1 доступна в архиве.
Новая функциональность
- Ключевое слово
ESTIMATE_ONLY
, доступное в SELECT-запросах. - Ключевое слово
LOGICAL_ONLY
, доступное в запросах на создание и удаление логических БД, логических таблиц и материализованных представлений.
Изменения
CHECK_DATA
иCHECK_SUM
:- добавлен коэффициент нормализации, повышающий максимально допустимое количество записей в проверяемых дельтах;
- изменен расчет контрольных сумм: теперь они считаются по дельтам, а не отдельным операциям записи.
CHECK_SUM
:- изменен расчет контрольной суммы по таблице и представлению: теперь он аналогичен расчету, который выполняется для
CHECK_DATA
; - изменен расчет контрольной суммы по логической БД: теперь контрольные суммы таблиц складываются, а не проходят дополнительный этап хеширования.
- изменен расчет контрольной суммы по таблице и представлению: теперь он аналогичен расчету, который выполняется для
- Добавлен параметр конфигурации
DTM_VERTX_BLOCKING_STACKTRACE_TIME
;
Исправления
- Имена и размер логических типов данных
CHAR
иUUID
вINFORMATION_SCHEMA
. - Выгрузка данных с
LIMIT
. - Обогащение запроса на чтение данных для ADQM.
JOIN
в запросах на чтение данных из ADQM.- Запрос
CONFIG_STORAGE_ADD
. - Календарь в JDBC-методах
getDate
,getTime
иgetTimestamp
. - Обновление столбца
table_datasource_type
в системном представленииINFORMATION_SCHEMA.TABLES
после удаление логической таблицы из СУБД. - Назначение категории «Другой запрос» (Undefined) для SELECT-запросов.
Обновление документации
Добавлены разделы:
- Сборка и развертывание;
- Работа с системой > Другие действия > Получение информации о SELECT-запросе;
- Работа с системой > Другие действия > Проверка месторасположения логической сущности;
- Эксплуатация > Часовые пояса системы и компонентов.
Версия 5.0 (12.08.2021)
Новая функциональность
- СУБД хранилища нового типа — ADP — на основе PostgreSQL.
- Выгрузка данных из указанной СУБД хранилища.
- Расчет контрольной суммы по материализованному представлению с помощью
CHECK_SUM
.
Изменения
- В системное представление
tables
добавлен столбецtable_datasource_type
. - Конфигурация:
- добавлены параметры для управления СУБД ADP;
- добавлены параметры запроса prepared statement для СУБД ADB:
ADB_PREPARED_CACHE_MAX_SIZE
,ADB_PREPARED_CACHE_SQL_LIMIT
иADB_PREPARED_CACHE
; - в список значений следующих параметров добавлена СУБД ADP:
CORE_PLUGINS_ACTIVE
,DTM_CORE_PLUGINS_RELATIONAL
,DTM_CORE_PLUGINS_ANALYTICAL
,DTM_CORE_PLUGINS_DICTIONARY
,DTM_CORE_PLUGINS_UNDEFINED
; - добавлен параметр
DTM_LOGGING_LEVEL
для управления уровнем логирования; - конкретные IP-адреса заменены на
localhost
.
Исправления
- Ключевое слово
IN
с количеством элементов более 20.
Обновление документации
- Добавлен раздел «Эксплуатация» > «Схемы развертывания».
Версия 4.1 (26.07.2021)
Версия 4.1 доступна в архиве.
Новая функциональность
- Ключевое слово
OFFSET
, доступное в SELECT-запросах. - Ключевое слово
FETCH NEXT <N> ROWS ONLY
как полная альтернатива ключевому словуLIMIT <N>
в SELECT-запросах.
Изменения
ROLLBACK DELTA
: теперь запрос отменяет как завершенные, так и выполняемые операции записи.- Конфигурация:
- значение параметра
ADB_EXECUTORS_COUNT
изменено с 20 на 3; - значение параметра
ADB_MAX_POOL_SIZE
изменено с 5 на 3; - добавлен параметр
DELTA_ROLLBACK_STATUS_CALLS_MS
.
- значение параметра
Версия 4.0 (12.07.2021)
Новая функциональность
- Материализованные представления ADB -> ADG.
Изменения
- Добавлены параметры конфигурации, управляющие материализованными представлениями:
MATERIALIZED_VIEWS_SYNC_PERIOD_MS
,MATERIALIZED_VIEWS_RETRY_COUNT
,MATERIALIZED_VIEWS_RETRY_COUNT
.
Исправления
- Ошибка
FDW server already exists
при загрузке данных. - Метаданные, возвращаемые для логических типов
LINK
иUUID
. - Работа SELECT-запросов с
COUNT
иLIMIT
/FETCH NEXT N ROWS ONLY
. - Загрузка данных в логические таблицы, размещенные в ADQM и имеющие первичный ключ со столбцом типа
INT32
.
Обновление документации
Добавлены разделы:
- Справочная информация > Форматы даты и времени в запросах;
- Работа с системой > Управление схемой данных > Проверка наличия логической сущности;
- Эксплуатация > Настройка JSON-логов.
Версия 3.7.3 (30.06.2021)
Версия 3.7.3 доступна в архиве.
Новая функциональность
- Запрос
ROLLBACK CRASHED_WRITE_OPERATIONS
.
Изменения
Конфигурация:
- в секцию
vertx.pool
добавлены параметрыDTM_CORE_WORKER_POOL_SIZE
иDTM_CORE_EVENT_LOOP_POOL_SIZE
; - путь к параметру
ADB_MAX_POOL_SIZE
изменился сadb.maxSize
наadb.poolSize
; - в секцию
adb
добавлен параметрADB_EXECUTORS_COUNT
.
Обновление документации
- Доработаны разделы
CHECK_DATA
иCHECK_SUM
: описаны алгоритм и пример расчета контрольной суммы. - Уточнено описание формата загрузки и формата выгрузки данных.
- В разделе «Минимальные системные требования» версия ADG обновлена до 2.7.2.