История изменений

Содержание раздела
  1. Текущая версия — 6.3 (04.04.2023)
    1. Retention-правила
    2. Аутентификация
    3. Новые запросы
    4. Материализованные представления ADP -> ADG
    5. REST API-метод swagger-ui
    6. Изменения конфигурации
    7. Другие изменения функциональности
    8. Исправления
    9. Обновление разделов
  2. Известные проблемы текущей версии
  3. Особенности миграции с предыдущих версий
  4. Архивные версии
    1. Версия 6.2.1 (03.03.2023)
    2. Версия 6.2 (14.02.2023)
      1. COMMIT DELTA IMMEDIATE
      2. WITH в SELECT-запросах и подзапросах
      3. SELECT-запросы и подзапросы без FROM
      4. Материализованные представления ADP -> ADP и ADP1 -> ADP2
      5. INSERT SELECT из ADP1 в ADP2
      6. Внешние таблицы в GET_ENTITY_DDL
      7. Ключевые слова IF EXISTS и IF NOT EXISTS в DDL-запросах
      8. Опциональные ключи в запросах CREATE READABLE/WRITABLE EXTERNAL TABLE для ADB и ADP
      9. Унификация имен датасорсов в GET_CHANGES и GET_ENTITY_DDL
      10. Другие изменения
      11. Исправления
  5. Версия 6.1.1 (13.01.2023)
    1. Версия 6.1 (21.12.2022)
      1. REST API
      2. INSERT SELECT ADB -> ADP
      3. TRUNCATE ACTUAL и ERASE DELTA
      4. ROLLBACK DELTA
      5. Статистика обработки запросов
      6. Изменения конфигурации
      7. Изменения в ответах
      8. Удаленные ограничения
      9. Работа с компонентами
      10. Другие изменения функциональности
      11. Обновление разделов
    2. Версия 6.0 (31.10.2022)
      1. Несколько СУБД одного типа
      2. Изменение данных без дельт
      3. Новые запросы, функции, выражения
      4. Изменения в запросах
      5. Другие изменения функциональности
      6. Изменения конфигурации
      7. Обновление разделов
    3. Известные проблемы в версиях до 6.0
    4. Версия 5.8 (25.08.2022)
      1. Изменения в общей функциональности
      2. Изменения в поддержке ADG
      3. Обновление разделов
    5. Известные проблемы в версиях до 5.8
    6. Версия 5.7 (23.06.2022)
    7. Версия 5.6.1 (07.06.2022)
    8. Версия 5.6 (19.05.2022)
    9. Известные проблемы в версиях до 5.6
    10. Версия 5.5 (06.04.2022)
    11. Версия 5.4 (21.02.2022)
    12. Версия 5.3 (14.01.2022)
    13. Версия 5.2 (26.10.2021)
    14. Версия 5.1 (27.08.2021)
    15. Версия 5.0 (12.08.2021)
    16. Версия 4.1 (26.07.2021)
    17. Версия 4.0 (12.07.2021)
    18. Версия 3.7.3 (30.06.2021)

Текущая версия — 6.3 (04.04.2023)

Retention-правила

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

Доступны следующие стратегии обработки неактуальных версий данных:

  • остужение — перемещение данных в датасорс, выделенный для хранения холодных данных;
  • удаление — окончательное удаление данных.

Retention-правила поддерживаются для СУБД ADB и ADP. Для каждого датасорса, где размещаются данные логической таблицы, можно настроить свое правило.

Подробнее о retention-правилах см. в разделе Retention-правило, о настройке правил — в разделе Настройка retention-правил.

Аутентификация

Добавлена возможность аутентифицировать все запросы по авторизационным токенам (JSON Web Token, также JWT). Для создания авторизационных токенов можно использовать любой авторизационный сервис, поддерживающий стандарт JWT, например Keycloak.

Аутентификация включается с помощью параметра конфигурации AUTH_JWKS_URI.

Если аутентификация включена, каждый запрос должен содержать корректный авторизационный токен. В запросах по JDBC авторизационный токен передается как пароль пользователя, в запросах по REST API — в заголовке типа Authorization.

Подробнее об аутентификации запросов см. в разделе Аутентификация.

Новые запросы

Материализованные представления ADP -> ADG

