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

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

Текущая версия — 6.5 (11.08.2023)

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

Восстановление сбойных датасорсов

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

Восстановление датасорса выполняется с помощью трех новых команд:

  • DISABLE_DATASOURCE — отключает сбойный датасорс;
  • RECOVER_DATASOURCE — восстанавливает схему и данные сбойного датасорса, используя резервный датасорса-источник, и при успешном восстановлении включает датасорс;
  • ENABLE_DATASOURCE — включает датасорс после ручного восстановления.

Материализованные представления на основе партиционированных таблиц

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

SELECT-подзапрос представления, обращающийся к партиционированной таблице, должен однозначно определять одну из партиций этой таблицы.

Загрузка данных из Kafka с помощью внешних readable-таблиц

Добавлена альтернативная возможность загружать данные из топиков Kafka в датасорсы типа ADP — с помощью внешних readable-таблиц. Загрузка выполняется коннектором Kafka Jet writer и доступна только при его наличии в инсталляции.

Загрузка данных новым способом запускается той же командой и имеет те же требования к формату данных, что и загрузка данных с помощью внешней таблицы загрузки.

Кластеризация коннекторов на загрузку и выгрузку данных ADP

В систему добавлена поддержка кластера из нескольких коннекторов Kafka-Postgres reader и Kafka-Postgres writer с автоматической балансировкой нагрузки между коннекторами каждого типа. Теперь, если инсталляция содержит несколько коннекторов каждого типа, запросы на загрузку и выгрузку данных продолжают обрабатываться, пока в рабочем состоянии остается хотя бы один коннектор каждого типа.

Чтобы настроить работу Prostore с кластером коннекторов, укажите сетевые адреса хостов, на которых установлены эти коннекторы, для следующих параметров конфигурации:

  • ADP_REST_START_LOAD_URL,
  • ADP_REST_STOP_LOAD_URL,
  • ADP_MPPW_CONNECTOR_VERSION_URL,
  • ADP_MPPR_QUERY_URL,
  • ADP_MPPR_CONNECTOR_VERSION_URL.

Значения перечисленных параметров указываются в формате host_1:port_1,host_2:port_2,.../path_to_rest_method. Например, параметр ADP_REST_START_LOAD_URL может иметь значение http://server1:8096,server2:8096/newdata/start.

Изменения

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

  • Значение параметра ADB_MPPW_DEFAULT_MESSAGE_LIMIT увеличено с 100 до 10000.
  • Добавлены секции параметров:
    • core.jet — задает параметры работы коннекторов Kafka Jet writer;
    • core.kafka.consumer — задает параметры десериализации значений Kafka;
    • springdoc — задает пути до спецификации REST API системы Prostore.
  • Для следующих параметров добавлена поддержка списка из нескольких коннекторов:
    • ADP_REST_START_LOAD_URL,
    • ADP_REST_STOP_LOAD_URL,
    • ADP_MPPW_CONNECTOR_VERSION_URL,
    • ADP_MPPR_QUERY_URL,
    • ADP_MPPR_CONNECTOR_VERSION_URL.

REST API

  • Запрос метода /datamarts[/{datamart}]/query расширен опциональным параметром maxRowsToRead, который передается в теле сообщения и задает максимальное количество строк, возвращаемых в ответе.
  • Ответ метода /datamarts/{datamart}/entities/{entity}, расширен опциональным параметром lastCn. Параметр содержит номер последней операции записи, выполненной в сущности.
  • Ответ метода /versions расширен строкой с версией коннектора Kafka Jet writer.

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

  • Запрос CREATE READABLE EXTERNAL TABLE расширен ключевым словом FORMAT и новыми параметрами ключевого слова OPTIONS, предназначенными для создания внешней readable-таблицы для загрузки данных из брокера Kafka.
  • Запрос INSERT SELECT FROM external_table расширен поддержкой внешних readable-таблиц в качестве таблиц, определяющих параметры загрузки данных из топика Kafka.
  • Ответ COMMIT DELTA расширен полями delta_num, cn_from и cn_to, содержащими информацию о номере дельты, а также о первой и последней операции записи в дельте.
  • Ответ CHECK_VERSIONS расширен строкой с версией коннектора Kafka Jet writer.
  • В физических таблицах СУБД ADB и ADP изменен формат имен индексов первичных ключей: теперь он не включает имя логической БД.
  • В процесс отмены операции загрузки данных добавлена дополнительная проверка, что загрузка данных из Kafka остановлена перед отменой операции.

