Хранилище сообщений

Сервис предназначен для регистрации и хранения сообщений Платформы с возможностью извлечения сообщений для повторной обработки в Платформе. В кластере может быть создан только один сервис с типом Хранилище сообщений.

Внимание

Хранение данных в версии 3.1

Основной способ хранения данных сервиса - DatareonDB. Сведения о работе с другими СУБД приведены в разделе Поддержка работы с СУБД MSSQL и PostgreSQL.

Внимание

Особенности при переходе c версии 3.0 на 3.1

При обновлении версии с 3.0 на 3.1 в качестве способа хранения будет использоваться DatareonDB. Для миграции данных используется дополнительный инструмент.

Внимание

Удаление данных в DatareonDB

Удаление записей из базы данных DatareonDB является виртуальным: физического удаления данных не осуществляется, но устанавливается метка о статусе сообщения (удалено или не удалено).

Внимание

Особенности работы в кластере

Обязательным условием для Хранилища сообщений, работающего с DatareonDB в кластере, содержащем больше одного сервера, является привязка к одному из серверов кластера. В частности, при создании сервис Хранилища сообщений требуется привязать к одному из серверов и настроить резервирование данных. При отказе сервера, к которому привязано Хранилище сообщений, необходимо привязать сервис к рабочему серверу (предпочтительный вариант, так как привязка будет активирована при любом применении конфигурации), либо использовать кнопку Перенести на другой сервер на странице сервера в ЦМ. Данные хранилища могут быть перенесены вручную, подробная информация приведена в разделе Хранение данных.

Создание сервиса

Для создания хранилища сообщений:

  1. В ЦН перейдите в раздел Сервисы.

  2. Нажмите на кнопку + над таблицей сервисов. В рабочей области страницы отобразится интерфейс создания / редактирования сервиса.

  3. На вкладке Основные заполните следующие поля:

    • Название: произвольное название сервиса, необязательно для заполнения.

    • Имя: уникальное имя сервиса, обязательно для заполнения.

    • Комментарий: описание сервиса, необязательно для заполнения.

  4. Для создания сервиса выберите вариант Хранилище сообщений в разделе Настройка сервисов.

  5. Для активации сервиса установите флажок Включен.

  6. После внесения данных нажмите на кнопку Сохранить изменения.

  7. Нажмите на кнопку Применить конфигурацию.

Если в кластер содержит больше одного сервера, дополнительно выполните следующие шаги:

  1. Скопируйте идентификатор сервиса из адресной строки:

    ../../_images/storage_setup1.png
  2. Перейдите на страницу сервера, к которому нужно привязать сервис.

  3. Перейдите в режим редактора конфигурации.

  4. В значении ключа modules добавьте в массив элемент-объект, в значении ключа entityId которого укажите идентификатор сервиса Хранилища сообщений.

    {
      "$type": "DT.ClusterConfiguration.Allocation.AllocationInfo, DT_Core",
      "entityId": "7dda7961-9825-448b-8c41-ac3526a490af",
      "reason": "FromConfig",
      "initialReason": "FromConfig"
    }
    
  5. После внесения данных нажмите на кнопку Сохранить.

  6. Нажмите на кнопку Применить конфигурацию:

    ../../_images/config_apply4.png

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

Путь к каталогу с файлами DatareonDB Хранилища сообщений отображается на странице Хранилища сообщений в ЦМ. Для резервного копирования данных следует скопировать этот каталог:

../../_images/ms_storage_path.png

Поддержка работы с СУБД MSSQL и PostgreSQL

Функциональность использования СУБД MSSQL и PostgreSQL для хранения данных сервиса поддерживается, но считается устаревшей. Новая функциональность сервиса, а также устранение ошибок выполняется только для способа хранения с использованием DatareonDB.

Вкладка Параметры с полями настроек подключения к СУБД убрана со страницы сервиса в ЦН, изменение настроек подключения к СУБД возможно в режиме редактирования конфигурации на странице сервиса в ЦН. В будущих релизах работа сервиса с СУБД MSSQL и PostgreSQL будет прекращена.

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

Миграция данных из MSSQL и PostgreSQL в DatareonDB

При установке версии 3.1 в качестве хранилища данных выбирается DatareonDB вне зависимости от текущих настроек. Для продолжения работы необходимо выполнить миграцию данных либо указать хранение данных в СУБД MSSQL и PostgreSQL и выполнить миграцию позже.

Миграция данных выполняется с помощью специальной утилиты-конвертера. Архив с утилитой и руководством по использованию доступен для скачивания на портале.

Чтобы переключить сервис на использование DatareonDB, на странице сервиса в ЦН в режиме редактирования конфигурации установите true в значении ключа internalStorage, сохраните изменения и примените конфигурацию.

