Release notes

Содержание раздела
  1. Версия 6.9 (02.05.2024)
    1. Новая функциональность
    2. Изменения
    3. Исправления
    4. Дополнительные действия при обновлении
    5. Новая функциональность, изменения и исправления связанных компонентов
  2. Версия 6.8.1 (21.02.2024)
  3. Версия 6.8 (13.02.2024)
    1. Новая функциональность
    2. Изменения
    3. Исправления
    4. Дополнительные действия при обновлении
    5. Новая функциональность, изменения и исправления связанных компонентов
  4. Версия 6.7 (22.11.2023)
    1. Новая функциональность
    2. Изменения
    3. Исправления
    4. Известные проблемы
    5. Дополнительные действия при обновлении
    6. Новая функциональность, изменения и исправления связанных компонентов
  5. Версия 6.6 (04.10.2023)
    1. Новая функциональность
    2. Изменения
    3. Исправления
    4. Известные проблемы
    5. Новая функциональность, изменения и исправления связанных компонентов
  6. Версия 6.5 (11.08.2023)
    1. Новая функциональность
    2. Изменения
    3. Исправления
    4. Известные проблемы
    5. Новая функциональность, изменения и исправления связанных компонентов
  7. Версия 6.4 (31.05.2023)
    1. Новая функциональность
    2. Изменения
    3. Известные проблемы
  8. Версия 6.3 (04.04.2023)
    1. Новая функциональность
    2. Изменения
    3. Исправления
    4. Известные проблемы
    5. Особенности миграции
  9. Версия 6.2.1 (03.03.2023)
  10. Версия 6.2 (14.02.2023)
    1. Новая функциональность
    2. Изменения
    3. Исправления
  11. Версия 6.1.1 (13.01.2023)
  12. Версия 6.1 (21.12.2022)
    1. Новая функциональность
    2. Изменения
    3. Исправления
  13. Версия 6.0 (31.10.2022)
    1. Новая функциональность
    2. Изменения
    3. Исправления
  14. Известные проблемы
  15. Версия 5.8 (25.08.2022)
    1. Новая функциональность
    2. Изменения
    3. Исправления
  16. Известные проблемы
  17. Версия 5.7 (23.06.2022)
    1. Новая функциональность
    2. Изменения
    3. Исправления
  18. Версия 5.6.1 (07.06.2022)
  19. Версия 5.6 (19.05.2022)
    1. Новая функциональность
    2. Изменения
    3. Исправления
    4. Известные проблемы
  20. Версия 5.5 (06.04.2022)
    1. Новая функциональность
    2. Изменения
    3. Исправления
  21. Версия 5.4 (21.02.2022)
    1. Новая функциональность
    2. Изменения
    3. Исправления
  22. Версия 5.3 (14.01.2022)
    1. Новая функциональность
    2. Изменения
    3. Исправления
  23. Версия 5.2 (26.10.2021)
    1. Новая функциональность
    2. Изменения
    3. Исправления
  24. Версия 5.1 (27.08.2021)
    1. Новая функциональность
    2. Изменения
    3. Исправления
  25. Версия 5.0 (12.08.2021)
    1. Новая функциональность
    2. Изменения
    3. Исправления
  26. Версия 4.1 (26.07.2021)
    1. Новая функциональность
    2. Изменения
  27. Версия 4.0 (12.07.2021)
    1. Новая функциональность
    2. Изменения
    3. Исправления
  28. Версия 3.7.3 (30.06.2021)
    1. Новая функциональность
    2. Изменения

Даунгрейд на более старую версию Prostore не поддерживается.

Допустимо объединять в кластер только одинаковые версии Prostore.

Версия 6.9 (02.05.2024)

Новая функциональность

  • Запрос UPDATE для обновления значений столбцов таблицы.
  • Указание логического типа Avro link при выгрузке значений типа LINK из СУБД ADB, ADP и ADQM.
  • Обновление записей standalone- и прокси-таблиц, размещенных в ADP, с помощью функции загрузки данных из Kafka.
  • Возврат данных HTTP-методом query в Avro-формате.

Изменения

HTTP-метод query:

  • Расширен формат URL:
    • список значений параметра format расширен новыми значениями для работы с Avro-форматом;
    • добавлен параметр compressionLevel.
  • Изменено тело запроса:
    • добавлены параметры fetchSize и fetchTimeoutMs;
    • для параметра maxRowsToRead изменен порядок обработки нулевого и отрицательных значений, а также добавлено возможное значение null.