Исправления

  • Исправлен конфликт номеров операций записи, который мог происходить при совпадении времени закрытия дельты и выполнения операции записи вне дельты.
  • Исправлена ошибка в SELECT-запросах, возникавшая при наличии подзапроса с ключевым словом WITH.
  • Исправлена ошибка, возникавшая в СУБД ADQM при попытке переименовать логическую таблицу с помощью ALTER TABLE RENAME.
  • Для СУБД ADB и ADP исправлено переименование индексов в физических таблицах при переименовании логической таблицы с помощью ALTER TABLE RENAME.

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

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

Обновление документации

Версия 6.4 (31.05.2023)

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

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

Роли и полномочия

Доступ к запросам, доступным в системе, разграничен на основе ролей. Изменения касаются всех внешних интерфейсов: JDBC и REST API.

Система предоставляет фиксированный набор ролей. Роли, используемые нодой Prostore по умолчанию, задаются в конфигурации ноды с помощью параметра CORE_DEFAULT_ROLES. Если в системе включена аутентификация, для каждого отправителя запроса можно назначить свои роли с помощью значения атрибута roles, заданного в авторизационном токене.

По умолчанию, если в конфигурации или авторизационном токене не определено иное, сохраняется прежнее поведение системы: все пользователи и внешние системы по умолчанию имеют полный доступ к Prostore.

Партиционирование данных

Для СУБД ADP добавлена возможность партиционирования данных. Партиционирование позволяет распределять данные на подмножества (партиции) и масштабировать данные как вертикально — в пределах одного датасорса, так и горизонтально — по разным датасорсам. Эффективное распределение данных по партициям позволяет увеличить скорость обработки запросов к партициям по сравнению с запросами, которые обращаются к полному набору данных.

Партиционирование данных реализуется с помощью логических таблиц новых видов — партиционированных таблиц и партиций. Подробнее о настройке см. в разделе «Управление партиционированием данных».

Логирование IP-адресов отправителей запросов

Добавлена возможность вывода IP-адресов отправителей запросов в JSON-логах системы. Вывод IP-адресов настраивается в logback.xml с помощью параметра clientIp, как описано в разделе «Настройка JSON-логов».

Изменения

Добавлен параметр конфигурации CORE_DEFAULT_ROLES, который задает список ролей, используемых при отсутствии информации о ролях в авторизационном токене или отсутствии аутентификации.

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

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

Обновление документации

  • Добавлены разделы:
    • Как устроена система > Основные понятия > Партиционирование данных,
    • Как устроена система > Основные понятия > Партиционированная таблица,
    • Как устроена система > Основные понятия > Партиция,
    • Как устроена система > Основные понятия > Нода Prostore (нода),
    • Работа с системой > Управление партиционированием данных,
    • Работа с системой > Подключение > Роли и полномочия,
    • Как устроена система > Кластеризация Prostore,
    • Запуск в эксплуатацию > Конфигурация > Конфигурация кластера,
    • Справочная информация > Формат даты и времени в ответах REST API.
  • Раздел «CREATE TABLE» расширен синтаксисом и примерами создания партиционированных таблиц и партиций.
  • Раздел «Маршрутизация» расширен секциями с описанием маршрутизации запросов к партиционированным таблицам и партициям.
  • Раздел «Настройка retention-правил» переименован в «Управление retention-правилами».
  • Раздел «Конфигурация системы» переименован в «Конфигурация ноды».

Версия 6.3 (04.04.2023)

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

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

Retention-правила

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

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

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

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

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

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

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

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

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

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

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

  • CHECK_JWKS — обновляет кэш публичных ключей, используемый для проверки авторизационных токенов при аутентификации.
  • ALTER TABLE ADD RETENTION — добавляет retention-правило для существующей логической таблицы.
  • ALTER TABLE DROP RETENTION — удаляет retention-правило.

Материализованные представления 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 при отсутствии целевого столбца/целевой таблицы.
  • Ошибка в запросах ALTER TABLE ADD COLUMN IF NOT EXISTS при наличии целевого столбца в таблице.

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

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

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

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