Работа с записями Хранилища сообщений

Работа с записями Хранилища сообщений возможна в ЦМ на вкладке Сообщения.

Описание работы с шагами процессов обработки Хранилища сообщений находится в разделе Работа с Хранилищем сообщений.

Примеры методов C# для работы с записями Хранилища сообщений доступны в разделе Функции Хранилища сообщений.

Хранение данных

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

Файлы данных сервиса размещаются следующим образом:

  • Windows:

    путь_к_каталогу_с_данными_Платформы\Platform\Data\DatareonPlatformMessageStorage\идентификатор_сервиса_Хранилище_сообщений\DatareonStorage\MessageStorage

  • Linux:

    путь_к_каталогу_с_данными_Платформы/platform/data/DatareonPlatformMessageStorage/идентификатор_сервиса_Хранилище_сообщений/DatareonStorage/MessageStorage

Файлы с данными будут размещены на всех серверах, указанных при настройке резервирования данных сервиса.

Индексирование данных

Индексирование данных используется для выполнения поиска по телам сообщений в Хранилище.

Механизм индексирования данных запускается после загрузки Хранилища сообщений и завершения основных задач базы данных (проверка целостности, формирование новых колонок и заполнение их значениями). Индексирование данных повторяется каждые 5 минут в течение всего времени работы Платформы.

Примечание

По умолчанию индексирование данных выключено.

Включение / выключение индексирования осуществляется в ЦН в рабочей области сервиса Хранилище сообщений в режиме редактора конфигурации. При этом используется параметр сервиса "MessageStorageIndexationOptions" (тип строка) со следующими значениями:

  • "None" - индексирование данных включено.

  • "IndexationStopped" - индексирование данных выключено (значение по умолчанию).

Примечание

При изменении данного параметра требуется перезапуск сервиса.

Индексы размещаются следующим образом:

  • Windows:

    путь_к_каталогу_с_данными_Платформы\Data\MessageStorageSearchEngine\идентификатор_сервиса_Хранилище_сообщений

  • Linux:

    путь_к_каталогу_с_данными_Платформы/data/MessageStorageSearchEngine/идентификатор_сервиса_Хранилище_сообщений

В журнале сервиса отображаются записи об индексировании данных (уровень логирования Verbose).

Механизм индексирования отбирает не более 100 сообщений для индексирования за 1 раз. Тело каждого сообщения обрабатывается как обычная строка.

Каждому сообщению присваивается индекс, представляющий собой позицию идентификатора сообщения в файле Main. Файл содержит идентификаторы сообщений, на которые указывают токены, и позиции сообщений в базе данных Datareon DB.

Токены состоят из словесных сочетаний, Guid, чисел и меток дата-время, которые сохраняются поисковой системой в соответствующей папке.

Примечание

Отдельные символы, являющиеся частью словосочетания, не определяются как токены. Например, в словосочетании Как-нибудь дефис не является токеном, поскольку словосочетание Как-нибудь само по себе является отдельным токеном.

Под каждый токен строкового типа выделен свой файл, который содержит набор индексов, описанных выше.

Guid и число также хранятся в файлах. Для токена, содержащего Guid или число вычисляется хеш, по которому будет осуществляться поиск. Хеш-число хранится в соответствующем файле, содержащем множество хеш-ключей (не более 10000000 (десяти миллионов)). Данные размещаются следующим образом: хеш-число, количество индексов, и сами индексы. Данные хранятся в бинарном формате.

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

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

Метки дата-время содержатся в папках, структурированных следующим образом: {год}/{месяц}/{число} + файл с датой. Внутри файла данные размещаются без агрегации.

Время работы механизма индексирования не регламентировано и зависит от количества и размера сообщений.

Политика хранения данных

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

Политика хранения данных настраивается в конфигурации сервиса при помощи одного из следующих параметров:

  • "maxNumberOfStoredMessages" - количество последних сообщений, которые должны остаться в Хранилище после автоматического удаления более старых сообщений в соответствии с установленным ограничением.

  • "maxMessageRetentionTimeInDays" - количество дней хранения сообщений в Хранилище. После автоматического удаления в Хранилище останутся только сообщения, срок хранения которых не превышает установленное ограничение. Остальные сообщения будут автоматически удалены.

Значение параметров по умолчанию - 0 (выключено). Для включения параметров требуется установить значения, отличные от 0. Диапазон значений параметров: 0 - 2147483647.

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

Примечание

Во время непосредственной работы по удалению записей, не соответствующих ограничениям, в ЦМ выводится сообщение о недоступности подсчета количества сообщений в Хранилище.