Компоненти уніфікації
Будівельні блоки уніфікації даних — стандартизація формату, уніфікація структури, семантична уніфікація, нормалізація та використання уніфікованих даних.
Стандартизація формату
Усі дані, що надходять із різних джерел, перетворюються на єдиний формат.
Наприклад, дані від пристроїв 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
}
]Пов'язані теми
Чи була ця сторінка корисною?
Дякуємо за відгук!