Компоненты унификации
Строительные блоки унификации данных — стандартизация формата, унификация структуры, семантическая унификация, нормализация и использование унифицированных данных.
Стандартизация формата
Все данные, поступающие из различных источников, приводятся к единому формату.
Например, данные от IoT-устройств приходят в формате JSON:
{
"device_id": "sensor-123",
"temp": 27.3,
"time": 1739960923
}Унификация структуры данных
Для всех данных определяется единая структура независимо от их источника.
Все данные хранятся в таблице channel_data, которая связывает их с оборудованием, сеансами, каналами и единицами измерения:
| Поле | Тип | Описание |
|---|---|---|
id | bigint | Уникальный идентификатор записи (первичный ключ). |
equipment_id | bigint | Ссылка на оборудование (equipment.id). |
seance_id | bigint | Ссылка на сеанс (seances.id). |
channel_id | bigint | Ссылка на канал (channels.id). |
unit_id | bigint | Ссылка на единицу измерения (units.id). |
archive_type_id | integer | Ссылка на тип архива (referenceparameters.id). |
event_time | integer | Время события (например, временна́я метка). |
value | character varying(100) | Значение, полученное по каналу. |
created_at | timestamp(6) without time zone | Время создания записи. |
updated_at | timestamp(6) without time zone | Время последнего обновления записи. |
Где:
equipment_id: уникальный идентификатор оборудования.seance_id: уникальный идентификатор сеанса.channel_id: уникальный идентификатор канала.unit_id: уникальный идентификатор единицы измерения.
При сохранении данных от различных устройств в центральном хранилище:
- данные приводятся к единому формату и структуре;
- они сохраняются в унифицированной таблице данных
channel_data.
Семантическая унификация
Все данные имеют одинаковый смысл и интерпретацию во всех системах.
Например:
- Все временны́е метки представлены в формате
UTC. Это было заложено на этапе проектирования системы. - Во всех системах используются одни и те же единицы измерения (например, градусы Цельсия).
Для унификации единиц измерения в систему была добавлена модель Units. В ней хранятся единицы измерения, используемые для данных каналов.
| Поле | Тип | Описание |
|---|---|---|
id | bigint | Уникальный идентификатор записи (первичный ключ). |
name | character varying(30) | Название единицы измерения. |
varname | character varying(30) | Короткое имя переменной для единицы измерения. |
description | character varying(100) | Описание единицы измерения. |
conversion_factor | double precision | Коэффициент преобразования единицы измерения. |
rounding | smallint | Число знаков после запятой для округления. |
synonyms | character varying[] | Массив синонимов единицы измерения. |
created_at | timestamp(6) without time zone | Время создания записи. |
updated_at | timestamp(6) without time zone | Время последнего обновления записи. |
Нормализация данных
Модель данных системы приведена к нормальной форме Бойса — Кодда (третьей нормальной форме) в части атомарных (скалярных) значений. Некоторые сущности модели данных используют составные структуры для оптимизации работы с редкими, нестандартными атрибутами.
Данные разделены на логические таблицы (equipment, channels, units, sessions), что исключает избыточность и дублирование.
Например:
- Таблица
channel_dataссылается на таблицыequipment,channels,unitsиsessionsчерез внешние ключи.
Использование унифицированных данных
Унифицированные данные можно использовать для анализа, визуализации, машинного обучения и других задач.
Анализ данных с помощью SQL
SELECT equipment_id, AVG(value) as avg_value
FROM channel_data
WHERE archive_type_id = 4 AND channel_id = 3
GROUP BY equipment_id
ORDER BY equipment_idЗапрос данных через REST API
Пример запроса:
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3Пример ответа:
[
{
"id": 123,
"equipment_id": 1,
"seance_id": 2,
"channel_id": 3,
"archive_type_id": 4,
"value": 42.5,
"event_time": 1739950861
}
]Связанные темы
Эта страница была полезной?
Спасибо за ваш отзыв!