JDBC-драйвер:

  • JDBC-драйвер расширен поддержкой методов по управлению курсорами СУБД.
  • Изменен порядок обработки тайм-аута Statement.setQueryTimeout с времени получения полного ответа на время начала получения ответа.
  • Изменен порядок работы JDBC-драйвера с сервисом исполнения запросов:
    • взаимодействие этих компонентов переведено на публичный HTTP API (с закрытого HTTP API) по протоколу HTTP/2 в Avro-формате;
    • добавлена возможность выбора формата обмена данными между этими компонентами.
  • Добавлена возможность задавать максимальное количество запросов, синхронно исполняемых в одном подключении.

Конфигурация:

  • Добавлены параметры:
    • ZOOKEEPER_KAFKA_CONNECTION_RETRY_COUNT,
    • ZOOKEEPER_DS_WRITE_OPTIMISTIC_RETRY_COUNT,
    • KAFKA_JET_RETRY_COUNT,
    • ADP_MPPW_CONNECTOR_RETRY_COUNT,
    • ADP_MPPR_CONNECTOR_RETRY_COUNT,
    • 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 при выгрузке данных.
  • Улучшена стабильность работы компонентов при проблемах с сетевой инфраструктурой.

Исправления

  • Исправлена ошибка, возникавшая при использовании функции TIMESTAMPDIFF для данных ADQM.
  • Исправлено некорректное логирование ошибки, возникавшей при обработке retention-правил, как успешного результата.
  • Исправлен расчет статистики для асинхронных запросов по HTTP API.
  • Исправлен механизм проверки количества загруженных записей из Kafka, из-за которого операция могла считаться успешной при загрузке разного количества записей в целевые датасорсы.
  • Исправлен некорректный возврат дубликатов записей при запросе к партиционной таблице с неравномерно разложенными данными.
  • Исправлена ошибка, приводившая к невозможности выполнения RETRY INSERT SELECT в виде preparedStatement в случаях, если в SELECT-подзапросе было указано ключевое слово DATASOURCE_TYPE.

Дополнительные действия при обновлении

При обновлении с версии ниже 6.7 на версию 6.9 выполните все действия по обновлению, указанные для версии 6.7.

Новая функциональность, изменения и исправления связанных компонентов

  • Версия 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.

Версия 6.8.1 (21.02.2024)

  • Исправлена ошибка, возникавшая при исполнении SELECT-запросов с выражением FOR SYSTEM_TIME STARTED/FINISHED для standalone-таблиц с помощью preparedStatement (включая параметризованный запрос REST API).

Версия 6.8 (13.02.2024)

Новая функциональность

  • Запросы:
    • CREATE INDEX,
    • DROP INDEX,
    • GET_INDEXES.
  • Режим работы кластера с автоматически выбираемым лидером.
  • INSERT SELECT ADP → ADG.
  • Материализованные представления с источником и приемником в одном датасорсе.
  • Чтение и выгрузка данных из всех задействованных партиций партиционированной таблицы.

Изменения

Формат запросов:

  • Для запроса CREATE MATERIALIZED VIEW добавлена возможность не указывать ключевое слово DATASOURCE_TYPE с датасорсом-источником.

Формат ответов:

  • Ответы запросов на загрузку и обновление данных расширены столбцом rowsAffected.
  • Массив в столбце 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 в сигнальном топике Kafka расширен список полей и добавлена поддержка внешних таблиц.
  • Для событий WRITE_OK в сигнальном топике Kafka добавлена регистрация количества затронутых строк таблицы в поле rowsAffected.

Конфигурация:

  • Добавлен параметр KAFKA_STATUS_EVENT_EXTERNAL_DDL_ENABLED.
  • Добавлены секции параметров pnode и webclient.
  • Удалены параметры ADG_WEB_CLIENT_MAX_POOL_SIZE и ADQM_WEB_CLIENT_MAX_POOL_SIZE.

ROLLBACK DELTA:

  • Для ROLLBACK DELTA добавлена возможность откатывать дельту при наличии незавершенных операций записи, начатых до открытой дельты.
  • Для ROLLBACK DELTA добавлена блокировка новых операций записи во время отката дельты.

