4.2.1. Astra.Historian
Astra.Historian – программный компонент для хранения истории изменений значений сигналов и уведомлений о происходивших событиях.
Функции:
сбор и хранение оперативных значений параметров технологического процесса.
сбор и хранение истории событий и тревог технологического процесса.
предоставление исторических данных клиентам.
Функционирует в виде:
службы Astra.Historian.Server на ОС Windows;
сервиса astra.historian.server.service на ОС Linux.
На компьютере может быть установлен только один экземпляр сервера истории.
|
В состав Astra.Historian входят:
сервер истории;
Сервер истории – программная часть Astra.Historian, которая:
обеспечивает работу и обслуживание баз данных, в том числе архивирование и очистку;
обеспечивает взаимодействие с клиентами и выполнение их запросов: на чтение/запись данных, получение статистики и др.
Конфигурация сервера истории хранится в его домашней папке. Описание представлено в разделе Домашняя папка.
|
Характеристики
Производительность записи: до 750 000 изменений значений в секунду.
Производительность чтения: до 1 000 000 изменений значений в секунду.
Сохранение данных
Источниками данных являются экземпляры серверы ввода/вывода Astra.Server.
Astra.Server обеспечивает сбор, фильтрацию и сохранение данных (событий и значений сигналов) в БД Astra.Historian через модуль истории. Конкретная база данных, в которую нужно записать данные, указывается в конфигурации модуля истории: все данные, полученные от модуля истории будут записаны в указанную базу данных.

Для предотвращения потерь данных при передаче, модуль истории:
Записывает сохраняемые данные в файловую очередь.
Порциями передаёт данные из файловой очереди серверу истории для записи в БД.
Удаляет данные из файловой очереди только после подтверждения сервером истории, что данные получены. Если подтверждения нет, отправляет данные повторно.
Данные в файловой очереди хранятся в виде записей для сервера истории. Каждая запись – это значение сигнала или событие, которое нужно сохранить. В каждой записи сохраняется внутренний идентификатор:
Для значений сигналов – идентификатор сигнала.
Для событий – идентификатор экземпляра Astra.Server.
По этим внутренним идентификаторам:
Сервер истории группирует записи во временные ряды.
Таким образом, значения каждого сигнала хранятся в собственном временном ряду, события – в едином временном ряду для экземпляра Astra.Server.
|
Принятые записи сервер истории сохраняет в базу данных.
Механизм очистки файла очереди
При отсутствии связи Astra.Server с базой данных Astra.Historian данные, которые должны были быть записаны в архивную область хранения БД будут сохранены в файл очереди "queue.dat". При длительном отсутствии связи с БД размер файла очереди увеличивается по мере его заполнения на минимальный размер данного файла (т.е. если минимальный размер файла 32 Мб, то при его заполнении файл увеличится до 64 Мб).
После восстановления связи с базой данных через некоторое время данные из файла очереди будут сохранены в архивную область БД. При этом размер файла очереди не будет автоматически уменьшен до минимального размера, т.к. он не сразу будет готов к уменьшению, так как остаются частичные данные в конце файла, что препятствует его уменьшению. Спустя некоторое время работы в штатном режиме, параметр статистики модуля истории "Минимальная граница, по которую файл очереди может быть усечен" становится минимально возможным, тогда, после перезагрузки Astra.Server, файл уменьшается до значения этого параметра.
Параметр статистики "Размер файла очереди данных, Кб" отображает данные, которые передает ОС, а "Минимальная граница, по которую файл журнала может быть усечен, Кб" предоставляет информацию, рассчитанную Astra.Server на основе данных, хранящихся в файле очереди.
Данный механизм очистки обусловлен структурой файла очереди. Файл очереди имеет сегментную внутреннюю структуру. По мере того, как занятые сегменты освобождаются (данные из них успешно передаются в архивную область БД), они постепенно перезаписываются новыми данными.
В штатных условиях файл очереди дорастает до некоторого предельного значения, и далее его сегменты перезаписываются. Если же в течение длительного времени интенсивность сохранения данных превышает интенсивность их передачи на сторону БД, в итоге сегменты не успевают высвобождаться, начинают выделяться новые сегменты, и таким образом файл очереди растёт.
В проекте Astra.AStudio в конфигурации модуля истории на Astra.Server выставляется нижняя граница размера. При перезапуске Astra.Server, если файл очереди превышает этот размер и есть возможность сократить его, то он сокращается до размера не меньше нижней границы (нижняя граница нужна, чтобы оставлять в журнале предаллоцированное пространство некоторого объёма для штатного режима работы).
Возможность сокращения реализуется за счёт того, что очередь всегда стремится перезаписывать в первую очередь сегменты ближе к началу файла. И если когда был продолжительный всплеск интенсивности сохранения, и журнал сильно увеличился, а потом интенсивность вернулась в норму, то сегменты ближе к концу станут свободными, и далее не будут перезаписываться (т.к. в приоритете сегменты ближе к началу файла). И тогда файл может быть сокращён.
Предоставление данных клиентам
Данные предоставляются по запросу:
Клиент запрашивает историю событий или историю значений сигналов у Astra.Server или Astra.AccessPoint.
Модуль истории в составе Astra.Server/Astra.AccessPoint передаёт запрос серверу истории.
Сервер истории возвращает запрошенные данные модулю истории.
Astra.Server/Astra.AccessPoint возвращает данные запросившему их клиенту.
Запрашивать исторические данные могут:
Компоненты AstraRegul – через модуль TCP Server:
Astra.HMI
Astra.HMI.Alarms
Astra.HMI.Trends
СУБД PostgreSQL с помощью расширения Astra.RMap – через модуль TCP Server.
OPC UA клиенты – через модуль OPC UA Server.
OPC HDA клиенты – через модуль OPC HDA Server (только историю значений).
Резервирование
Astra.Historian позволяет формирование резервируемых хранилищ данных.
Резервирование представляет собой параллельное сохранение исторических данных источником данных в несколько баз данных, принадлежащих разным серверам истории.
При работе с резервируемыми хранилищами, данные из источника не удаляются, пока не пройдет запись во все хранилища.
Сохранение данных в несколько баз данных, принадлежащих одному серверу истории не решает задачу резервирования и не рекомендуется.
|
Проверка целостности данных
Astra.Historian при открытии и инициализации базы данных выполняет проверку целостности её содержимого. В случае выявления ошибок информация о них выводится в системный журнал.