Обновление документации

  • Добавлены разделы:
    • Основные понятия > Холодные данные,
    • Основные понятия > Остужение данных,
    • Основные понятия > Retention-правило,
    • Основные понятия > Тип датасорса,
    • Подключение > Аутентификация,
    • Работа с системой > Настройка retention-правил,
    • REST API > Swagger UI,
    • Запросы SQL+ > CHECK_JWKS,
    • Запросы SQL+ > ALTER TABLE ADD RETENTION,
    • Запросы SQL+ > ALTER TABLE DROP RETENTION,
    • Release notes.
  • В раздел «Настройка JSON-логов» добавлены параметры queryId (идентификатор, полученный в REST-запросе) и subjectId (идентификатор владельца авторизационного токена).
  • Разделы «REST API» расширены примерами запросов с авторизационным токеном.
  • Раздел CREATE TABLE расширен описанием ключевого слова RETENTION.
  • Раздел «Подключение» > «Подключение с помощью SQL-клиента» расширен инструкциями по настройке подключения с указанием авторизационного токена.
  • Раздел «Порядок перезапуска системы» удален.

Версия 6.2.1 (03.03.2023)

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

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

Версия 6.2 (14.02.2023)

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

COMMIT DELTA IMMEDIATE

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

Ключевое слово IMMEDIATE позволяет включить в дельту операции записи, начатые в этой дельте и выполненные в рамках непрерывного диапазона завершенных операций, и исключить из дельты все остальные операции — незавершенные и следующие по номерам за незавершенными.

Операции, исключенные из дельты, становятся отдельными операциями записи без метки времени. Исключенные операции получают свою метку времени при закрытии дельты, следующей после завершения этих операций. До установки метки времени те изменения данных, которые были внесены такими операциями, доступны в запросах на чтение и выгрузку данных при указании номеров операций.

Запрос COMMIT DELTA без ключевого слова IMMEDIATE работает так же, как и раньше: если все операции записи дельты завершены, дельта закрывается, иначе выдается ошибка.

Закрыть дельту запросом COMMIT DELTA или COMMIT DELTA IMMEDIATE можно, только если завершены все операции записи логической БД, начатые до этой дельты.

WITH в SELECT-запросах и подзапросах

Синтаксис SELECT-запроса расширен опциональным ключевым словом WITH, которое позволяет использовать обобщенные табличные выражения (Common Table Expressions или CTE).

Ключевое слово доступно в запросах к СУБД ADB и ADP.

Ключевое слово WITH доступно во всех видах SELECT-запросов и SELECT-подзапросов: в отдельных запросах на выборку данных, в подзапросах в составе DDL-запросов на создание логических и материализованных представлений, в подзапросах в составе INSERT SELECT и т.д.

В табличных выражениях можно использовать любые поддерживаемые ключевые слова, в том числе FOR SYSTEM_TIME, а также другие табличные выражения того же запроса. В табличных выражениях недоступно использование операторов, изменяющих данные: INSERT, UPSERT и DELETE.

Рекурсивные и материализованные табличные выражения не поддерживаются.

SELECT-запросы и подзапросы без FROM

В SELECT-запросы и подзапросы добавлена возможность не указывать ключевое слово FROM. Это может быть полезно, например, при вычислении выражений на основе констант.

Возможность доступна в СУБД ADB, ADP и ADQM. Подробнее см. в разделе «Поддержка SQL».

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

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

INSERT SELECT из ADP1 в ADP2

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

Внешние таблицы в GET_ENTITY_DDL

Запрос GET_ENTITY_DDL и API-метод /datamarts/{datamart}/entities/{entity}/ddl теперь поддерживают все виды внешних таблиц: внешние таблицы загрузки и выгрузки, а также внешние readable- и writable-таблицы.

Ключевые слова IF EXISTS и IF NOT EXISTS в DDL-запросах

Опциональное ключевое слово IF NOT EXISTS добавлено в запросы:

  • CREATE DATABASE,
  • CREATE TABLE,
  • CREATE MATERIALIZED VIEW,
  • CREATE DOWNLOAD EXTERNAL TABLE,
  • CREATE UPLOAD EXTERNAL TABLE,
  • CREATE WRITABLE EXTERNAL TABLE,
  • CREATE READABLE EXTERNAL TABLE.

Опциональное ключевое слово IF EXISTS добавлено в запросы:

  • DROP DATABASE,
  • ALTER VIEW,
  • DROP VIEW,
  • DROP DOWNLOAD EXTERNAL TABLE,
  • DROP UPLOAD EXTERNAL TABLE,
  • DROP WRITABLE EXTERNAL TABLE,
  • DROP READABLE EXTERNAL TABLE.

Изменения

Опциональные ключи в запросах CREATE READABLE/WRITABLE EXTERNAL TABLE для ADB и ADP

