Компоненти уніфікації

Будівельні блоки уніфікації даних — стандартизація формату, уніфікація структури, семантична уніфікація, нормалізація та використання уніфікованих даних.

Стандартизація формату

Усі дані, що надходять із різних джерел, перетворюються на єдиний формат.

Наприклад, дані від пристроїв IoT надходять у форматі JSON:

example.json
{
  "device_id": "sensor-123",
  "temp": 27.3,
  "time": 1739960923
}

Уніфікація структури даних

Для всіх даних визначено єдину структуру, незалежно від їх джерела.

Усі дані зберігаються в таблиці channel_data, яка пов’язує їх з обладнанням, сеансами, каналами та одиницями вимірювання:

ПолеТипОпис
idbigintУнікальний ідентифікатор запису (первинний ключ).
equipment_idbigintПосилання на обладнання (equipment.id).
seance_idbigintПосилання на сеанс (seances.id).
channel_idbigintПосилання на канал (channels.id).
unit_idbigintПосилання на одиницю вимірювання (units.id).
archive_type_idintegerПосилання на тип архіву (referenceparameters.id).
event_timeintegerЧас події (наприклад, мітка часу).
valuecharacter varying(100)Значення, отримане з каналу.
created_attimestamp(6) without time zoneЧас створення запису.
updated_attimestamp(6) without time zoneЧас останнього оновлення запису.

Де:

  • equipment_id: Унікальний ідентифікатор обладнання.
  • seance_id: Унікальний ідентифікатор сеансу.
  • channel_id: Унікальний ідентифікатор каналу.
  • unit_id: Унікальний ідентифікатор одиниці вимірювання.

Коли дані від різних пристроїв зберігаються в центральному сховищі:

  • дані перетворюються на єдиний формат і структуру;
  • вони зберігаються в уніфікованій таблиці даних channel_data.

Семантична уніфікація

Усі дані мають однакове значення та тлумачення в усіх системах.

Наприклад:

  • Усі мітки часу подано у форматі UTC. Це було реалізовано на етапі проєктування системи.
  • Усі системи використовують однакові одиниці вимірювання (наприклад, градуси Цельсія).

Для уніфікації одиниць вимірювання до системи було додано модель Units. Вона зберігає одиниці вимірювання, що використовуються для даних каналів.

ПолеТипОпис
idbigintУнікальний ідентифікатор запису (первинний ключ).
namecharacter varying(30)Назва одиниці вимірювання.
varnamecharacter varying(30)Коротке змінне ім’я одиниці вимірювання.
descriptioncharacter varying(100)Опис одиниці вимірювання.
conversion_factordouble precisionКоефіцієнт перетворення для одиниці вимірювання.
roundingsmallintКількість десяткових знаків для округлення.
synonymscharacter varying[]Масив синонімів для одиниці вимірювання.
created_attimestamp(6) without time zoneЧас створення запису.
updated_attimestamp(6) without time zoneЧас останнього оновлення запису.

Нормалізація даних

Модель даних системи зведено до нормальної форми Бойса-Кодда (третьої) у частині атомарних (скалярних) значень. Деякі сутності моделі даних використовують складені структури для оптимізації роботи з рідкісними, нестандартними атрибутами.

Дані поділено на логічні таблиці (equipment, channels, units, sessions), що усуває надмірність та дублювання.

Наприклад:

  • Таблиця channel_data посилається на таблиці equipment, channels, units та sessions через зовнішні ключі.

Використання уніфікованих даних

Уніфіковані дані можна використовувати для аналізу, візуалізації, машинного навчання та інших завдань.

Аналіз даних за допомогою SQL

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

Приклад запиту:

bash
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3

Приклад відповіді:

json
[
  {
    "id": 123,
    "equipment_id": 1,
    "seance_id": 2,
    "channel_id": 3,
    "archive_type_id": 4,
    "value": 42.5,
    "event_time": 1739950861
  }
]

Пов'язані теми

Останнє оновлення

Чи була ця сторінка корисною?