Другие изменения:

  • Изменен порядок запуска некоторых процессов в кластере: теперь в режиме работы кластера, действующем по умолчанию, синхронизацией материализованных представлений и расчетом значения ROWS_COUNT в статистике занимается только нода-лидер.
  • Для команд RESUME_WRITE_OPERATION, ROLLBACK CRASHED_WRITE_OPERATIONS, ERASE_WRITE_OPERATION и ROLLBACK DELTA добавлена возможность прерывать выполняемые операции загрузки данных в СУБД ADB.
  • Для команд ALTER TABLE ... добавлена возможность изменять логические таблицы при наличии в них завершенных операций записи, выполненных в открытой дельте.
  • Команды ENABLE_DATASOURCE, DISABLE_DATASOURCE и DROP DATABASE расширены механизмом, повторяющим попытку обновления динамической конфигурации в ZooKeeper в случае внутренней ошибки.
  • Команда ERASE DELTA расширена механизмом, перезапускающим синхронизацию материализованных представлений, которые принадлежат целевой логической БД, но построены на данных других логических БД, начиная с нулевой дельты.
  • Лог-сообщения по обработке данных согласно retention-правилам расширены идентификаторами незавершенных операций записи, препятствующих запуску retention-правил.
  • Для функции, вычисляющей контрольную сумму в командах CHECK_DATA, CHECK_SUM и CHECK_SUM_SNAPSHOT, удалено свойство LEAKPROOF.
  • Изменен текст ошибки для запросов вида <таблица,_не_существующая_в_датасорсе_исполнения_запроса> 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.26.0.
  • Обновлены версии следующих коннекторов: Kafka-Postgres reader, Kafka-Postgres writer и Kafka Jet writer.

Версия 6.7 (22.11.2023)

Новая функциональность

  • Запросы:
    • GET_CN,
    • ENABLE_STATISTICS_ROWS_COUNT,
    • DISABLE_STATISTICS_ROWS_COUNT.
  • Выражения FOR SYSTEM_TIME STARTED TS (datetime1, datetime2) и FOR SYSTEM_TIME FINISHED TS (datetime1, datetime2) в SELECT-запросах.
  • Типы событий WRITE_OK и WRITE_CANCEL в сигнальном топике Kafka.
  • Доступность записей, добавленных и удаленных вне дельты, сразу после завершения операций записи.
  • Оптимизированный инкрементальный расчет ROWS_COUNT и ROWS_COUNT_DELTA в статистике по логическим сущностям.

Изменения

Формат ответов:

  • Из ответов GET_DELTA_* и COMMIT DELTA удален столбец cn_to.
  • Ответы запросов на загрузку и обновление данных расширены столбцом ts.
  • Из ответа CHECK_VERSIONS удалена информация о коннекторе Kafka-Greenplum reader (PXF).

HTTP API:

  • Добавлены поля id, lastTs, lastTslogPage, statisticsRowsCountEnabled и historyInTslogOnly в ответ /datamarts/{datamart}/entities/{entity};
  • Поле writeOperationsFinished.cnList в ответах /datamarts/{datamart}/deltas/latest и /datamarts/{datamart}/deltas/latest_hot преобразовано из списка значений в список объектов.
  • Удалено поле cnTo из ответов методов по дельтам.

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

  • Удалено ограничение в COMMIT DELTA IMMEDIATE на отсутствие незавершенных операций записи, начатых до открытия дельты.
  • Добавлена возможность запуска системы при недоступности некоторых или всех СУБД хранилища.
  • Добавлено ограничение на RECOVER_DATASOURCE при наличии открытой дельты или незавершенных операций записи.
  • Добавлено ограничение на UPSERT VALUES с внешней writable-таблицей без первичного ключа.

Конфигурация:

  • Добавлена секция параметров tslog.
  • Добавлен параметр KAFKA_STATUS_EVENT_WRITE_OPERATIONS_ENABLED.
  • Добавлен параметр CORE_STATISTICS_DATA_COUNT_PERIOD_MS.
  • Значение параметра ADB_MPPW_USE_ADVANCED_CONNECTOR изменено на true.

Расширение формата метки времени в запросах:

  • CHECK_SUM_SNAPSHOT,
  • TRUNCATE HISTORY,
  • TRUNCATE ACTUAL,
  • COMMIT DELTA,
  • GET_DELTA_BY_DATETIME.

Изменения в работе с ADB:

  • Рекомендуемая версия ADB изменена с 6.17.5 на 6.25.1.
  • Изменен коннектор, используемый для загрузки данных в ADB.
  • Изменен шаблон имен консьюмер-групп, которые формирует улучшенный PXF-коннектор при загрузке данных в ADB.
  • Изменен порядок выбора первого сообщения при загрузке данных в ADB с помощью новой внешней таблицы загрузки.

Другие изменения:

  • Список зарезервированных слов расширен словом ts.
  • Изменен механизм отбора записей в запросах:
    • CHECK_SUM_SNAPSHOT с меткой времени,
    • TRUNCATE HISTORY с меткой времени,
    • TRUNCATE ACTUAL.

Исправления

  • Исправлена проблема загрузки данных, которая возникала при использовании одинаковых имен окружений в нескольких СУБД.