Ключевые слова PRIMARY KEY и DISTRIBUTED BY, которые задают первичный ключ и ключ шардирования, стали опциональными в запросах CREATE READABLE EXTERNAL TABLE и CREATE WRITABLE EXTERNAL TABLE в случаях, когда связанная standalone-таблица размещается в ADB или ADP.

Также PRIMARY KEY и DISTRIBUTED BY по-прежнему опциональны при создании внешней таблицы, если связанная standalone-таблица уже существует в датасорсе.

Унификация имен датасорсов в GET_CHANGES и GET_ENTITY_DDL

В ответах GET_CHANGES и GET_ENTITY_DDL унифицировано написание имен датасорсов: теперь имя датасорса всегда возвращается в одинарных кавычках и в верхнем регистре (например, 'ADP'), независимо от того, как оно было написано в оригинальном DDL-запросе.

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

  • В SELECT-запросах изменен порядок следования ключевых слов OFFSET и FETCH; теперь используется OFFSET... FETCH.... Прежний порядок FETCH... OFFSET... не рекомендуется использовать, так как его поддержка может быть удалена в будущем.
  • INSERT INTO download_external_table теперь можно исполнять как подготовленный запрос (prepared statement).
  • В UPSERT SELECT добавлена проверка на наличие первичного ключа в запросе.
  • В секцию конфигурации zookeeper добавлен параметр ZOOKEEPER_DS_MAX_SEQUENCE_SIZE.
  • Добавлена возможность подключения системы к СУБД ADB и ADP, использующим аутентификацию SCRAM-SHA-256.
  • Логи об ошибках ADB теперь включают текст ошибки, полученный от ADB.

Исправления

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

Обновление документации

  • Раздел «COMMIT DELTA» расширен описанием ключевого слова IMMEDIATE.
  • Раздел «SELECT» расширен описанием ключевого слова WITH.

Версия 6.1.1 (13.01.2023)

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

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

Версия 6.1 (21.12.2022)

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

REST API

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

INSERT SELECT ADB -> ADP

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

TRUNCATE ACTUAL и ERASE DELTA для ADG

Для ADG добавлена поддержка запросов TRUNCATE ACTUAL и ERASE DELTA. Теперь эти запросы доступны для всех поддерживаемых СУБД хранилища.

Изменения

Ответы

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

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

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

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

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

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

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

Логи

  • Добавлена возможность вывода идентификаторов запросов, переданных по REST API, в JSON-логах системы. Вывод идентификаторов настраивается в logback.xml с помощью параметра queryId.
  • В логи добавлена информация о датасорсах, где были выполнены запросы.
  • Удален Logback.xml из JDBC-драйвера. На стороне внешних систем, использующих JDBC, следует отключить JDBC-логирование.

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

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

Исправления

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

Обновление документации

  • Добавлены разделы:
    • Работа с системой > Подключение > Подключение с помощью HTTP-клиента;
    • Ограничения;
    • Ограничения > Ограничения СУБД.
  • Раздел «Ограничения системы» перемещен в раздел «Ограничения».
  • Раздел «Запросы SQL+» вынесен из главы «Справочная информация» и оформлен отдельной главой.

Версия 6.0 (31.10.2022)

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

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

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

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

В документации для обозначения сервера или кластера СУБД, находящегося в хранилище данных, введен термин «датасорс». Тип СУБД датасорса обозначается как «тип датасорса».

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

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

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

Запросы:

  • ALTER TABLE RENAME,
  • ALTER TABLE ADD COLUMN,
  • ALTER TABLE RENAME COLUMN,
  • ALTER TABLE DROP COLUMN.

Функции:

  • TIMESTAMPADD,
  • TIMESTAMPDIFF.

Выражения с FOR SYSTEM_TIME, доступные при обращении к логическим таблицам:

  • FOR SYSTEM_TIME AS OF CN sys_cn,
  • FOR SYSTEM_TIME STARTED CN (sys_cn1, sys_cn2),
  • FOR SYSTEM_TIME FINISHED CN (sys_cn1, sys_cn2).

CHECK_SUM и CHECK_SUM_SNAPSHOT для горячей дельты

Добавлена возможность рассчитывать контрольную сумму записей в горячей возможности с помощью запросов CHECK_SUM и CHECK_SUM_SNAPSHOT. Возможность доступна только для логических таблиц.

JVM-метрики

Добавлена поддержка JVM-метрик, собираемых с помощью Micrometer.

Подробнее о метриках см. в разделе «Запуск в эксплуатацию» > «Запрос JVM-метрик».

Изменения

Ограничения

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

