Біріктіру компоненттері
Деректерді біріктірудің құрылымдық блоктары — форматты стандарттау, құрылымды біріктіру, семантикалық біріктіру, нормалау және біріктірілген деректерді пайдалану.
Форматты стандарттау
Әртүрлі көздерден келетін барлық деректер бірыңғай форматқа түрлендіріледі.
Мысалы, 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_idREST 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
}
]Қатысты тақырыптар
Бұл бет пайдалы болды ма?
Пікіріңіз үшін рақмет!