Известные проблемы

  • Возможна нецелостная синхронизация материализованных представлений, если дельты закрываются с явной установкой даты и времени дельты в прошлом или будущем.
  • Запросы SELECT... FOR SYSTEM_TIME... к данным материализованных представлений, синхронизированным до версии 6.7, возвращают результаты, смещенные примерно на дельту назад.
  • Недоступна одновременная загрузка данных из одного топика Kafka в разные таблицы ADG.

Дополнительные действия при обновлении

  • До обновления на версию 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.

Версия 6.6 (04.10.2023)

Новая функциональность

  • Асинхронные запросы по HTTP.
  • Прокси-таблицы.
  • Запрос CREATE PROXY TABLE.
  • Удаление записей из всех задействованных партиций запросом DELETE к партиционированной таблице.
  • INSERT SELECT FROM external_table:
    • загрузка данных с применением WHERE, LIMIT и/или OFFSET;
    • ключевое слово RETRY.
  • Метод setMaxRows в JDBC-интерфейсе Statement.

Изменения

  • Синтаксис запросов:
    • Запрос CREATE TABLE расширен ключевым словом OPTIONS.
    • Запросы GET_DELTA_* расширены параметром, задающим имя логической базы данных.
    • Запрос RECOVER_DATASOURCE расширен параметром, задающим количество восстанавливаемых операций записи за один проход.
  • HTTP API:
    • Добавлены методы управления асинхронными операциями.
    • Тело запроса query расширено опциональным флагом async.
    • Список кодов ответа расширен кодом 404.
  • Конфигурация:
    • Значение параметра конфигурации ADB_MPPW_FDW_TIMEOUT_MS увеличено до 1200.
    • Удалена неиспользуемая секция параметров core:plugins:category:autoSelect.
  • Компоненты:
    • Функции сервиса мониторинга статусов Kafka (status monitor) включены в состав сервиса исполнения запросов (query execution core).
    • Оптимизирована загрузка данных в партиции с помощью коннектора Kafka Jet writer.
  • Добавлено ограничение на одновременную запись данных в партиционированную таблицу и ее партиции.
  • Отключен неиспользуемый механизм определения подкатегории запроса на основе количества задействованных узлов.
  • Системное представление information_schema.tables расширено столбцом definition.
  • Набор возможных типов физических таблиц расширен новым типом — таблицей, соответствующей прокси-таблице.
  • В список зарезервированных слов добавлены proxy и sys_<any_string>.

Исправления

  • Запуск без брокера сообщений Kafka.
  • Переподключение к ZooKeeper при потере соединения.
  • Обращение к сущностям информационной схемы с именами, начинающимися на SYS.

Известные проблемы

  • В версиях 6.6 и ниже недоступна одновременная загрузка данных из одного топика Kafka в разные таблицы ADG.

Новая функциональность, изменения и исправления связанных компонентов

Версия 6.5 (11.08.2023)

Новая функциональность

  • Восстановление датасорсов с помощью запросов:
    • DISABLE_DATASOURCE,
    • ENABLE_DATASOURCE,
    • RECOVER_DATASOURCE.
  • Материализованные представления на основе партиционированных таблиц.
  • Загрузка данных из Kafka с помощью внешних readable-таблиц.
  • Поддержка кластера коннекторов Kafka-Postgres reader и Kafka-Postgres writer.

Изменения

Конфигурация:

  • Увеличено значение параметра ADB_MPPW_DEFAULT_MESSAGE_LIMIT.
  • Добавлены секции параметров core.jet, core.kafka.consumer и springdoc.
  • Для параметров загрузки и выгрузки из ADP добавлена поддержка списка из нескольких коннекторов.

HTTP API:

  • Запрос метода /datamarts[/{datamart}]/query расширен опциональным параметром maxRowsToRead.
  • Ответ метода /datamarts/{datamart}/entities/{entity} расширен опциональным параметром lastCn.
  • Ответ метода /versions расширен строкой с версией коннектора Kafka Jet writer.

Другие изменения:

  • Запрос CREATE READABLE EXTERNAL TABLE расширен ключевым словом FORMAT и параметрами ключевого слова OPTIONS.
  • Запрос INSERT SELECT FROM external_table расширен поддержкой внешних readable-таблиц.
  • Ответ 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.

Известные проблемы

  • В версиях 6.5 и ниже недоступна одновременная загрузка данных из одного топика Kafka в разные таблицы ADG.

Новая функциональность, изменения и исправления связанных компонентов

Версия 6.4 (31.05.2023)

Новая функциональность

  • Разграничение доступа по ролям.
  • Партиционирование данных в СУБД ADP.
  • Логирование IP-адресов отправителей запросов.

