AstraRegul
Релиз 2025.08.15.00
×

4.2.1.2.2. Базы данных формата 3x (устаревший формат)

 

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

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

Сохранение записей в базу данных

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

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

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

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