Ответы

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

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

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

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

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

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

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

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

  • Для CHECK_DATA изменена проверка по запросу без столбцов: теперь она выполняется так же, как по запросу со столбцами, — по контрольной сумме, а не количеству записей.
  • Расширена поддержка функций CURRENT_DATE, CURRENT_TIME и CURRENT_TIMESTAMP в СУБД ADB и ADP: теперь их можно указывать без CAST.

Исправления

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

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

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

Обновление документации

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

Версия 5.8 (25.08.2022)

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

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

  • Запросы RESET_STATISTICS и SYNC.
  • Загружаемый тип данных uuid.

Изменения

  • Добавлены ограничения:
    • недоступно параллельное выполнение запросов ROLLBACK DELTA;
    • недоступен расчет контрольной суммы в горячей дельте с помощью CHECK_SUM;
    • в псевдонимах (алиасах) сущностей и столбцов недоступны символы, отличные от латинских букв, цифр и символов подчеркивания.
  • Для SELECT-запросов удалена поддержка ключевого слова COLLATE.
  • В ответ GET_ENTITY_STATISTICS добавлены параметры ROWS_COUNT и ROWS_COUNT_DELTA.
  • Добавлены параметры конфигурации: CORE_STATISTICS_DATA_COUNT_ENABLED, TARANTOOL_QUERY_REST_ENDPOINT и DTM_DELTA_WATCHER_POOL_SIZE.

Изменения в поддержке ADG

Для ADG теперь поддерживаются:

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

Для ADG не поддерживаются:

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

Исправления

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

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

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

Обновление документации

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

  • Основные понятия > Операция по изменению схемы;
  • Основные понятия > История изменений данных;
  • О системе Prostore > Возможности системы;
  • Справочная информация > Соглашения об именах.

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

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

Версия 5.7 (23.06.2022)

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

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

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

Изменения

  • Расширен список операций, хранящихся в журнале: теперь в нем также хранится информация об отмененных операциях.
  • Расширен синтаксис запроса GET_CHANGES: теперь в запросе доступен флаг, который включает вывод отмененных операций.
  • В SELECT-запросах изменен порядок выбора записей:
    • запросы без ключевого слова FOR SYSTEM_TIME теперь выбирают записи, актуальные по состоянию на последнюю дельту по текущему времени сервера; записи дельт, закрытых с будущими датой и временем, не возвращаются;
    • запросы к standalone-таблицам с выражениями FOR SYSTEM_TIME STARTED IN и FOR SYSTEM_TIME FINISHED IN теперь всегда возвращают пустой результат (раньше эти выражения игнорировались).
  • Обновлена конфигурация системы:
    • для параметра DTM_METRICS_SCOPE удалено значение requests,
    • секция metrics заменена на секцию statistics,
    • добавлен параметр ADP_POOL_REQUEST_TIMEOUT.

Исправления

  • Выбор устаревших данных.
  • Переключение между нодами ADQM при выполнении одной операции записи.
  • Валидация значения LOCATION в CREATE READABLE EXTERNAL TABLE и CREATE WRITABLE EXTERNAL TABLE.
  • Синхронизация материализованных представлений со связанными логическими БД, чьи дельты закрыты с будущими датой и временем.
  • Ошибка ERASE_CHANGE_OPERATION is not an EDDL statement.
  • Приведение BOOLEAN-значения к JDBC-типу в запросах INSERT INTO для ADQM.
  • Блокировка DDL-операций после выполнения DROP TABLE с указанием несуществующей СУБД.

Обновление документации

  • Обновлен дизайн схем.

Версия 5.6.1 (07.06.2022)

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

Изменения

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

Обновление документации

  • Добавлен раздел «Основные понятия» > «Очередь операций по изменению схемы».

Версия 5.6 (19.05.2022)

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

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

Изменения

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

Исправления

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

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

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

Обновление документации

  • Переработан раздел «Запросы SQL+»: запросы разделены по категориям, и для каждого запроса добавлено краткое описание.
  • Дополнен список ограничений в разделе «Ограничения системы» и справочнике запросов: ограничения, встречавшиеся в блоках примечаний, теперь вынесены в явном виде в список ограничений.

Версия 5.5 (06.04.2022)

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

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

  • Возможность работать со standalone-таблицами — таблицами, которые не относятся к логической и физической схемам данных.
  • Новые сущности, предназначенные для работы со standalone-таблицами: внешняя writable-таблица и внешняя readable-таблица.
  • Запросы:
    • запросы по управлению внешними writable- и readable-таблицами:
      • CREATE WRITABLE EXTERNAL TABLE;
      • DROP WRITABLE EXTERNAL TABLE;
      • CREATE READABLE EXTERNAL TABLE;
      • DROP READABLE EXTERNAL TABLE;
    • ERASE_CHANGE_OPERATION;
    • ERASE_WRITE_OPERATION.