Изменения

  • В конфигурацию добавлен параметр CORE_DEFAULT_ROLES.

Известные проблемы

  • В версиях 6.4 и ниже недоступна одновременная загрузка данных из одного топика Kafka в разные таблицы ADG.

Версия 6.3 (04.04.2023)

Новая функциональность

  • Retention-правила.
  • Аутентификация по JWT.
  • Материализованные представления ADP -> ADG.
  • HTTP-метод /swagger-ui.
  • Запросы:
    • CHECK_JWKS,
    • ALTER TABLE ADD RETENTION,
    • ALTER TABLE DROP RETENTION.

Изменения

  • Синтаксис CREATE TABLE расширен ключевым словом RETENTION.
  • Ответ GET_ENTITY_DDL расширен информацией о retention-правилах.
  • В запросы HTTP API добавлен заголовок Authorization.
  • В ответах HTTP API изменен формат метаданных логических сущностей.
  • Физическая схема данных расширена таблицами <table_name>_history_<source>.
  • JSON-логи расширены идентификаторами владельцев JWT.
  • Для ADB и ADP добавлен индекс на столбец sys_to физических таблиц *_actual.
  • Для ADB изменен алгоритм обработки запросов с Round Robin на очередь.

Конфигурация:

  • добавлена секция datacooling;
  • добавлен параметр AUTH_JWKS_URI;
  • изменено значение параметра ZOOKEEPER_DS_OPTIMISTIC_RETRY_COUNT: 5 -> 20.

Исправления

  • ALTER TABLE ADD/RENAME/DROP COLUMN и ALTER TABLE RENAME с ключевым словом IF EXISTS/IF NOT EXISTS.

Известные проблемы

  • В версиях 6.3 и ниже недоступна одновременная загрузка данных из одного топика Kafka в разные таблицы ADG.

Особенности миграции

  • Перед миграцией на версию 6.3 необходимо выключить все ноды Prostore.

Версия 6.2.1 (03.03.2023)

  • Исправлена ошибка при старте системы, связанная с JSON-логированием.

Версия 6.2 (14.02.2023)

Новая функциональность

  • COMMIT DELTA IMMEDIATE.
  • WITH в SELECT-запросах и подзапросах.
  • SELECT-запросы и подзапросы без FROM для ADB, ADP и ADQM.
  • Материализованные представления ADP_n -> ADP_n и ADP_n -> ADP_m.
  • INSERT SELECT ADP_n -> ADP_m.
  • Поддержка внешних таблиц в запросе GET_ENTITY_DDL и API-методе /datamarts/{datamart}/entities/{entity}/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.
  • INSERT INTO download_external_table как подготовленный запрос (prepared statement).

Изменения

  • Для CREATE READABLE/WRITABLE EXTERNAL TABLE ключевые слова PRIMARY KEY и DISTRIBUTED BY стали опциональными при размещении standalone-таблиц в ADB или ADP.
  • В ответах GET_CHANGES и GET_ENTITY_DDL унифицированы имена датасорсов.
  • В SELECT-запросах изменен порядок следования OFFSET и FETCH.
  • Добавлен параметр конфигурации ZOOKEEPER_DS_MAX_SEQUENCE_SIZE.
  • Для ADB и ADP добавлена поддержка аутентификации SCRAM-SHA-256.
  • В логи добавлен текст ошибки ADB.

Исправления

  • Исправлена ошибка, приводившая в некоторых случаях к утечке памяти при загрузке данных в ADP.

Версия 6.1.1 (13.01.2023)

  • Исправлена ошибка, возникавшая при загрузке данных в ADB.

Версия 6.1 (21.12.2022)

Новая функциональность

  • HTTP API.
  • INSERT SELECT ADB -> ADP.
  • TRUNCATE ACTUAL и ERASE DELTA для ADG.