Добавлена возможность создавать материализованные представления в датасорсах типа ADG на основе данных датасорса типа ADP.

REST API-метод swagger-ui

В REST 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-правилах.
  • В запросы REST API добавлен опциональный заголовок Authorization, используемый для передачи авторизационного токена.
  • В ответах REST 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 теперь возвращают пустой объект ResultSet вместо ошибки, если целевой столбец или целевая таблица отсутствует.
  • Запрос ALTER TABLE ADD COLUMN IF NOT EXISTS теперь возвращает пустой объект ResultSet вместо ошибки, если целевой столбец уже присутствует в таблице.

Обновление разделов

Известные проблемы текущей версии

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

Особенности миграции с предыдущих версий

  • Невозможно обновление на версию 6.3 с предыдущих версий в горячем режиме: перед миграцией необходимо выключить все ноды Prostore.

Архивные версии

Версия 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 теперь можно исполнять как подготовленный запрос (prepared statement).
  • В секцию конфигурации zookeeper добавлен параметр maxSequenceSize (ZOOKEEPER_DS_MAX_SEQUENCE_SIZE).
  • Добавлена возможность подключения системы к СУБД ADB и ADP, использующим аутентификацию SCRAM-SHA-256.
  • Логи об ошибках ADB теперь включают текст ошибки, полученный от ADB.

Исправления

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

Версия 6.1.1 (13.01.2023)

Версия 6.1.1 доступна в архиве.

Изменения:

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

Версия 6.1 (21.12.2022)

REST API

Добавлена возможность работать с системой через REST API. REST API поддерживает отправку всех запросов SQL+, а также имеет выделенные методы для работы со схемой данных, дельтами, статистикой и компонентами.

INSERT SELECT ADB -> ADP

Добавлена возможность вставки данных из датасорса типа ADB в датасорс типа ADP с помощью INSERT SELECT. Теперь вставка данных из датасорсов типа ADB возможна в датасорсы любого типа.

TRUNCATE ACTUAL и ERASE DELTA

  • Добавлена поддержка СУБД ADG.
  • Удалено ограничение, связанное с невозможностью удаления изменений, которые были добавлены отдельными операциями записи между указанной и предыдущей дельтами: теперь такие изменения также удаляются.

ROLLBACK DELTA

  • Удалено ограничение в ADG, связанное с отменой повторных изменений в рамках одной дельты: теперь запрос отменяет такие изменения.
  • Удалено ограничение, связанное с необходимостью повторения запроса: теперь запрос удаляет все записи за один вызов, повторный запуск запроса не требуется.

Статистика обработки запросов

  • Изменено место хранения значений ROWS_COUNT и ROWS_COUNT_DELTA: теперь они хранятся в Zookeeper, а не на сервере системы, и не обнуляются при рестарте системы.
  • Оптимизирован алгоритм расчета ROWS_COUNT и ROWS_COUNT_DELTA: теперь при добавлении новой сущности значения по промежуточным дельтам не рассчитываются.

Изменения конфигурации

  • В секцию zookeeper добавлены параметры connectionRetryCount (ZOOKEEPER_DS_CONNECTION_RETRY_COUNT) и optimisticRetryCount (ZOOKEEPER_DS_OPTIMISTIC_RETRY_COUNT).

Изменения в ответах

Изменения в структуре:

  • Изменен формат ответа CHECK_MATERIALIZED_VIEW:
    • добавлен столбец is_sync_lock_exists;
    • удален столбец sync_period.
  • В ответ CHECK_VERSIONS добавлена строка с версией REST API.

Изменения в содержимом:

  • Изменено форматирование в ответах GET_ENTITY_DDL, CHECK_MATERIALIZED_VIEW, GET_CHANGES и GET_WRITE_OPERATIONS: теперь текст запроса, возвращаемый в ответе, включает переносы строк. Раньше текст запроса возвращался без переносов.
  • Изменено форматирование в ответе SELECT... ESTIMATE_ONLY: теперь текст обогащенный запрос содержит символы переноса строк \n. Раньше текст запроса возвращался без этих символов.
  • Изменен формат даты, времени и метки в ответе GET_WRITE_OPERATIONS: теперь значения возвращаются как дата, время и метка времени соответственно, а не как целое число.

Удаленные ограничения

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