Изменения

  • Синтаксис CREATE UPLOAD EXTERNAL TABLE расширен ключевым словом OPTIONS; значение auto.create.sys_op.enable=false ключевого слова позволяет создать таблицу, предназначенную для загрузки в standalone-таблицу.
  • Изменен способ возобновления операций по обновлению данных: теперь нужно повторить исходный запрос, добавив в его начало ключевое слово RETRY, а повторение запроса без ключевого слова не возобновляет обработку операции.
  • Добавлены параметры конфигурации TARANTOOL_DB_SYNC_BUFFER_SIZE и ADQM_BUFFER_SIZE.

Исправления

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

Обновление документации

  • Добавлены разделы:
    • Работа с системой > Управление операциями;
    • Справочная информация > Формат сообщений в системном топике Kafka.
  • Запрос INSERT INTO logical_table переименован в справочнике запросов в INSERT SELECT FROM upload_external_table. Переименование связано с тем, что теперь запрос позволяет загружать данные не только в логические таблицы, но и в standalone-таблицы; синтаксис запроса не изменился, изменилось только имя запроса в документации.
  • Раздел «Разбор ошибок загрузки и обновления данных» переименован в «Причины ошибок при загрузке и обновлении данных» и перенесен в главу «Справочная информация»; информация об обработке операций записи вынесена в новый раздел «Управление операциями».

Версия 5.4 (21.02.2022)

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

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

Запросы:

  • UPSERT VALUES,
  • CHECK_SUM_SNAPSHOT.

Изменения

  • Начало строки подключения изменено с jdbc:adtm на jdbc:prostore.
  • Запрос UPSERT VALUES переименован в INSERT VALUES, запрос UPSERT SELECT — в INSERT SELECT.
  • Конфигурация:
    • добавлен параметр KAFKA_STATUS_EVENT_TOPIC;
    • изменены значения по умолчанию:
      • параметр ADQM_DB_NAME теперь имеет значение по умолчанию default;
      • параметр ADQM_CLUSTER теперь имеет значение по умолчанию default_cluster;
      • значения параметра ADQM_SHARDING_EXPR изменены с cityHash64 и intAdd на CITY_HASH_64 и INT_ADD соответственно;
    • начало путей io.arenadata во всех вхождениях заменено на ru.datamart.
  • Добавлено ограничение на имена логических сущностей и их столбцов: имя должно начинаться с латинской буквы, после первого символа могут следовать латинские буквы, цифры и символы подчеркивания в любом порядке.
  • Изменен ответ GET_CHANGES в случае отсутствия журнала: теперь возвращается пустой объект ResultSet, а не ошибка.

Исправления

  • Приведение INT-BOOLEAN в JOIN-соединениях запроса CREATE MATERIALIZED VIEW.
  • Возможность создания нескольких дельт в одну секунду.
  • GET_ENTITY_DDL для системных представлений INFORMATION_SCHEMA.
  • Агрегация данных с помощью COUNT в запросах на выгрузку из ADQM.
  • Тип данных UUID в условии типа WHERE uuid_col IN ('uuid_value').
  • Обработка некорректного имени поля в топике Kafka.
  • Агрегационные запросы к логическим таблицам, размещенным в ADQM и имеющим первичный ключ типа UUID.
  • Ошибка при определении категории и подкатегории SELECT-запроса.
  • JDBC-сериализация значений NULL.

Обновление документации

  • Добавлены неучтенные ранее параметры конфигурации для ADG: TARANTOOL_VERTX_WORKERS, TARANTOOL_DB_SYNC_CONNECTION_TIMEOUT, TARANTOOL_DB_SYNC_READ_TIMEOUT и TARANTOOL_DB_SYNC_REQUEST_TIMEOUT.
  • Локализация статуса 2 операции записи изменена с «Ошибка» на «Отменяется».
  • Имя логической базы данных в примерах изменено с sales на marketing.

Версия 5.3 (14.01.2022)

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

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

  • Материализованные представления ADB -> ADQM;
  • Вставка данных из ADB в ADQM с помощью UPSERT SELECT;
  • Запросы:
    • CHECK_MATERIALIZED_VIEW;
    • DENY_CHANGES;
    • ALLOW_CHANGES;
    • GET_CHANGES;
    • GET_ENTITY_DDL.
  • Перезапуск незавершенных операций по обновлению данных.
  • Журнал DDL-операций.
  • Выбор оптимальной СУБД хранилища при выгрузке данных.