Изменения

  • В ответ CHECK_MATERIALIZED_VIEW добавлен столбец is_sync_lock_exists; из ответа удален столбец sync_period.
  • В ответ CHECK_VERSIONS добавлена строка с версией HTTP API.
  • В ответы GET_ENTITY_DDL, CHECK_MATERIALIZED_VIEW, GET_CHANGES и GET_WRITE_OPERATIONS добавлена поддержка переносов строк.
  • В ответе SELECT... ESTIMATE_ONLY в текст обогащенного запроса добавлены символы \n.
  • Для ROLLBACK DELTA удалены ограничение на отмену повторных изменений в ADG и необходимость повторения запроса.
  • Для GET_ENTITY_STATISTICS оптимизирован алгоритм расчета ROWS_COUNT и ROWS_COUNT_DELTA, и хранение этих значений перенесено в Zookeeper.
  • Для SELECT, INSERT SELECT и DELETE удалено ограничение на символы переноса в условии WHERE.
  • Для CHECK_SUM удалено ограничение на количество столбцов в запросе.
  • Для TRUNCATE ACTUAL и ERASE DELTA снято ограничение на удаление изменений, внесенных отдельными операциями записи.
  • Добавлена поддержка параметра конфигурации ADG_CONSUMER_GROUP.
  • Добавлены параметры конфигурации ZOOKEEPER_DS_CONNECTION_RETRY_COUNT и ZOOKEEPER_DS_OPTIMISTIC_RETRY_COUNT.
  • Для функции TIMESTAMPDIFF изменен расчет разницы между указанными метками времени.
  • Изменена обработка escape-последовательностей в запросах.

Логи:

  • Для JSON-логов добавлена поддержка идентификаторов HTTP-запросов.
  • Логи расширены информацией о задействованных датасорсах.
  • Из JDBC-драйвера удален Logback.xml.

Исправления

  • Потеря соединения с Zookeeper.
  • GET_ENTITY_STATISTICS для логических таблиц, созданных с указанием LOGICAL_ONLY.
  • Разница в работе функции TIMESTAMP_DIFF для разных СУБД.
  • Ошибка инициализации ADB.
  • ROLLBACK DELTA для дельты, открытой после отдельной операции записи.
  • Сравнение в условии WHERE со строковой константой, содержащей символы новой строки.
  • Формат даты, времени и метки в ответе GET_WRITE_OPERATIONS.

Версия 6.0 (31.10.2022)

Новая функциональность

  • Поддержка нескольких СУБД одного типа.
  • Загрузка и обновление данных без открытия дельты.
  • Запросы:
    • ALTER TABLE RENAME,
    • ALTER TABLE ADD COLUMN,
    • ALTER TABLE RENAME COLUMN,
    • ALTER TABLE DROP COLUMN.
  • Функции TIMESTAMPADD и TIMESTAMPDIFF.
  • Выражения для логических таблиц:
    • 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).
  • JVM-метрики.
  • Расчет контрольной суммы в открытой дельте с помощью CHECK_SUM и CHECK_SUM_SNAPSHOT.

Изменения

  • Для ERASE DELTA добавлено ограничение, что перед дельтой не должно быть отдельных операций записи.
  • Для ERASE DELTA удалена поддержка метки времени.
  • Для ROLLBACK DELTA добавлено ограничение на отмену повторных изменений операции в ADG.
  • Для TRUNCATE ACTUAL удалено ограничение на логические таблицы, связанные с несинхронизированными материализованными представлениями.
  • Для DDL- и SELECT-запросов унифицированы значения DATASOURCE_TYPE.
  • В ответ CHECK_VERSIONS добавлены имена датасорсов.
  • В ответы запросов загрузки и обновления данных добавлен номер операции записи.
  • В ответе SELECT... ESTIMATE_ONLY переименован параметр plugin -> datasource.
  • В ответе CHECK_DATA изменены формулировки про расхождения в данных.
  • Для CHECK_DATA изменена проверка без столбцов.
  • Для ADB и ADP расширена поддержка функций CURRENT_DATE, CURRENT_TIME и CURRENT_TIMESTAMP.

Конфигурация:

  • добавлен параметр PROMETHEUS_ENABLED;
  • добавлены параметры name и env в секцию datasource;
  • удален параметр ADB_WITH_HISTORY_TABLE;
  • удалена секция circuitbreaker для ADG;
  • заменены секции tarantool и db -> datasource для ADG;
  • секция datasource превращена в массив элементов.

Логические типы данных:

  • для типа BIGINT добавлен алиас INT64,
  • тип INT32 переименован в INTEGER и для него добавлен алиас INT32,
  • тип INT больше не используется.

Исправления

  • RESET_STATISTICS без параметров.
  • Количество запросов чтения в GET_ENTITY_STATISTICS для логических представлений на основе COUNT.
  • SELECT-запросы без алиасов логических представлений.
  • RETRY DELETE для ADG.
  • Значения sys_close_date в ADQM для дат в далеком будущем.
  • Обновленные записи в материализованных представлениях.
  • Признак nullable-столбца, возвращаемый по JDBC.

Известные проблемы

  • В условии WHERE запросов SELECT, INSERT SELECT и DELETE недоступно сравнение со строковыми константами, содержащими переносы строки.
  • В запросе CHECK_SUM недоступен расчет контрольной суммы для более чем 50 столбцов.

Версия 5.8 (25.08.2022)