Работа с компонентами

  • Добавлено восстановление соединения с Zookeeper в случае его потери.
  • Механизм загрузки данных в ADG теперь использует параметр конфигурации ADG_CONSUMER_GROUP вместо настроек на стороне ADG.

Другие изменения функциональности

  • Добавлена возможность вывода идентификаторов запросов, переданных по REST API, в JSON-логах системы. Вывод идентификаторов настраивается в logback.xml с помощью параметра queryId.
  • Изменен расчет разницы между двумя явно заданными метками времени в функции TIMESTAMPDIFF: теперь для параметров DAY, HOUR и MINUTE возвращается число полных дней/часов/минут без округления вверх. Например, выражение TIMESTAMPDIFF(DAY, TIMESTAMP '2022-01-15 23:59:59', TIMESTAMP '2022-01-16 00:00:01') теперь возвращает 0 вместо 1.
  • Изменен порядок обработки escape-последовательностей в запросах: теперь они сохраняются, а не удаляются.
  • В логи для запросов добавлена информация о датасорсах, где были выполнены запросы.
  • Удален Logback.xml из JDBC-драйвера. На стороне внешних систем, использующих JDBC, следует отключить JDBC-логирование.

Обновление разделов

  • Добавлен раздел «Подключение с помощью 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).

Изменения в запросах

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

  • Для ERASE DELTA введено ограничение: перед указанной дельтой не должно быть операций записи, выполненных между этой и предыдущей дельтой.
  • Для ROLLBACK DELTA введено ограничение на исполнение в ADG: запрос не отменяет повторные изменения операции, совершенные в рамках одной дельты.
  • Для TRUNCATE ACTUAL удалено ограничение: теперь возможно удаление данных логической таблицы, с которой связано несинхронизированное материализованное представление;

Входящие параметры:

  • В ERASE DELTA удалена поддержка метки времени; теперь в запросе можно указывать только номер дельты.
  • В DDL- и SELECT-запросах унифицированы значения DATASOURCE_TYPE: теперь значения рекомендуется указывать в одинарных кавычках; значения без кавычек и в двойных кавычках продолжают поддерживаться, но могут быть удалены в будущих версиях.

Ответы:

  • Изменен ответ CHECK_VERSIONS: теперь имена компонентов, относящихся к датасорсам, возвращаются в формате <имя_датасорса>: <имя_компонента>.
  • Изменены ответы на запросы загрузки и обновления данных: теперь вместо пустого объекта ResultSet возвращается ResultSet с одной строкой и столбцом, содержащим номер выполненной операции записи.
  • Изменен ответ SELECT-запроса с ключевым словом ESTIMATE_ONLY: параметр plugin переименован в datasource.
  • Изменены следующие строки в ответе CHECK_DATA:
    • checksum for delta <delta_num> is OKchecksum for operations for delta <delta_num> is OK,
    • checksum mismatchchecksum for operations for delta <delta_num> mismatch.

Другое:

  • Для CHECK_SUM и CHECK_SUM_SNAPSHOT добавлена возможность расчета контрольной суммы в горячей дельте (только для логических таблиц).
  • Для CHECK_DATA изменена проверка по запросу без столбцов: теперь она выполняется так же, как по запросу со столбцами, — по контрольной сумме, а не количеству записей.

Другие изменения функциональности

  • Обновлены логические типы данных:
    • для типа BIGINT добавлен алиас INT64,
    • тип INT32 переименован в INTEGER и для него добавлен алиас INT32,
    • тип INT больше не используется, но пока продолжает поддерживаться.
  • Расширена поддержка функций CURRENT_DATE, CURRENT_TIME и CURRENT_TIMESTAMP в СУБД ADB и ADP: теперь их можно указывать без CAST.
  • Добавлена возможность запроса JVM-метрик.

Изменения конфигурации

  • В конфигурацию сервиса исполнения запросов и сервиса мониторинга статусов Kafka добавлена секция prometheus с параметром enabled (PROMETHEUS_ENABLED).
  • В конфигурации ADB удален параметр with-history-table (ADB_WITH_HISTORY_TABLE).
  • В конфигурации ADG секции tarantool и db заменены на секцию datasource.
  • В конфигурации ADG удалена секция circuitbreaker.
  • Изменена секция datasource: теперь секция содержит массив элементов, каждый из которых — это набор параметров датасорса, включая секции mppr, mppw и rollback.
  • В секцию datasource добавлены параметры name и env.

