Біріктіру компоненттері

Деректерді біріктірудің құрылымдық блоктары — форматты стандарттау, құрылымды біріктіру, семантикалық біріктіру, нормалау және біріктірілген деректерді пайдалану.

Форматты стандарттау

Әртүрлі көздерден келетін барлық деректер бірыңғай форматқа түрлендіріледі.

Мысалы, 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
  }
]

Қатысты тақырыптар

Соңғы жаңарту

Бұл бет пайдалы болды ма?