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

Содержание раздела
  1. Текущая версия — 6.0 (31.10.2022)
    1. Несколько СУБД одного типа
    2. Изменение данных без дельт
    3. Новые запросы, функции, выражения
    4. Изменения в запросах
    5. Другие изменения в функциональности
    6. Изменения в конфигурации
    7. Обновление разделов
  2. Архивные версии
    1. Версия 5.8 (25.08.2022)
      1. Изменения в общей функциональности
      2. Изменения в поддержке ADG
      3. Обновление разделов
    2. Известные проблемы в версиях до 5.8
    3. Версия 5.7 (23.06.2022)
    4. Версия 5.6.1 (07.06.2022)
    5. Версия 5.6 (19.05.2022)
    6. Известные проблемы в версиях до 5.6
    7. Версия 5.5 (06.04.2022)
    8. Версия 5.4 (21.02.2022)
    9. Версия 5.3 (14.01.2022)
    10. Версия 5.2 (26.10.2021)
    11. Версия 5.1 (27.08.2021)
    12. Версия 5.0 (12.08.2021)
    13. Версия 4.1 (26.07.2021)
    14. Версия 4.0 (12.07.2021)
    15. Версия 3.7.3 (30.06.2021)

Текущая версия — 6.0 (31.10.2022)

Несколько СУБД одного типа

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

Изменение данных без дельт

Добавлена возможность загружать и обновлять данные без открытия дельты. Подробнее см. в разделе Операция записи -> Операции в дельте и вне дельты.

Новые запросы, функции, выражения

Запросы:

Функции:

Выражения с 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.

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

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

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