Обновление разделов

  • Удалены понятия актуальных, горячих и архивных записей; вместо них теперь используется понятие «версия данных», номер версии соответствует номеру операции записи (см. раздел «История изменений данных»).
  • Введено понятие датасорса, обозначающее сервер или кластер СУБД в хранилище данных.
  • Добавлен раздел «Запрос JVM-метрик».
  • Переработаны разделы:
    • История изменений данных,
    • Дельта,
    • Операция записи,
    • Версионирование данных.

Известные проблемы в версиях до 6.0

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

Версия 5.8 (25.08.2022)

Версия 5.8 доступна в архиве.

Изменения:

Изменения в общей функциональности

Добавлены запросы:

  • RESET_STATISTICS;
  • SYNC.

Изменены запросы:

  • введено ограничение на параллельное выполнение ROLLBACK DELTA: теперь запрос возвращает исключение, если система уже выполняет другой запрос ROLLBACK DELTA;
  • в ответ GET_ENTITY_STATISTICS добавлены параметры ROWS_COUNT и ROWS_COUNT_DELTA;
  • изменен ответ CHECK_VERSIONS при сбое компонента: теперь, если компонент вернул ошибку при опросе, система записывает ее в поле version, а не возвращает исключение в ответе;
  • введено ограничение в CHECK_SUM: теперь запрос рассчитывает контрольную сумму только в закрытой дельте;
  • введено ограничение в SELECT: ключевое слово COLLATE больше не поддерживается.

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

  • добавлен загружаемый тип данных uuid;
  • добавлены параметры конфигурации 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;
  • функции и арифметические операторы.

Обновление разделов

Добавлены разделы:

  • Дельта > Работа с дельтами, закрытыми с датой и временем в будущем;
  • Основные понятия > Операция по изменению схемы;
  • Основные понятия > История изменений данных;
  • Возможности системы;
  • Соглашения об именах.

Обновлены разделы:

  • термины из раздела «Термины и определения» вынесены в раздел «Основные понятия» как отдельные страницы; раздел «Термины и определения» удален;
  • раздел «Введение» переименован в «О системе Prostore» и переработан;
  • раздел «Обзор понятий, компонентов и связей» переименован в «Как устроена система» и переработан;
  • раздел «Эксплуатация» переименован в «Запуск в эксплуатацию»;
  • рекомендации по использованию топиков Kafka вынесены из раздела «Внешняя таблица» в отдельный раздел — «Рекомендации по топикам Kafka».

Известные проблемы в версиях до 5.8

  • Создание материализованных представлений на основе одной логической таблицы без группировки и агрегации данных поддерживается только в случае, если таблица и представление расположены в одной логической базе данных. Ограничение действует во всех версиях до 5.8 включительно.

Версия 5.7 (23.06.2022)

Версия 5.7 доступна в архиве.

Изменения:

  • добавлены запросы:
    • TRUNCATE ACTUAL,
    • ERASE DELTA,
    • GET_ENTITY_STATISTICS;
  • добавлена возможность размещения материализованных представлений в 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;
  • обновлен дизайн схем.

Версия 5.6.1 (07.06.2022)

Версия 5.6.1 доступна в архиве.

Изменения:

  • удалено ограничение на одновременный запуск запросов на создание, изменение и удаление таблиц и представлений: теперь такие запросы попадают в очередь и обрабатываются по порядку;
  • в конфигурацию системы добавлен параметр CORE_DDL_QUEUE_ENABLED, включающий использование очереди операций по изменению логической схемы; чтобы вернуть прежнее поведение системы, установите значение параметра равным false;
  • в раздел «Основные понятия» добавлен подраздел «Очередь операций по изменению схемы».

Версия 5.6 (19.05.2022)