Новая функциональность

  • Запросы 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 добавлена поддержка:

  • INSERT VALUES, INSERT SELECT, DELETE и CHECK_SUM_SNAPSHOT;
  • CHECK_SUM для логических представлений на основе на данных ADG;
  • readable- и writable-таблиц без поля bucket_id.

Для ADG удалена поддержка:

  • NATURAL JOIN, RIGHT JOIN, LEFT JOIN, FULL JOIN и CROSS JOIN;
  • LIMIT и OFFSET;
  • функций и арифметических операторов.

Исправления

  • Приведение к JDBC-типу в SELECT-запросах к внешним readable-таблицам.
  • Кэш материализованного представления.
  • Верхний регистр в значении параметра LOCATION внешней readable-таблицы.
  • Ответ CHECK_VERSIONS при сбое компонента.

Известные проблемы

  • Материализованные представления на основе одной логической таблицы без группировки и агрегации данных доступны, только если таблица и представление расположены в одной логической БД.

Версия 5.7 (23.06.2022)

Новая функциональность

  • Запросы:
    • TRUNCATE ACTUAL,
    • ERASE DELTA,
    • GET_ENTITY_STATISTICS.
  • Материализованные представления ADB -> ADP.
  • Очередь DDL-запросов.

Изменения

  • Журнал расширен отмененными DDL-операциями.
  • Синтаксис GET_CHANGES расширен флагом для вывода отмененных операций.
  • Для SELECT-запросов изменен порядок выбора записей с FOR SYSTEM_TIME.

Конфигурация:

  • для параметра 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 в ERASE_CHANGE_OPERATION.
  • Приведение BOOLEAN-значения к JDBC-типу в запросах INSERT INTO для ADQM.
  • Блокировка DDL-операций после выполнения DROP TABLE с указанием несуществующей СУБД.
  • SELECT-запросы с FOR SYSTEM_TIME STARTED IN и FOR SYSTEM_TIME FINISHED IN к standalone-таблицам.

Версия 5.6.1 (07.06.2022)

  • Добавлен параметр конфигурации CORE_DDL_QUEUE_ENABLED.

Версия 5.6 (19.05.2022)

Новая функциональность

  • Материализованные представления на основе таблиц из разных логических БД.
  • Ключевое слово LISTAGG в SELECT-запросах к ADB и ADP.
  • Расчет контрольной суммы для логических представлений с помощью CHECK_SUM и CHECK_SUM_SNAPSHOT.

Изменения

  • Добавлен параметр конфигурации ADB_MPPR_BUFFER_SIZE.
  • Синтаксис CHECK_SUM_SNAPSHOT расширен меткой времени.
  • Для DELETE добавлена поддержка подзапросов и JOIN-соединений в условии WHERE.
  • Для SELECT-запросов изменен порядок выбора записей с FOR SYSTEM_TIME STARTED/FINISHED IN.
  • Добавлено ограничение на имена столбцов логических таблиц и материализованных представлений, начинающиеся со служебных слов.

Исправления

  • INSERT SELECT с подзапросом, содержащим CURRENT_DATE, CURRENT_TIME или CURRENT_TIMESTAMP и DATASOURCE_TYPE = 'ADB'.
  • FOR SYSTEM_TIME для логических представлений.
  • DELETE в ADQM.
  • DELETE с алиасом в подзапросе.
  • ERASE_WRITE_OPERATION для отменяемых операций загрузки данных.
  • Дубликаты записей при выполнении INSERT VALUES в ADQM.
  • Материализованные представления, связанные с логическими таблицами в других логических БД.

Известные проблемы

  • Есть небольшая вероятность кэширования шаблона запроса предыдущей дельты.

Версия 5.5 (06.04.2022)

Новая функциональность

  • Поддержка standalone-таблиц.
  • Запросы:
    • CREATE WRITABLE EXTERNAL TABLE,
    • DROP WRITABLE EXTERNAL TABLE,
    • CREATE READABLE EXTERNAL TABLE,
    • DROP READABLE EXTERNAL TABLE,
    • ERASE_CHANGE_OPERATION,
    • ERASE_WRITE_OPERATION.
  • Ключевое слово RETRY для перезапуска операций по обновлению данных.

Изменения

  • Синтаксис CREATE UPLOAD EXTERNAL TABLE расширен ключевым словом OPTIONS.
  • Добавлены параметры конфигурации TARANTOOL_DB_SYNC_BUFFER_SIZE и ADQM_BUFFER_SIZE.

