4.2.1. Astra.Historian

 
Astra.Historian – программный компонент для хранения истории изменений значений сигналов и уведомлений о происходивших событиях.
 
Функции:
сбор и хранение оперативных значений параметров технологического процесса.
сбор и хранение истории событий и тревог технологического процесса.
предоставление исторических данных клиентам.
 
Функционирует в виде:
службы Astra.Historian.Server на ОС Windows;
сервиса astra.historian.server.service на ОС Linux.
 
На компьютере может быть установлен только один экземпляр сервера истории.
 

Сохранение и получение данных

 
Источниками данных являются экземпляры серверы ввода/вывода Astra.Server.
 
Astra.Server обеспечивает сбор, фильтрацию и сохранение данных (событий и значений сигналов) в БД Astra.Historian через модуль истории.
 
 
Модуль истории в составе Astra.Server выполняет временное хранение данных на стороне сервера и передачу информации в хранилище Astra.Historian. Сервер истории, принимая порцию данных, сохраняет каждую запись в её временной ряд, если временного ряда нет – создаёт его. Сервер истории создаёт временной ряд для каждого внутреннего идентификатора, по которому получил записи.
 
Временной ряд – это последовательность записей в строгом хронологическом порядке.
 
В одну БД могут сохраняться данные с нескольких независимых источников.
 
Данные в файловой очереди хранятся в виде записей для сервера истории. Каждая запись – это значение сигнала или событие, которое нужно сохранить. В каждой записи сохраняется внутренний идентификатор:
Для значений сигналов – идентификатор сигнала.
Для событий – идентификатор экземпляра Astra.Server.
По этим внутренним идентификаторам:
Источник данных запрашивает сохранённые им данные.
Сервер истории группирует записи во временные ряды.
 
Таким образом, значения каждого сигнала хранятся в собственном временном ряду, события – в едином временном ряду для экземпляра Astra.Server.
 
Буфер временного хранения данных на стороне Astra.Server располагается на жестком диске, что предотвращает потерю данных при аварийном отключении компьютера сервера технологических данных. При следующем старте сервера непереданные данные будут повторно отправлены в Astra.Historian. Буферизация данных позволяет также сгладить пиковые нагрузки при большой интенсивности получения данных.
 
Для предотвращения потерь данных при передаче, модуль истории:
Записывает сохраняемые данные в файловую очередь.
Порциями передаёт данные из файловой очереди серверу истории для записи в БД.
Удаляет данные из файловой очереди только после подтверждения сервером истории, что данные получены. Если подтверждения нет, отправляет данные повторно.
Данные в БД хранятся в закрытом бинарном формате.
 
Сервер допускает лишь добавление новых записей. При этом механизм обновления ранее сохранённой истории, реализованный в Astra.Imitator, не меняет существующие записи, а добавляет новые записи с пометками о модификации ранее сохранённых, формируя таким образом новый слой записей. Модификация выполняется автоматически при запросе данных. Записи с пометками о модификации создаются в импортированной области БД, после чего автоматически переносятся в архивную область в фоновом режиме. При переносе в архив, записи с пометками о модификации вставляются во временные ряды рядом с записями, которые они модифицируют.

Обработка данных

Сервер истории обрабатывает данные порциями в том порядке, в котором они были сохранены в очередь.
 
Обработка данных происходит в фоновом режиме и не препятствует операциям чтения и записи.
 
 Сервер истории фильтрует сохраняемые данные и отбрасывает устаревшие.
 
Запись может быть отфильтрована и не записана в историю в следующих случаях:
Если метка времени записи лежит левее нижней границы для всей базы данных, запись считается устаревшей и отбрасывается.
Если метка времени записи лежит левее нижней границы активной области, запись считается архивной и отбрасывается.
Если метка времени записи лежит левее метки времени последней записи во временном ряду, запись считается инверсной (нарушающей ход времени) и отбрасывается.
Если метка времени записи находится на час правее от текущего времени сервера истории, запись считается опережающей и отбрасывается.
Опережающие записи отбрасываются для того, чтобы записи с меткой времени на день/месяц/год вперёд (например, из-за неполадки оборудования), не приводили к отбрасыванию всех последующих записей за этот период как инверсных.
В статистике отображается количество отфильтрованных записей.
В БД Historian записываются значения сигналов с любым качеством.
 
В результате обработки данные становятся доступными для читающих клиентов.
 

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

 
В сервере истории данные хранятся в фрагментах - файлах, содержащих данные за сутки. У каждого фрагмента определяется нижняя граница времени для фрагмента - начало суток по времени UTC.
 
После поступления в сервер истории, данные последовательно проходят несколько стадий хранения:
в активной области;
в архивной области.
 
Активная область предназначена для формирования поступающих данных во временные ряды: это обеспечивает высокую скорость обработки запроса данных. Каждому источнику данных соответствует своя активная область. Длительность хранения фрагментов в активной области задается в настройках БД.
 
Фрагменты, нижняя граница которых оказывается левее предела времени хранения в активной области, переносятся в архивную область. Фрагменты из всех активных областей переносятся в единую архивную область, при этом фрагменты из разных активных областей, имеющие одинаковую нижнюю границу времени сливаются в один файл фрагмента. Для уменьшения занимаемого места на диске, фрагменты в архивной области сжимаются с параметрами сжатия, указанными в настройках БД.
 
Хранение данных ведется в суточных файлах данных для увеличения скорости доступа к данным. Сервер реализует механизмы сохранения и поиска необходимых данных, направленные на обеспечение максимальной производительности работы с дисковой подсистемой компьютера.
 
Глубина хранения данных ограничена размерами дискового пространства. Скорость записи и чтения данных не зависит от глубины хранения. Запись в сервер – транзакционная. Сервер обеспечивает высокую плотность записи хранимых данных на диск, уменьшая таким образом объемы читаемых с диска данных.

Резервирование

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

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

 
Astra.Historian при открытии и инициализации базы данных выполняет проверку целостности её содержимого. В случае выявления ошибок информация о них выводится в системный журнал. Для получения подробной информации о сообщениях проверки целостности просим обращаться в техническую поддержку ООО «РЕГЛАБ» по электронной почте support@reglab.ru.

Предоставление данных клиентам

 
Предоставление данных, хранящихся в базах данных сервера истории, выполняет модуль истории в составе Astra.Server или Astra.AccessPoint.
 
Предоставление данных клиентам осуществляется по проприетарному протоколу на базе TCP.
 

 

Характеристики

 
Производительность записи: до 750 000 изменений значений в секунду.
Производительность чтения: до 1 000 000 изменений значений в секунду.