Изменения

  • Удалено требование на целочисленные ключи шардирования в логических таблицах: теперь ключ может содержать столбцы с любыми типами данных.
  • В системное представление tables добавлен новый тип сущности — MATERIALIZED VIEW.
  • Конфигурация системы:
    • добавлен параметр ADQM_SHARDING_EXPR;
    • добавлен параметр ADB_MPPW_USE_ADVANCED_CONNECTOR;
    • удален параметр EDML_DATASOURCE;
    • исправлен путь до параметра ADB_WITH_HISTORY_TABLE с adb:mppw:with-history-table на adb:with-history-table;
    • исправлен путь до параметров ADG_MAX_MSG_PER_PARTITION и ADG_CB_FUNC_IDLE: из пути удален параметр kafka.

Исправления

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

Обновление документации

  • Добавлены разделы:
    • Справочная информация > Зарезервированные слова — содержит список слов, которые не могут использоваться как имена сущностей и имена полей;
    • Справочная информация > Ограничения системы — содержит список всех ограничений, имеющихся в запросах системы.
  • Из описания запроса CREATE TABLE удалено неподдерживаемое ключевое слово DEFAULT.
  • Изменена терминология: архивация актуальных записей теперь называется удалением, а удаление записей с помощью запроса TRUNCATE HISTORY — удалением записей с историей.

Версия 5.2 (26.10.2021)

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

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

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

Изменения

  • Изменена маршрутизация SELECT-запросов: теперь учитывается не только категория запроса, но и набор узлов кластера, для которых предназначен запрос.
  • Ограничено исполнение запросов по управлению схемой данных в сервисной базе данных INFORMATION_SCHEMA.
  • Изменен перечень операций, отменяемых запросом ROLLBACK DELTA: отменяются все завершенные операции (как операции загрузки данных, так и обновления данных), а также незавершенные операции загрузки данных; незавершенные операции обновления данных не отменяются.
  • Конфигурация:
    • добавлены параметры AUTO_RESTORE_STATE, ADB_MAX_RECONNECTIONS, ADB_QUERIES_BY_CONNECT_LIMIT и ADB_RECONNECTION_INTERVAL;
    • добавлена секция параметров autoSelect для настройки порядка выбора СУБД в зависимости от категории и подкатегории запросов;
    • удален параметр CORE_TIME_ZONE (больше не используется);
    • путь к параметру DTM_METRICS_PORT изменен с management.server.port на server.port;
    • путь к параметру DTM_CORE_METRICS_ENABLED изменен с core.metrics.isEnabled на core.metrics.еnabled.

Исправления

  • Микросекунды в условии WHERE в SELECT-запросах.
  • RIGHT JOIN со значениями NULL в запросах на выгрузку данных.
  • Кириллица в условии WHERE запросов CREATE VIEW и ALTER VIEW.

Обновление документации

  • Добавлены разделы:
    • Работа с системой > Обновление данных;
    • Работа с системой > Другие действия > Разбор ошибок загрузки и обновления данных;
    • Обзор понятий, компонентов и связей > Связи с другими компонентами и системами > Порядок обработки запросов на обновление данных;
    • Эксплуатация > Конфигурация > Конфигурация коннекторов.
  • Описание конфигурационных параметров системы перенесено из раздела «Конфигурация» в раздел «Конфигурация системы».
  • Имя системы заменено на Prostore в соответствии с именем проекта с открытым исходным кодом.
  • Скорректировано описание служебного поля sys_op: поле должно отсутствовать во внешней таблице загрузки и логической таблице и должно присутствовать в загружаемых сообщениях топика Kafka.

Версия 5.1 (27.08.2021)

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

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

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

Изменения

  • CHECK_DATA и CHECK_SUM:
    • добавлен коэффициент нормализации, повышающий максимально допустимое количество записей в проверяемых дельтах;
    • изменен расчет контрольных сумм: теперь они считаются по дельтам, а не отдельным операциям записи.
  • CHECK_SUM:
    • изменен расчет контрольной суммы по таблице и представлению: теперь он аналогичен расчету, который выполняется для CHECK_DATA;
    • изменен расчет контрольной суммы по логической БД: теперь контрольные суммы таблиц складываются, а не проходят дополнительный этап хеширования.
  • Добавлен параметр конфигурации DTM_VERTX_BLOCKING_STACKTRACE_TIME;

