4.2.1.2. Структура базы данных

 
База данных состоит из следующих разделов:
 
active/<uuid> – множество активных разделов, каждый из которых создается для отдельного источника, выполняющего сохранение данных.
archive – единый архивный раздел, в который данные передаются из активных разделов по мере накопления.
 
Также база данных содержит служебный файл:
db.index – основной индекс базы данных.
 
 
Папки и файл создаются автоматически, когда сервер истории создаёт базу данных. Их расположение в файловой системе зависит от описания базы данных в файле конфигурации:
 
Если для базы данных не указаны основной и архивный каталоги, её папки и файл будут храниться в каталоге по умолчанию (атрибут "DefaultPrimaryDir" сервера истории).
 
 
Если для базы данных указан основной каталог, папки и файл будут храниться в нём  (атрибут "PrimaryDir" сервера истории).
 
 
Если для базы данных указаны и основной и архивный каталоги (атрибуты "PrimaryDir" и "ArchiveDir" сервера истории), папки archive и imported будут храниться в архивном каталоге, остальные папки и файл – в основном каталоге.
 
 
Если для базы данных указан только архивный каталог (атрибут "ArchiveDir" сервера истории), папки archive и imported будут храниться в нём, а остальные папки и файл – в каталоге по умолчанию (атрибут "DefaultPrimaryDir" сервера истории).
 

Активный раздел

 
Активный раздел содержит:
Служебные файлы:
dbpart.index – индекс элементов раздела.
dbpart.workset – рабочее множество раздела.
dbpart.tx – файл журнала состояния раздела (данный файл имеет небольшой размер (< 1 МиБ), и не учитывается в оценках.
ahdb-<Date>.store – множество фрагментов данных.
 

Архивный раздел

 
Архивный раздел содержит:
ahdb-<Date>.store – множество фрагментов данных.
 
Размер основного индекса базы данных от общего числа элементов в базе данных и среднего размера идентификатора элементов (зависят от источника).
Размеры индекса и рабочего множества активных разделов зависят от количества элементов от соответствующего источника.
Размер фрагментов данных зависит от числа содержащихся в них записей и их размеров.
 
Фрагменты в активных и архивном разделах имеют одинаковый внутренний формат.
 
Число фрагментов в активных разделах зависит от параметра ActiveStorageDepth, определяющего глубину активного хранения (с возможностью записи) для базы данных. Число фрагментов в архивном разделе – от параметра StorageDepth, определяющего общую глубину хранения для базы данных.
 
В активных разделах фрагменты всегда хранятся в несжатом виде, в архивном – в зависимости от настроек сжатия.
 
Сжатые файлы (в архивной папке archive) визуально не отличаются от несжатых. Отличие состоит в их внутреннем содержимом (формат которого определяется по служебной информации, сохраняемой в файл).
Astra.Historian выполняет не сжатие архиватором всего файла, а сжатие отдельных блоков содержимого при поддержании одинаковых системных и индексных структур.
При перемещении фрагмента данных из активной области в архивную выполняется его дефрагментация для улучшения характеристики кластеризации данных по тегам (для повышения эффективности чтения). Это приводит к уплотнению данных и изменению итогового размера файла.
 
Размеры файлов индексов, рабочего множества и фрагментов данных в активных разделах выравниваются на 16 МБ (связано с необходимостью упреждающего выделения внешней памяти для сокращения издержек).
 
Если источник резервируется, то активный раздел создается для каждого его экземпляра.