Изменения:

  • для материализованных представлений добавлена поддержка таблиц из разных логических баз данных;
  • добавлено ключевое слово LISTAGG, доступное в SELECT-запросах к ADB и ADP;
  • в конфигурацию системы добавлен параметр ADB_MPPR_BUFFER_SIZE;
  • расширены возможности запросов CHECK_SUM и CHECK_SUM_SNAPSHOT: теперь расчет контрольной суммы доступен и для логических представлений;
  • расширен синтаксис CHECK_SUM_SNAPSHOT: теперь можно указывать либо номер дельты, либо дату и время, на которые должна быть рассчитана контрольная сумма;
  • для запроса DELETE в условии WHERE добавлена поддержка подзапросов и JOIN-соединений;
  • в SELECT-запросе изменен порядок выбора записей по ключевым словам FOR SYSTEM_TIME STARTED IN и FOR SYSTEM_TIME FINISHED IN: теперь возвращается разница в состоянии данных между указанными дельтами, а не все версии записей за этот период;
  • добавлено ограничение на имена столбцов логических таблиц и материализованных представлений: они не могут начинаться со служебных слов;
  • переработан раздел «Запросы SQL+»: запросы разделены по категориям, и для каждого запроса добавлено краткое описание;
  • дополнен список ограничений в разделе «Ограничения системы» и справочнике запросов: ограничения, встречавшиеся в блоках примечаний, теперь вынесены в явном виде в список ограничений.

Известные проблемы в версиях до 5.6

  • Есть небольшая вероятность кэширования шаблона запроса предыдущей дельты. Если это произошло, кэшированные запросы возвращают устаревшие данные до момента закрытия новой дельты или рестарта системы. Проблема существует во всех версиях до 5.6 включительно.

Версия 5.5 (06.04.2022)

Версия 5.5 доступна в архиве.

Изменения:

  • добавлена возможность работать со standalone-таблицами — таблицами, которые не относятся к логической и физической схемам данных;
  • добавлены новые сущности, предназначенные для работы со standalone-таблицами: внешняя writable-таблица и внешняя readable-таблица;
  • в запрос CREATE UPLOAD EXTERNAL TABLE добавлено ключевое слово OPTIONS; его значение auto.create.sys_op.enable=false позволяет создать таблицу, предназначенную для загрузки в standalone-таблицу;
  • изменен способ возобновления операций по обновлению данных: теперь нужно повторить исходный запрос, добавив в его начало ключевое слово RETRY, а повторение запроса без ключевого слова не возобновляет обработку операции;
  • добавлены новые запросы:
    • запросы по управлению внешними writable- и readable-таблицами:
      • CREATE WRITABLE EXTERNAL TABLE;
      • DROP WRITABLE EXTERNAL TABLE;
      • CREATE READABLE EXTERNAL TABLE;
      • DROP READABLE EXTERNAL TABLE;
    • ERASE_CHANGE_OPERATION;
    • ERASE_WRITE_OPERATION;
  • запрос INSERT INTO logical_table переименован в справочнике запросов в INSERT SELECT FROM upload_external_table: переименование связано с тем, что теперь запрос позволяет загружать данные не только в логические таблицы, но и в standalone-таблицы; синтаксис запроса не изменился, изменилось только обозначение запроса в документе;
  • в конфигурацию системы добавлены параметры TARANTOOL_DB_SYNC_BUFFER_SIZE и ADQM_BUFFER_SIZE;
  • описан формат служебного топика Kafka;
  • в главу «Работа с системой» добавлен раздел «Управление операциями»;
  • раздел «Разбор ошибок загрузки и обновления данных» переименован в «Причины ошибок загрузки и обновления данных» и перенесен в главу «Справочная информация»; информация об обработке операций записи вынесена в новый раздел «Управление операциями».

Версия 5.4 (21.02.2022)

Версия 5.4 доступна в архиве.

Изменения:

  • начало строки подключения изменено с jdbc:adtm на jdbc:prostore;
  • запрос UPSERT VALUES переименован в INSERT VALUES, запрос UPSERT SELECT — в INSERT SELECT;
  • добавлены новые запросы:
    • UPSERT VALUES;
    • CHECK_SUM_SNAPSHOT;
  • обновлена конфигурация системы:
    • добавлен параметр 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;
    • добавлены неучтенные ранее параметры для ADG: TARANTOOL_VERTX_WORKERS, TARANTOOL_DB_SYNC_CONNECTION_TIMEOUT, TARANTOOL_DB_SYNC_READ_TIMEOUT и TARANTOOL_DB_SYNC_REQUEST_TIMEOUT;
  • добавлено ограничение на имена логических сущностей и их столбцов: имя должно начинаться с латинской буквы, после первого символа могут следовать латинские буквы, цифры и символы подчеркивания в любом порядке;
  • изменен ответ GET_CHANGES в случае отсутствия журнала: теперь возвращается пустой объект ResultSet вместо ошибки;
  • локализация статуса 2 операции записи изменена с «Ошибка» на «Отменяется»;
  • имя логической базы данных в примерах изменено с sales на marketing.