Исправления

  • DROP TABLE с указанием СУБД.
  • Формат поля changeDateTime в сигнальном топике Kafka.
  • Порядок столбцов ключей шардирования в INFORMATION_SCHEMA.
  • DROP TABLE и DROP MATERIALIZED VIEW для сущностей неподходящих типов.

Версия 5.4 (21.02.2022)

Новая функциональность

  • Запросы 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 -> CITY_HASH_64, intAdd -> INT_ADD;
  • изменено начало путей во всех вхождениях: io.arenadata -> ru.datamart.

Исправления

  • Приведение 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.
  • Ответ GET_CHANGES при отсутствии журнала.

Версия 5.3 (14.01.2022)

Новая функциональность

  • Материализованные представления ADB -> ADQM.
  • UPSERT SELECT ADB -> ADQM.
  • Запросы:
    • 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.

Исправления

  • SELECT-запросы:
    • обработка IN;
    • сравнение с константами в условии WHERE;
    • разница в количестве параметров между запросом и шаблоном;
    • LIMIT в подзапросах;
    • дублирование алиаса сущности в подзапросе;
    • запрос с ключевым словом ORDER BY, указанным после DATASOURCE_TYPE.
  • Подготовленный запрос (prepared statement) с динамическими и статическими типами данных.
  • Дублирование параметров в CONFIG_SHOW.
  • Создание логического представления с DATASOURCE_TYPE.
  • Пересоздание материализованного представления с тем же именем.
  • Ошибка инициализации при наличии в хранилище только СУБД ADP.
  • Ответ GET_WRITE_OPERATIONS для UPSERT VALUES.
  • UPSERT SELECT без списка столбцов целевой таблицы.
  • ADQM:
    • первичные ключи с типом DATE;
    • записи открытой дельты в материализованных представлениях;
    • исторические записи после UPSERT VALUES;
    • RESUME_WRITE_OPERATIONS и CHECK_TABLE.

Версия 5.2 (26.10.2021)

Новая функциональность

  • Запросы:
    • UPSERT VALUES,
    • UPSERT SELECT,
    • DELETE,
    • CONFIG_SHOW,
    • GET_WRITE_OPERATIONS,
    • RESUME_WRITE_OPERATION.
  • Ключевое слово COLLATE в SELECT-запросах к ADG.
  • Выгрузка данных из материализованных представлений.
  • Маршрутизация на основе набора целевых узлов кластера.

Изменения

  • Для INFORMATION_SCHEMA добавлено ограничение на DDL-запросы.
  • Для 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.

Версия 5.1 (27.08.2021)

Новая функциональность

  • Ключевое слово ESTIMATE_ONLY в SELECT-запросах.
  • Ключевое слово LOGICAL_ONLY в запросах на создание и удаление логической БД, логической таблицы и материализованного представления.

Изменения

  • Для CHECK_DATA и CHECK_SUM добавлен коэффициент нормализации и изменен расчет контрольных сумм.
  • Добавлен параметр конфигурации 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-запросов.

Версия 5.0 (12.08.2021)

Новая функциональность

  • Поддержка СУБД хранилища нового типа — ADP (на основе PostgreSQL).
  • Выгрузка данных из указанной СУБД хранилища.
  • Расчет контрольной суммы для материализованного представления с помощью CHECK_SUM.

Изменения

  • В системное представление tables добавлен столбец table_datasource_type.

Конфигурация:

  • добавлены параметры для управления СУБД ADP, а также ADB_PREPARED_CACHE_MAX_SIZE, ADB_PREPARED_CACHE_SQL_LIMIT, ADB_PREPARED_CACHE и DTM_LOGGING_LEVEL;
  • значения параметров расширены значением ADP: CORE_PLUGINS_ACTIVE, DTM_CORE_PLUGINS_RELATIONAL, DTM_CORE_PLUGINS_ANALYTICAL, DTM_CORE_PLUGINS_DICTIONARY, DTM_CORE_PLUGINS_UNDEFINED;
  • IP-адреса заменены на localhost.

Исправления

  • Ключевое слово IN с количеством элементов более 20.

Версия 4.1 (26.07.2021)

Новая функциональность

  • Ключевые слова OFFSET и FETCH NEXT <N> ROWS ONLY в 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.

Версия 3.7.3 (30.06.2021)

Новая функциональность

  • Запрос ROLLBACK CRASHED_WRITE_OPERATIONS.

Изменения

Конфигурация:

  • добавлены параметры: DTM_CORE_WORKER_POOL_SIZE, DTM_CORE_EVENT_LOOP_POOL_SIZE и ADB_EXECUTORS_COUNT;
  • изменен путь к параметру ADB_MAX_POOL_SIZE: adb.maxSize -> adb.poolSize.

Содержание раздела