Исправления

  • Имена и размер логических типов данных CHAR и UUID в INFORMATION_SCHEMA.
  • Выгрузка данных с LIMIT.
  • Обогащение запроса на чтение данных для ADQM.
  • JOIN в запросах на чтение данных из ADQM.
  • Запрос CONFIG_STORAGE_ADD.
  • Календарь в JDBC-методах getDate, getTime и getTimestamp.
  • Обновление столбца table_datasource_type в системном представлении INFORMATION_SCHEMA.TABLES после удаление логической таблицы из СУБД.
  • Назначение категории «Другой запрос» (Undefined) для SELECT-запросов.

Обновление документации

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

  • Сборка и развертывание;
  • Работа с системой > Другие действия > Получение информации о SELECT-запросе;
  • Работа с системой > Другие действия > Проверка месторасположения логической сущности;
  • Эксплуатация > Часовые пояса системы и компонентов.

Версия 5.0 (12.08.2021)

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

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

Изменения

  • В системное представление tables добавлен столбец table_datasource_type.
  • Конфигурация:
    • добавлены параметры для управления СУБД ADP;
    • добавлены параметры запроса prepared statement для СУБД ADB: ADB_PREPARED_CACHE_MAX_SIZE, ADB_PREPARED_CACHE_SQL_LIMIT и ADB_PREPARED_CACHE;
    • в список значений следующих параметров добавлена СУБД ADP: CORE_PLUGINS_ACTIVE, DTM_CORE_PLUGINS_RELATIONAL, DTM_CORE_PLUGINS_ANALYTICAL, DTM_CORE_PLUGINS_DICTIONARY, DTM_CORE_PLUGINS_UNDEFINED;
    • добавлен параметр DTM_LOGGING_LEVEL для управления уровнем логирования;
    • конкретные IP-адреса заменены на localhost.

Исправления

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

Обновление документации

  • Добавлен раздел «Эксплуатация» > «Схемы развертывания».

Версия 4.1 (26.07.2021)

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

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

  • Ключевое слово OFFSET, доступное в SELECT-запросах.
  • Ключевое слово FETCH NEXT <N> ROWS ONLY как полная альтернатива ключевому слову LIMIT <N> в SELECT-запросах.

Изменения

  • ROLLBACK DELTA: теперь запрос отменяет как завершенные, так и выполняемые операции записи.
  • Конфигурация:
    • значение параметра ADB_EXECUTORS_COUNT изменено с 20 на 3;
    • значение параметра ADB_MAX_POOL_SIZE изменено с 5 на 3;
    • добавлен параметр DELTA_ROLLBACK_STATUS_CALLS_MS.

Версия 4.0 (12.07.2021)

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

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

Изменения

  • Добавлены параметры конфигурации, управляющие материализованными представлениями:
    • MATERIALIZED_VIEWS_SYNC_PERIOD_MS,
    • MATERIALIZED_VIEWS_RETRY_COUNT,
    • MATERIALIZED_VIEWS_RETRY_COUNT.

Исправления

  • Ошибка FDW server already exists при загрузке данных.
  • Метаданные, возвращаемые для логических типов LINK и UUID.
  • Работа SELECT-запросов с COUNT и LIMIT/FETCH NEXT N ROWS ONLY.
  • Загрузка данных в логические таблицы, размещенные в ADQM и имеющие первичный ключ со столбцом типа INT32.

Обновление документации

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

  • Справочная информация > Форматы даты и времени в запросах;
  • Работа с системой > Управление схемой данных > Проверка наличия логической сущности;
  • Эксплуатация > Настройка JSON-логов.

Версия 3.7.3 (30.06.2021)

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

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

  • Запрос ROLLBACK CRASHED_WRITE_OPERATIONS.

Изменения

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

  • в секцию vertx.pool добавлены параметры DTM_CORE_WORKER_POOL_SIZE и DTM_CORE_EVENT_LOOP_POOL_SIZE;
  • путь к параметру ADB_MAX_POOL_SIZE изменился с adb.maxSize на adb.poolSize;
  • в секцию adb добавлен параметр ADB_EXECUTORS_COUNT.

Обновление документации

  • Доработаны разделы CHECK_DATA и CHECK_SUM: описаны алгоритм и пример расчета контрольной суммы.
  • Уточнено описание формата загрузки и формата выгрузки данных.
  • В разделе «Минимальные системные требования» версия ADG обновлена до 2.7.2.