Хранилище сообщений
Сервис предназначен для регистрации и хранения сообщений Платформы с возможностью извлечения сообщений для повторной обработки в Платформе. В кластере может быть создан только один сервис с типом Хранилище сообщений.
Внимание
Хранение данных в версии 3.1
Основной способ хранения данных сервиса - DatareonDB. Сведения о работе с другими СУБД приведены в разделе Поддержка работы с СУБД MSSQL и PostgreSQL.
Внимание
Особенности при переходе c версии 3.0 на 3.1
При обновлении версии с 3.0 на 3.1 в качестве способа хранения будет использоваться DatareonDB. Для миграции данных используется дополнительный инструмент.
Внимание
Удаление данных в DatareonDB
Удаление записей из базы данных DatareonDB является виртуальным: физического удаления данных не осуществляется, но устанавливается метка о статусе сообщения (удалено или не удалено).
Внимание
Особенности работы в кластере
Обязательным условием для Хранилища сообщений, работающего с DatareonDB в кластере, содержащем больше одного сервера, является привязка к одному из серверов кластера. В частности, при создании сервис Хранилища сообщений требуется привязать к одному из серверов и настроить резервирование данных. При отказе сервера, к которому привязано Хранилище сообщений, необходимо привязать сервис к рабочему серверу (предпочтительный вариант, так как привязка будет активирована при любом применении конфигурации), либо использовать кнопку Перенести на другой сервер на странице сервера в ЦМ. Данные хранилища могут быть перенесены вручную, подробная информация приведена в разделе Хранение данных.
Создание сервиса
Для создания хранилища сообщений:
В ЦН перейдите в раздел Сервисы.
Нажмите на кнопку + над таблицей сервисов. В рабочей области страницы отобразится интерфейс создания / редактирования сервиса.
На вкладке Основные заполните следующие поля:
Название: произвольное название сервиса, необязательно для заполнения.
Имя: уникальное имя сервиса, обязательно для заполнения.
Комментарий: описание сервиса, необязательно для заполнения.
Для создания сервиса выберите вариант Хранилище сообщений в разделе Настройка сервисов.
Для активации сервиса установите флажок Включен.
После внесения данных нажмите на кнопку Сохранить изменения.
Нажмите на кнопку Применить конфигурацию.
Если в кластер содержит больше одного сервера, дополнительно выполните следующие шаги:
Скопируйте идентификатор сервиса из адресной строки:
Перейдите на страницу сервера, к которому нужно привязать сервис.
Перейдите в режим редактора конфигурации.
В значении ключа modules добавьте в массив элемент-объект, в значении ключа entityId которого укажите идентификатор сервиса Хранилища сообщений.
{ "$type": "DT.ClusterConfiguration.Allocation.AllocationInfo, DT_Core", "entityId": "7dda7961-9825-448b-8c41-ac3526a490af", "reason": "FromConfig", "initialReason": "FromConfig" }
После внесения данных нажмите на кнопку Сохранить.
Нажмите на кнопку Применить конфигурацию:
После сохранения изменений и применения конфигурации будет автоматически создана база данных.
Путь к каталогу с файлами DatareonDB Хранилища сообщений отображается на странице Хранилища сообщений в ЦМ. Для резервного копирования данных следует скопировать этот каталог:

Поддержка работы с СУБД 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 (десяти миллионов)). Данные размещаются следующим образом: хеш-число, количество индексов, и сами индексы. Данные хранятся в бинарном формате.
В момент индексирования происходит последовательная запись данных в файлы. После завершения индексирования механизм обрабатывает каждый отдельный файл и осуществляет агрегацию данных как указано выше.
Для меток дата-время хеш-число вычисляется в нескольких комбинациях для возможности поддержки поиска по простой дате, дате с указанием времени и году с месяцем.
Метки дата-время содержатся в папках, структурированных следующим образом: {год}/{месяц}/{число} + файл с датой. Внутри файла данные размещаются без агрегации.
Время работы механизма индексирования не регламентировано и зависит от количества и размера сообщений.
Поиск по телам сообщений
Функциональность поиска по телам сообщений доступна в ЦМ в настройках фильтрации и поиска сообщений.
Примечание
Функциональность поиска по телам сообщений не работает при выключенном индексировании данных. Во время непосредственной работы механизма индексирования поиск недоступен. Использование поиска доступно только авторизованным пользователям при хранении данных Хранилища сообщений в DatareonDB.
Поиск осуществляется из поисковой строки по отдельным словам, по словосочетаниям, а также с учетом или без учета регистра.
При поступлении в поисковую систему строки поиска разбивается на токены. Для каждого токена осуществляется поиск в соответствующем каталоге и файлах.
Для строкового токена возможно осуществление поиска во всех каталогах, относящихся к строкам. Например, если введено не слово целиком, а часть слова.
В первую очередь поиск всегда осуществляется по каждому токену в отдельности. Данные по найденным индексам собираются и агрегируются, очищаясь от дублей.
Затем, если параметры "fullPhraseSearch"
(флажок Поиск словосочетания в интерфейсе настроек фильтрации) и "strictSearch"
(флажок Регистрозависимый поиск) имеют значение false, обрабатываются соответствующие данные из файла Main, хранящего идентификаторы сообщений. Далее идентификаторы сообщений возвращаются в качестве результата поиска.
Если хотя бы один из параметров "fullPhraseSearch"
и "strictSearch"
имеет значение true, выполняются следующие действия:
Отбираются идентификаторы и тела сообщений, индексы которых определены ранее.
Выполняется параллельный поиск подстроки в строке по каждому телу сообщения.
При нахождении подстроки в строке – идентификатор сообщения добавляется в результирующий набор идентификаторов.
Политика хранения данных
Политика хранения данных позволяет ограничить максимальное количество сообщений в Хранилище или срок их хранения. При превышении установленных ограничений соответствующие записи будут автоматически удаляться из Хранилища сообщений.
Политика хранения данных настраивается в конфигурации сервиса при помощи одного из следующих параметров:
"maxNumberOfStoredMessages"
- количество последних сообщений, которые должны остаться в Хранилище после автоматического удаления более старых сообщений в соответствии с установленным ограничением."maxMessageRetentionTimeInDays"
- количество дней хранения сообщений в Хранилище. После автоматического удаления в Хранилище останутся только сообщения, срок хранения которых не превышает установленное ограничение. Остальные сообщения будут автоматически удалены.
Значение параметров по умолчанию - 0 (выключено). Для включения параметров требуется установить значения, отличные от 0. Диапазон значений параметров: 0 - 2147483647.
При включении одного или обоих параметров проверка записей в Хранилище сообщений на соответствие установленным ограничениям и удаление записей, не соответствующих ограничениям, производится ежедневно в полночь.
Примечание
Во время непосредственной работы по удалению записей, не соответствующих ограничениям, в ЦМ выводится сообщение о недоступности подсчета количества сообщений в Хранилище.