Версия 5.3 (14.01.2022)

Версия 5.3 доступна в архиве.

Изменения:

  • добавлено создание материализованных представлений в ADQM на основе данных ADB;
  • добавлена вставка данных из ADB в ADQM с помощью UPSERT SELECT;
  • удалено требование на целочисленные ключи шардирования в логических таблицах: теперь ключ может содержать столбцы с любыми типами данных;
  • добавлены новые запросы:
    • CHECK_MATERIALIZED_VIEW;
    • DENY_CHANGES;
    • ALLOW_CHANGES;
    • GET_CHANGES;
    • GET_ENTITY_DDL;
  • в системное представление tables добавлен новый тип сущности — MATERIALIZED VIEW;
  • добавлен перезапуск незавершенной операции по обновлению данных;
  • добавлено автоматическое ведение журнала — списка операций по изменению логических сущностей;
  • для выгрузки данных добавлен выбор оптимальной СУБД хранилища, аналогичный выбору СУБД для SELECT-запросов;
  • из описания запроса CREATE TABLE удалено неподдерживаемое ключевое слово DEFAULT;
  • добавлен раздел «Зарезервированные слова» со словами, которые не могут использоваться как имена сущностей и имена полей;
  • добавлен раздел «Ограничения системы» со списком всех ограничений, имеющихся в запросах системы;
  • обновлена конфигурация системы:
    • добавлен параметр 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;
  • изменена терминология: архивация актуальных записей теперь называется удалением, а удаление записей с помощью запроса 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 изменен c core.metrics.isEnabled на core.metrics.еnabled;
  • добавлен раздел «Конфигурация коннекторов»;
  • описание конфигурационных параметров системы перенесено из раздела «Конфигурация» в раздел «Конфигурация системы»;
  • имя системы заменено на 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;
  • добавлена глава «Сборка и развертывание»;
  • в главу «Работа с системой» добавлены разделы «Получение информации о SELECT-запросе» и «Проверка месторасположения логической сущности»;
  • в главу «Эксплуатация» добавлен раздел «Часовые пояса системы и компонентов».

Версия 5.0 (12.08.2021)

Изменения:

  • добавлена СУБД хранилища нового типа — ADP — на основе PostgreSQL;
  • добавлена выгрузка данных из СУБД хранилища, указанной в запросе INSERT INTO download_external_table;
  • в системное представление tables добавлен столбец table_datasource_type;
  • обновлено описание запроса CHECK_SUM: теперь запрос поддерживает расчет контрольной суммы по материализованному представлению;
  • обновлена конфигурация:
    • добавлены параметры для управления СУБД 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;
  • добавлен раздел «Схемы развертывания».

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

Изменения:

  • описаны материализованные представления;
  • описаны возможные форматы даты и времени в запросах;
  • добавлен раздел «Проверка наличия логической сущности»;
  • добавлен раздел «Настройка JSON-логов»;
  • в конфигурацию добавлены параметры по управлению материализованными представлениями:
    • MATERIALIZED_VIEWS_SYNC_PERIOD_MS,
    • MATERIALIZED_VIEWS_RETRY_COUNT,
    • MATERIALIZED_VIEWS_RETRY_COUNT.

Версия 3.7.3 (30.06.2021)

Версия 3.7.3 доступна в архиве.

Изменения:

  • обновлена конфигурация:
    • в секцию 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;
  • описан запрос ROLLBACK CRASHED_WRITE_OPERATIONS;
  • доработаны разделы CHECK_DATA и CHECK_SUM: описаны алгоритм и пример расчета контрольной суммы;
  • уточнено описание формата загрузки и формата выгрузки данных;
  • в разделе «Минимальные системные требования» версия ADG обновлена до 2.7.2.