Хранилище сообщений
Сервис предназначен для регистрации и хранения сообщений Платформы с возможностью извлечения сообщений для повторной обработки в Платформе. В кластере может быть создан только один сервис с типом Хранилище сообщений.
Внимание
Особенности работы с версии 3.1.0
Основной способ хранения данных Хранилища сообщений - DatareonDB. Поддержка работы Хранилища сообщений с СУБД MSSQL и PosgreSQL сохраняется. Вкладка Параметры с полями настроек подключения к СУБД убрана со страницы Хранилища сообщений в ЦН, изменение настроек подключения к СУБД возможно в режиме редактирования конфигурации на странице Хранилища сообщений в ЦН.
Внимание
Особенности работы с версии 3.1.1.0
При работе с СУБД PosgreSQL сервис подключается по имени базы данных в регистре, указанном в настройках. По умолчанию подключение производится по имени базы данных в нижнем регистре. Если сервис подключен к базе данных, имя которой содержит символы верхнего регистра, рекомендуется выключить сервис, переименовать базу данных и включить сервис снова.
Внимание
Особенности работы с версии 3.1.1.0
Удаление записей из базы данных DatareonDB является виртуальным: физического удаления данных не осуществляется, но устанавливается метка о статусе сообщения (удалено или не удалено).
Внимание
Если Хранилище сообщений создано в версии 3.1.0, оно будет хранить данные в DatareonDB. Если Хранилище сообщений хранит данные в СУБД (например, если Хранилище сообщений создавалось в предыдущих версиях Платформы), после обновления Платформы на версию 3.1.0 возможно переключение на хранение данных в DatareonDB. Во время переключения перенос записей Хранилища сообщений возможен при помощи специальной утилиты-конвертера. Если не произвести перенос, при переходе на DatareonDB Платформа создаст пустую базу данных. Чтобы переключить Хранилище сообщений на использование DatareonDB, на странице Хранилища сообщений в ЦН в режиме редактирования конфигурации установите true в значении ключа internalStorage, сохраните изменения и примените конфигурацию. Архив с утилитой и руководством по использованию доступен на портале скачивания.
Внимание
Особенности работы с версии 3.1.0
Обязательным условием для Хранилища сообщений, работающего с DatareonDB в кластере, содержащем больше одного сервера, является привязка к одному из серверов кластера. В частности, при создании сервис Хранилища сообщений требуется привязать к одному из серверов.
Внимание
Особенности работы с версии 3.1.0
Хранилище сообщений, работающее с DatareonDB в кластере, содержащем больше одного сервера, при отказе сервера, к которому привязано Хранилище сообщений, необходимо привязать к рабочему серверу (предпочтительный вариант, так как привязка будет активирована при любом применении конфигурации), либо использовать кнопку Перенести на другой сервер на странице сервера в ЦМ.
Внимание
Особенности работы с версии 3.1.0
Содержимое Хранилища сообщений, работающего с DatareonDB в кластере, содержащем больше одного сервера, при запуске процесса Хранилища сообщений на одном сервере кластера и последующей привязке к другому серверу, не переносится автоматически. Возможно ручное перемещение файлов DatareonDB Хранилища сообщений на другой сервер. Для этого требуется остановить Хранилище сообщений, перенести каталог с данными, при необходимости настроить права на каталог и содержимое для пользователя, под которым запущена Платформа, и запустить Хранилище сообщений.
Пути к файлам DatareonDB Хранилища сообщений:
Windows:
путь_к_каталогу_с_данными_Платформы\Platform\Data\DatareonPlatformMessageStorage\идентификатор_Хранилища\DatareonStorage\MessageStorage
Linux:
путь_к_каталогу_с_данными_Платформы/platform/data/DatareonPlatformMessageStorage/идентификатор_Хранилища/DatareonStorage/MessageStorage
Создание сервиса
Для создания хранилища сообщений:
В ЦН перейдите в раздел Сервисы.
Нажмите на кнопку + над таблицей сервисов. В рабочей области страницы отобразится интерфейс создания / редактирования сервиса.
На вкладке Основные заполните следующие поля:
Название: произвольное название сервиса, необязательно для заполнения.
Имя: уникальное имя сервиса, обязательно для заполнения.
Комментарий: описание сервиса, необязательно для заполнения.
Для создания сервиса выберите вариант Хранилище сообщений в разделе Настройка сервисов.
Для активации сервиса установите флажок Включен.
После внесения данных нажмите на кнопку Сохранить изменения.
Нажмите на кнопку Применить конфигурацию.
Если в кластер содержит больше одного сервера, дополнительно выполните следующие шаги:
Скопируйте идентификатор сервиса из адресной строки:
Перейдите на страницу сервера, к которому нужно привязать сервис.
Перейдите в режим редактора конфигурации.
В значении ключа modules добавьте в массив элемент-объект, в значении ключа entityId которого укажите идентификатор сервиса Хранилища сообщений.
{ "$type": "DT.ClusterConfiguration.Allocation.AllocationInfo, DT_Core", "entityId": "7dda7961-9825-448b-8c41-ac3526a490af", "reason": "FromConfig", "initialReason": "FromConfig" }
После внесения данных нажмите на кнопку Сохранить.
Нажмите на кнопку Применить конфигурацию:
После сохранения изменений и применения конфигурации будет автоматически создана база данных.
Путь к каталогу с файлами DatareonDB Хранилища сообщений отображается на странице Хранилища сообщений в ЦМ. Для резервного копирования данных следует скопировать этот каталог:

Работа с записями Хранилища сообщений
Работа с записями Хранилища сообщений возможна в ЦМ на вкладке Сообщения.
Описание работы с шагами процессов обработки Хранилища сообщений находится в разделе Работа с Хранилищем сообщений.
Примеры методов C# для работы с записями Хранилища сообщений доступны в разделе Функции Хранилища сообщений.
Индексирование данных
Индексирование данных используется для выполнения поиска по телам сообщений в Хранилище.
Механизм индексирования данных запускается после загрузки Хранилища сообщений и завершения основных задач базы данных (проверка целостности, формирование новых колонок и заполнение их значениями). Индексирование данных повторяется каждые 5 минут в течение всего времени работы Платформы.
Примечание
По умолчанию индексирование данных выключено.
Включение / выключение индексирования осуществляется в ЦН в рабочей области сервиса Хранилище сообщений в режиме редактора конфигурации. При этом используется параметр сервиса "MessageStorageIndexationOptions"
(тип строка) со следующими значениями:
"None"
- индексирование данных включено."IndexationStopped"
- индексирование данных выключено (значение по умолчанию).
Примечание
При изменении данного параметра требуется перезапуск сервиса.
Индексы сохраняются в следующем каталоге:
путь_к_каталогу_с_данными_ПлатформыDataMessageStorageSearchEngineидентификатор_сервиса_Хранилище_сообщений
В журнале сервиса отображаются записи об индексировании данных (уровень логирования Verbose).
Механизм индексирования отбирает не более 100 сообщений для индексирования за 1 раз. Тело каждого сообщения обрабатывается как обычная строка.
Каждому сообщению присваивается индекс, представляющий собой позицию идентификатора сообщения в файле Main. Файл содержит идентификаторы сообщений, на которые указывают токены, и позиции сообщений в базе данных Datareon DB.
Токены состоят из словесных сочетаний, Guid, чисел и меток дата-время, которые сохраняются поисковой системой в соответствующей папке.
Примечание
Отдельные символы, являющиеся частью словосочетания, не определяются как токены. Например, в словосочетании Как-нибудь дефис не является токеном, поскольку словосочетание Как-нибудь само по себе является отдельным токеном.
Под каждый токен строкового типа выделен свой файл, который содержит набор индексов, описанных выше.
Guid и число также хранятся в файлах. Для токена, содержащего Guid или число вычисляется хеш, по которому будет осуществляться поиск. Хеш-число хранится в соответствующем файле, содержащем множество хеш-ключей (не более 10000000 (десяти миллионов)). Данные размещаются следующим образом: хеш-число, количество индексов, и сами индексы. Данные хранятся в бинарном формате.
В момент индексирования происходит последовательная запись данных в файлы. После завершения индексирования механизм обрабатывает каждый отдельный файл и осуществляет агрегацию данных как указано выше.
Для меток дата-время хеш-число вычисляется в нескольких комбинациях для возможности поддержки поиска по простой дате, дате с указанием времени и году с месяцем.
Метки дата-время содержатся в папках, структурированных следующим образом: {год}/{месяц}/{число} + файл с датой. Внутри файла данные размещаются без агрегации.
Время работы механизма индексирования не регламентировано и зависит от количества и размера сообщений.
Поиск по телам сообщений
Функциональность поиска по телам сообщений доступна в ЦМ в настройках фильтрации и поиска сообщений.
Примечание
Функциональность поиска по телам сообщений не работает при выключенном индексировании данных. Во время непосредственной работы механизма индексирования поиск недоступен. Использование поиска доступно только авторизованным пользователям при хранении данных Хранилища сообщений в DatareonDB.
Поиск осуществляется из поисковой строки по отдельным словам, по словосочетаниям, а также с учетом или без учета регистра.
Механизм поиска использует API ЦМ, расположенный по адресу /api/dataStorage/messageStorage/{storageId}/search, где {storageId} - это идентификатор сервиса.
Пример входного кода:
{
"searchExpression": "ОБЩЕСТВО",
"fullPhraseSearch": true,
"strictSearch": true
}
Параметры:
"searchExpression"
: непосредственно искомое слово / словосочетание."fullPhraseSearch"
: true - поиск словосочетаний, false - поиск отдельных слов.Внимание
В качестве разделителя при поиске отдельных слов используется пробел (например, поиск слово1 слово2 при значении параметра false должен вывести все сообщения, в которых присутствует слово1 ИЛИ слово2).
"strictSearch"
: true - регистрозависимый поиск, false – регистронезависимый поиск.
Примечание
Параметры "fullPhraseSearch"
и "strictSearch"
работают совместно: параметр "strictSearch"
со значением true не будет задействован, если параметр "fullPhraseSearch"
имеет значение false.
При поступлении в поисковую систему строки поиска разбивается на токены. Для каждого токена осуществляется поиск в соответствующем каталоге и файлах.
Для строкового токена возможно осуществление поиска во всех каталогах, относящихся к строкам. Например, если введено не слово целиком, а часть слова.
В первую очередь поиск всегда осуществляется по каждому токену в отдельности. Данные по найденным индексам собираются и агрегируются, очищаясь от дублей.
Затем, если параметры "fullPhraseSearch"
и "strictSearch"
имеют значение false, обрабатываются соответствующие данные из файла Main, хранящего идентификаторы сообщений. Далее идентификаторы сообщений возвращаются в качестве результата поиска.
Если хотя бы один из параметров "fullPhraseSearch"
и "strictSearch"
имеет значение true, выполняются следующие действия:
Отбираются идентификаторы и тела сообщений, индексы которых определены ранее.
Выполняется параллельный поиск подстроки в строке по каждому телу сообщения.
При нахождении подстроки в строке – идентификатор сообщения добавляется в результирующий набор идентификаторов.
Политика хранения данных
Политика хранения данных позволяет ограничить максимальное количество сообщений в Хранилище или срок их хранения. При превышении установленных ограничений соответствующие записи будут автоматически удаляться из Хранилища сообщений.
Политика хранения данных настраивается в конфигурации сервиса при помощи одного из следующих параметров:
"maxNumberOfStoredMessages"
- количество последних сообщений, которые должны остаться в Хранилище после автоматического удаления более старых сообщений в соответствии с установленным ограничением."maxMessageRetentionTimeInDays"
- количество дней хранения сообщений в Хранилище. После автоматического удаления в Хранилище останутся только сообщения, срок хранения которых не превышает установленное ограничение. Остальные сообщения будут автоматически удалены.
Значение параметров по умолчанию - 0 (выключено). Для включения параметров требуется установить значения, отличные от 0. Диапазон значений параметров: 0 - 2147483647.
При включении одного или обоих параметров проверка записей в Хранилище сообщений на соответствие установленным ограничениям и удаление записей, не соответствующих ограничениям, производится ежедневно в полночь.