Dokumen Reka Bentuk Pangkalan Data MyEMS
Dokumen ini bertujuan untuk pengaturcara dan menyediakan penjelasan terperinci mengenai arketekktur pangkalan data, struktur jadual, dan falsafah reka bentuk sistem pengurusan tenaga MyEMS.
Isi Kandungan
- Reka bentuk arketekktur pangkalan data
- Penerangan terperinci pangkalan data
- Hubungan aliran data
- Spesifikasi Reka Bentuk Struktur Jadual
Reka bentuk arketekktur pangkalan data
Falsafah reka bentuk
- Pemisahan data: Pisahkan data ke dalam pangkalan data yang berbeza berdasarkan jenis data dan penggunaan untuk mengelakkan pangkalan data tunggal menjadi terlalu besar
- Pemisahan baca-tulis: Data sejarah disimpan dalam format siri masa, membolehkan pertanyaan cekap
- Pengskalaan mendatar: Pangkalan data besar (
historical_db,energy_db) boleh diskala secara bebas - Standard seragam: Semua pangkalan data menggunakan set karakter dan peraturan pengisihan yang sama
Konfigurasi pangkalan data
Semua pangkalan data menggunakan konfigurasi berikut secara seragam:
- Set Karakter:
utf8mb4(menyokong set karakter UTF-8 lengkap, termasuk emoji) - Peraturan pengisihan:
utf8mb4_unicode_ci(peraturan pengisihan Unicode) - Enjin storan: InnoDB (default, menyokong transaksi dan kunci asing)
Peraturan penamaan
- Penamaan Pangkalan Data:
myems_{Fungsi}_db(huruf kecil, dipisahkan oleh garis bawah) - Penamaan Jadual:
tbl_{Nama Entiti}(huruf kecil, dipisahkan oleh garis bawah) - Penamaan Medan: Huruf kecil, dipisahkan oleh garis bawah, contohnya
start_datetime_utc - Penamaan Indeks:
tbl_{Nama Jadual}_index_{Nombor Siri}
Penerangan terperinci pangkalan data
1. Myems_system_db (pangkalan data konfigurasi sistem)
Tujuan: Konfigurasi asas dan metadata storan sistem, berfungsi sebagai perpustakaan konfigurasi teras keseluruhan sistem.
Ciri-ciri:
- Mengandungi paling banyak jadual (kira-kira 150+ jadual)
- Isipadu data agak kecil, tetapi struktur kompleks
- Mengandungi sejumlah besar jadual persatuan
Klasifikasi Jadual Utama:
1.1 Jadual Konfigurasi Asas
| nama jadual | Arahan | medan kunci |
|---|---|---|
tbl_energy_categories | Pengelasan tenaga (elektrik, air, gas, sejuk, haba, dsb) | id, name, unit_of_measure, kgce, kgco2e |
tbl_energy_items | Sub item penggunaan tenaga (pencahayaan, pendingin udara, kuasa, dsb) | id, name, energy_category_id |
tbl_cost_centers | pusat kos | id, name, external_id |
tbl_data_sources | Konfigurasi Sumber Data | id, name, gateway_id, protocol, connection |
tbl_protocols | Konfigurasi Protokol | id, name, protocol_type |
1.2 Jadual Pengurusan Peralatan
| nama jadual | Arahan | medan kunci |
|---|---|---|
tbl_equipments | Maklumat Peranti | id, name, uuid, equipment_type_id, cost_center_id |
tbl_combined_equipments | Peranti gabungan (gabungan beberapa peranti) | id, name, is_input_counted, is_output_counted |
tbl_meters | maklumat meter | id, name, uuid, energy_category_id, is_counted |
tbl_offline_meters | Meter luar talian (dimasukkan secara manual) | id, name, energy_category_id |
tbl_virtual_meters | Meter Maya (Dikira) | id, name, expression (dalam format JSON) |
tbl_points | maklumat titik data | id, name, data_source_id, object_type, object_id |
1.3 Jadual Organisasi Spatial
| nama jadual | Arahan | medan kunci |
|---|---|---|
tbl_spaces | Maklumat spatial (bilik, lantai, dsb) | id, name, uuid, parent_space_id, area |
tbl_stores | Maklumat Kedai | id, name, uuid, space_id |
tbl_tenants | maklumat penyewa | id, name, uuid, space_id |
tbl_shopfloors | maklumat bengkel | id, name, uuid, space_id |
1.4 Jadual Hubungan Persatuan
Sistem menggunakan sejumlah besar jadual persatuan untuk mewujudkan hubungan banyak ke banyak:
tbl_equipments_meters: Persatuan antara peralatan dan metertbl_equipments_offline_meters: Persatuan antara peralatan dan meter luar taliantbl_equipments_virtual_meters: Persatuan antara peralatan dan meter mayatbl_spaces_equipments: Persatuan antara ruang dan peralatantbl_spaces_meters: Persatuan antara ruang dan metertbl_combined_equipments_equipments: Persatuan antara peralatan gabungan dan peranti- dan lain-lain...
1.5 Senarai Peralatan Tenaga Baharu
| nama jadual | Arahan | medan kunci |
|---|---|---|
tbl_photovoltaic_power_stations | stesen kuasa fotovoltik | id, name, capacity, contact_id |
tbl_energy_storage_containers | Beg storan tenaga | id, name, rated_capacity, rated_power |
tbl_energy_storage_power_stations | stesen kuasa storan tenaga | id, name, rated_capacity |
tbl_microgrids | mikrogid | id, name, address |
tbl_charging_stations | stesen pengecasan | id, name, rated_capacity, rated_power |
1.6 Jadual Kawalan dan Penjadwalan
| nama jadual | Arahan | medan kunci |
|---|---|---|
tbl_commands | perintah kawalan | id, name, topic, payload (dalam format JSON) |
tbl_control_modes | mod kawalan | id, name, is_active |
tbl_control_modes_times | Tempoh masa mod kawalan | id, control_mode_id, start_time_of_day, end_time_of_day |
1.7 Jadual Konfigurasi Lain
tbl_contacts: Maklumat Hubungantbl_distribution_systems: Sistem Pengedarantbl_distribution_circuits: Litar Pengedarantbl_energy_flow_diagrams: Gambarajah Aliran Tenagatbl_tariffs: Konfigurasi harga elektriktbl_working_calendars: Kalendar kerjatbl_web_messages: Mesej Web
Peringatan pembangunan:
- Semua jadual mempunyai
id(BIGINT AUTO-INCREMENT) sebagai kunci utama - Kebanyakan jadual mempunyai medan
uuid(CHAR (36)) untuk integrasi sistem luaran - Jadual persatuan biasanya hanya mempunyai
iddan dua medan kunci asing - Medan JSON menggunakan jenis
LONGTEXTuntuk menyimpan rentetan JSON berformat
2. Myems_historics_db (Pangkalan Data Data Sejarah)
Tujuan: Untuk menyimpan data pemantauan masa nyata dan data sejarah, dan merupakan salah satu pangkalan data terbesar dari segi isipadu data sistem.
Ciri-ciri:
- Isipadu data sangat besar, dan penyimpanan siri masa digunakan
- Mengandungi data mentah dan jadual cache nilai terkini
- Menyokong pelabelan kualiti data (
is_bad,is_published)
Struktur Jadual Utama:
| nama jadual | Arahan | medan kunci | Strategi Indeks |
|---|---|---|---|
tbl_analog_value | Data sejarah analog | point_id, utc_date_time, actual_value, is_bad, is_published | (point_id, utc_date_time), (utc_date_time) |
tbl_analog_value_latest | Nilai analog terkini (cache) | point_id, utc_date_time, actual_value | (point_id, utc_date_time) |
tbl_digital_value | Data sejarah digital | point_id, utc_date_time, actual_value (INT) | (point_id, utc_date_time), (utc_date_time) |
tbl_digital_value_latest | Nilai berangka terkini (cache) | point_id, utc_date_time, actual_value | (point_id, utc_date_time) |
tbl_energy_value | Data penggunaan tenaga sejarah | point_id, utc_date_time, actual_value, is_bad, is_published | (point_id, utc_date_time), (utc_date_time) |
tbl_energy_value_latest | Nilai penggunaan tenaga terkini (cache) | point_id, utc_date_time, actual_value | (point_id, utc_date_time) |
tbl_text_value | Data sejarah isipadu teks | point_id, utc_date_time, actual_value (LONGTEXT) | (point_id, utc_date_time), (utc_date_time) |
tbl_text_value_latest | Nilai isipadu teks terkini (cache) | point_id, utc_date_time, actual_value | (point_id, utc_date_time) |
Jadual Storan Fail:
| nama jadual | Arahan | medan kunci |
|---|---|---|
tbl_cost_files | Dokumen kos (Excel/CSV) | file_name, uuid, upload_datetime_utc, status, file_object (LONGBLOB) |
tbl_offline_meter_files | Fail data meter luar talian | file_name, uuid, upload_datetime_utc, status, file_object |
tbl_data_repair_files | Fail pembaikan data | file_name, uuid, upload_datetime_utc, status, file_object |
tbl_energy_plan_files | Dokumen pelan penggunaan tenaga | file_name, uuid, upload_datetime_utc, status, file_object |
Penerangan Jenis Data:
actual_value: DECIMAL (21,6) - Menyokong nilai berangka presisi tinggi dengan 6 tempat perpuluhanutc_date_time: DATETIME - Masa UTC, semua masa menggunakan UTC secara seragamis_bad: BOOL - Label Kualiti Data, True menunjukkan data rosakis_published: BOOL - tanda terbit, True menunjukkan telah diterbitkan
Peringatan pembangunan:
- Semua medan masa menggunakan masa UTC, dan paparan hadapan ditukar kepada masa tempatan
- Jadual
_latestdigunakan untuk menyemak nilai terkini dengan cepat dan mengelakkan mengimbas jadual sejarah - Jadual fail menggunakan
LONGBLOBuntuk menyimpan fail binari, perhatikan had saiz - Bersihkan data sejarah secara berkala untuk mengelakkan jadual terlalu besar dan menjejaskan prestasi
3. Myems_energy_db (pangkalan data penggunaan tenaga)
Tujuan: Untuk menyimpan statistik penggunaan tenaga pelbagai peranti dan mengagregatkannya mengikut jam, hari, bulan dan tahun.
Ciri-ciri:
- Data dikira dan dijana oleh perkhidmatan
myems-aggregation - Dibahagikan mengikut kehalusan masa kepada jadual jam, harian, bulanan dan tahunan
- Menyokong statistik mengikut kategori tenaga dan item penggunaan tenaga
Peraturan Penamaan Jadual:
tbl_{Jenis Objek}_{Arah}_{Klasifikasi}_{Kehalusan Masa}- Jenis objek:
meter,equipment,combined_equipment,space,store,tenant,shopfloor - Arah:
input(input),output(output) - Kategori:
category(kategori tenaga),item(sub item penggunaan tenaga) - Kehalusan masa:
hourly,daily,monthly,yearly
Struktur Jadual Utama:
3.1 Meter penggunaan tenaga
| nama jadual | Arahan | medan kunci |
|---|---|---|
tbl_meter_hourly | Penggunaan tenaga meter setiap jam | meter_id, start_datetime_utc, actual_value |
tbl_meter_daily | Penggunaan tenaga meter harian | meter_id, start_datetime_utc, actual_value |
tbl_meter_monthly | Penggunaan tenaga meter bulanan | meter_id, start_datetime_utc, actual_value |
tbl_meter_yearly | Penggunaan tenaga meter tahunan | meter_id, start_datetime_utc, actual_value |
tbl_offline_meter_hourly | Penggunaan tenaga meter luar talian setiap jam | offline_meter_id, start_datetime_utc, actual_value |
tbl_virtual_meter_hourly | Penggunaan tenaga meter maya setiap jam | virtual_meter_id, start_datetime_utc, actual_value |
3.2 Jadual Penggunaan Tenaga Peralatan
| nama jadual | Arahan | medan kunci |
|---|---|---|
tbl_equipment_input_category_hourly | Penggunaan tenaga input peralatan (mengikut kategori) | equipment_id, energy_category_id, start_datetime_utc, actual_value |
tbl_equipment_input_item_hourly | Penggunaan tenaga input peralatan (mengikut item) | equipment_id, energy_item_id, start_datetime_utc, actual_value |
tbl_equipment_output_category_hourly | Penggunaan tenaga output peralatan (mengikut kategori) | equipment_id, energy_category_id, start_datetime_utc, actual_value |
tbl_combined_equipment_input_category_hourly | Penggunaan tenaga input peranti gabungan (mengikut kategori) | combined_equipment_id, energy_category_id, start_datetime_utc, actual_value |
tbl_combined_equipment_output_category_hourly | Penggunaan tenaga output peralatan gabungan (mengikut klasifikasi) | combined_equipment_id, energy_category_id, start_datetime_utc, actual_value |
3.3 Jadual Penggunaan Tenaga Ruang
| nama jadual | Arahan | medan kunci |
|---|---|---|
tbl_space_input_category_hourly | Penggunaan tenaga input ruang (mengikut kategori) | space_id, energy_category_id, start_datetime_utc, actual_value |
tbl_space_input_item_hourly | Penggunaan tenaga input ruang (mengikut item) | space_id, energy_item_id, start_datetime_utc, actual_value |
tbl_space_output_category_hourly | Penggunaan tenaga output ruang (mengikut klasifikasi) | space_id, energy_category_id, start_datetime_utc, actual_value |
tbl_store_input_category_hourly | Penggunaan tenaga input kedai | store_id, energy_category_id, start_datetime_utc, actual_value |
tbl_tenant_input_category_hourly | Penyewa memasukkan penggunaan tenaga | tenant_id, energy_category_id, start_datetime_utc, actual_value |
tbl_shopfloor_input_category_hourly | Penggunaan tenaga input bengkel | shopfloor_id, energy_category_id, start_datetime_utc, actual_value |
3.4 Jadual Penggunaan Tenaga Peralatan Tenaga Baharu
| nama jadual | Arahan | medan kunci |
|---|---|---|
tbl_photovoltaic_power_station_hourly | Hasil kuasa stesen kuasa fotovoltik setiap jam | photovoltaic_power_station_id, start_datetime_utc, actual_value |
tbl_energy_storage_container_charge_hourly | Kapasiti pengecasan beg storan tenaga | energy_storage_container_id, start_datetime_utc, actual_value |
tbl_energy_storage_container_discharge_hourly | Kapasiti nyahcas beg storan tenaga | energy_storage_container_id, start_datetime_utc, actual_value |
tbl_energy_storage_container_grid_buy_hourly | Beg storan tenaga membeli elektrik | energy_storage_container_id, start_datetime_utc, actual_value |
tbl_energy_storage_container_grid_sell_hourly | Jualan elektrik dari beg storan tenaga | energy_storage_container_id, start_datetime_utc, actual_value |
tbl_microgrid_charge_hourly | Kapasiti pengecasan mikrogid | microgrid_id, start_datetime_utc, actual_value |
tbl_microgrid_discharge_hourly | Kapasiti nyahcas mikrogid | microgrid_id, start_datetime_utc, actual_value |
Reka Bentuk Indeks:
- Semua jadual mempunyai indeks komposit:
(ID Objek, ID Klasifikasi, start_datetime_utc)atau(ID Objek, start_datetime_utc) - Menyokong pertanyaan cepat mengikut objek dan julat masa
Peringatan pembangunan:
start_datetime_utcmewakili masa permulaan tempoh masa (contoh: 1 Januari 2024-01 00:00:00 mewakili 1 Januari dari 0:00 hingga 1:00)actual_valueadalah nilai terkumpul, bukan nilai asal- Data dikira secara berkala oleh perkhidmatan agregasi, tidak ditulis secara masa nyata
- Perhatikan penukaran zon masa apabila membuat pertanyaan
4. myems_billing_db (Pangkalan Data Penagihan)
Tujuan: Menyimpan data penggunaan tenaga berkaitan penagihan. Strukturnya serupa dengan myems_energy_db, tetapi data dikira berdasarkan tarif elektrik.
Ciri-ciri:
- Struktur jadual adalah sama dengan
myems_energy_db - Data dikira oleh perkhidmatan
myems_aggregationmenggunakan konfigurasi tarif - Menyokong peraturan penagihan kompleks seperti tarif mengikut masa penggunaan dan harga berperingkat
Jadual Utama:
- Struktur jadual yang sama dengan
myems_energy_db - Nilai data didarab dengan tarif yang sepadan, biasanya dalam unit mata wang (contoh: CNY, USD)
Nota Pembangunan:
- Data penagihan bergantung pada konfigurasi tarif dalam
myems_system_db.tbl_tariffs - Mesti dikaitkan dengan pusat kos (
cost_center) - Menyokong pelbagai strategi tarif (mengikut masa penggunaan, berperingkat, berdasarkan kapasiti, dsb)
5. myems_carbon_db (Pangkalan Data Pelepasan Karbon)
Tujuan: Menyimpan data tenaga berkaitan pelepasan karbon untuk pengiraan kesan karbon.
Ciri-ciri:
- Struktur jadual adalah sama dengan
myems_energy_db - Data dikira oleh perkhidmatan
myems_aggregationberdasarkan faktor pelepasan karbon - Faktor pelepasan karbon disimpan dalam
myems_system_db.tbl_energy_categories.kgco2e
Jadual Utama:
- Struktur jadual yang sama dengan
myems_energy_db - Nilai data didarab dengan faktor pelepasan karbon, biasanya dalam kgCO2e (kilogram setara CO₂)
Nota Pembangunan:
- Faktor pelepasan karbon mungkin berubah dari semasa ke semasa, jadi faktor sejarah mesti disokong
- Jenis tenaga yang berbeza (elektrik, gas, minyak, dsb) mempunyai faktor pelepasan yang berbeza
- Menyokong pengiraan pelepasan karbon Skop 1, Skop 2 dan Skop 3
6. myems_energy_baseline_db (Pangkalan Data Garisan Asas Tenaga)
Tujuan: Menyimpan data garisan asas tenaga untuk analisis penjimatan tenaga dan penilaian kecekapan tenaga.
Ciri-ciri:
- Struktur jadual serupa dengan
myems_energy_db - Data garisan asas biasanya dikira berdasarkan data sejarah atau nilai standard
- Digunakan untuk membandingkan penggunaan tenaga sebenar dengan penggunaan garisan asas untuk mengira penjimatan tenaga
Jadual Utama:
- Struktur jadual yang sama dengan
myems_energy_db - Menyimpan nilai garisan asas dan bukannya nilai sebenar
Nota Pembangunan:
- Data garisan asas perlu dikemas kini secara berkala
- Menyokong pelbagai kaedah pengiraan garisan asas (purata sejarah, analisis regresi, nilai standard, dsb)
7. Myems_energy_model_db (pangkalan data model penggunaan tenaga)
Tujuan: Untuk menyimpan data model penggunaan tenaga 8760 jam tahunan (8760 jam setahun).
Ciri-ciri:
- Setiap objek menyimpan 8760 rekod (data setiap jam untuk setahun)
- Digunakan untuk ramalan dan perancangan penggunaan tenaga
- Nama jadual mengandungi akhiran
_8760
Jadual Utama:
| nama jadual | Arahan | medan kunci |
|---|---|---|
tbl_meter_8760 | Model 8760 jam meter | meter_id, start_datetime_utc, actual_value |
tbl_equipment_input_category_8760 | Model penggunaan tenaga input peralatan | equipment_id, energy_category_id, start_datetime_utc, actual_value |
tbl_combined_equipment_input_category_8760 | Model penggunaan tenaga input peranti gabungan | combined_equipment_id, energy_category_id, start_datetime_utc, actual_value |
tbl_space_input_category_8760 | Model penggunaan tenaga input ruang | space_id, energy_category_id, start_datetime_utc, actual_value |
tbl_shopfloor_input_category_8760 | Model penggunaan tenaga input bengkel | shopfloor_id, energy_category_id, start_datetime_utc, actual_value |
tbl_store_input_category_8760 | Model penggunaan tenaga input kedai | store_id, energy_category_id, start_datetime_utc, actual_value |
tbl_tenant_input_category_8760 | Model penggunaan tenaga input penyewa | tenant_id, energy_category_id, start_datetime_utc, actual_value |
Peringatan pembangunan:
- Model 8760 jam biasanya dijana berdasarkan data sejarah atau model standard
- Digunakan untuk ramalan penggunaan tenaga tahunan dan penyediaan belanjawan
- Menyokong paparan mengikut dimensi seperti minggu, bulan, suku tahun, dsb
8. myems_energy_plan_db (Pangkalan Data Pelan Tenaga)
Tujuan: Menyimpan data pelan dan sasaran tenaga.
Ciri-ciri:
- Struktur jadual serupa dengan
myems_energy_db - Menyimpan nilai dirancang dan bukannya nilai sebenar
- Digunakan untuk belanjawan penggunaan tenaga dan pengurusan sasaran
Jadual Utama:
- Struktur jadual yang sama dengan
myems_energy_db - Data berasal dari fail pelan atau input manual
Nota Pembangunan:
- Data pelan perlu dibandingkan dengan data sebenar untuk analisis
- Menyokong pelan berbilang peringkat (tahunan, bulanan, mingguan, dsb)
9. myems_energy_prediction_db (Pangkalan Data Ramalan Tenaga)
Tujuan: Menyimpan data ramalan penggunaan tenaga.
Ciri-ciri:
- Struktur jadual serupa dengan
myems_energy_db - Menyimpan nilai diramalkan dan bukannya nilai sebenar
- Digunakan untuk ramalan dan amaran penggunaan tenaga
Jadual Utama:
- Struktur jadual yang sama dengan
myems_energy_db - Data dijana oleh algoritma ramalan
Nota Pembangunan:
- Data ramalan perlu dikemas kini secara berkala
- Menyokong pelbagai algoritma ramalan (siri masa, pembelajaran mesin, dsb)
- Ketepatan ramalan perlu dioptimumkan secara berterusan
10. Myems_fdd_db (Pangkalan Data Diagnosis Kerosakan)
Tujuan: Untuk menyimpan data berkaitan dengan pengesanan dan diagnosis kerosakan.
Ciri-ciri:
- Menyokong pelbagai saluran amaran (web, emel, SMS, WeChat, telefon)
- Enjin peraturan menyokong logik pengesanan kerosakan kompleks
- Menyokong pengesahan dan pengendalian mesej kerosakan
Struktur Jadual Utama:
| nama jadual | Arahan | medan kunci |
|---|---|---|
tbl_rules | Peraturan diagnosis | id, name, category, fdd_code, priority, channel, expression (JSON), message_template, is_enabled |
tbl_web_messages | Mesej Web | id, rule_id, user_id, subject, category, priority, message, status, belong_to_object_type, belong_to_object_id |
tbl_email_messages | Mesej emel | id, rule_id, recipient_name, recipient_email, subject, message, attachment_file_name, status |
tbl_text_messages_outbox | Petak keluar SMS | id, rule_id, recipient_mobile, message, status, acknowledge_code |
tbl_text_messages_inbox | petak masuk sms | id, sender_mobile, message, status |
tbl_wechat_messages_outbox | Petak penghantar mesej WeChat | id, rule_id, recipient_openid, message_template_id, message_data (JSON) |
tbl_wechat_messages_inbox | Petak masuk mesej WeChat | id, sender_openid, message, status |
tbl_email_servers | Konfigurasi Pelayan Emel | id, host, port, requires_authentication, user_name, password, from_addr |
tbl_wechat_configs | Konfigurasi WeChat | id, api_server, app_id, app_secret, access_token, expires_datetime_utc |
Kategori Peraturan (category):
REALTIME: Amaran masa nyataSYSTEM: Amaran sistemSPACE: Amaran ruangMETER: Amaran meterTENANT: Amaran penyewaSTORE: Amaran kedaiSHOPFLOOR: Amaran bengkelEQUIPMENT: Amaran peralatanCOMBINEDEQUIPMENT: Amaran peralatan gabungan
Keutamaan (priority):
CRITICAL: KritikalHIGH: TinggiMEDIUM: SederhanaLOW: Rendah
Nota Pembangunan:
- Medan
expressionmenyimpan ekspresi peraturan dalam format JSON message_templatemenyokong penggantian pemboleh ubah (contoh:$name,$value)- Peraturan menyokong kedua-dua pelaksanaan yang dijadualkan dan pelaksanaan serta-merta
- Status mesej:
new→sent→acknowledged/timeout
11. myems_user_db (Pangkalan Data Pengguna)
Tujuan: Menyimpan pengesahan pengguna, kunci API, mesej emel, dsb.
Ciri-ciri:
- Isipadu data kecil, tetapi keperluan keselamatan tinggi
- Menyokong pengurusan kebenaran pengguna
- Menyokong pengesahan kunci API
Struktur Jadual Utama:
| nama jadual | Arahan | medan kunci |
|---|---|---|
tbl_users | Maklumat Pengguna | id, name, uuid, display_name, email, salt, password, is_admin, is_read_only, privilege_id, account_expiration_datetime_utc, password_expiration_datetime_utc, failed_login_count |
tbl_privileges | Konfigurasi Kebenaran | id, name, data (dalam format JSON) |
tbl_sessions | sesi pengguna | id, user_uuid, token, utc_expires |
tbl_api_keys | Kunci API | id, name, token, created_datetime_utc, expires_datetime_utc |
tbl_email_messages | Mesej emel | id, recipient_name, recipient_email, subject, message, attachment_file_name, status, scheduled_datetime_utc |
tbl_email_message_sessions | Perbualan Emel | id, recipient_email, token, expires_datetime_utc |
tbl_logs | Log Operasi | id, user_uuid, request_datetime_utc, request_method, resource_type, resource_id, request_body (JSON) |
tbl_notifications | Mesej Pemberitahuan | id, user_id, created_datetime_utc, status, subject, message, url |
tbl_new_users | Pengguna baharu (belum diaktifkan) | id, name, uuid, display_name, email, salt, password |
tbl_verification_codes | Kod Pengesahan | id, recipient_email, verification_code, created_datetime_utc, expires_datetime_utc |
Reka Bentuk Keselamatan:
- Kata laluan disimpan menggunakan garam + hash, tiada storan teks biasa
- Menyokong masa luput akaun dan kata laluan
- Menyokong had percubaan kegagalan log masuk
- Kunci API menyokong masa luput
Nota Pembangunan:
- Medan kata laluan perlu disimpan secara terenkripsi, jangan semak secara langsung
- Token sesi perlu dibersihkan secara berkala untuk menghapus rekod yang luput
- Log operasi perlu merekod semua tindakan kritikal untuk audit
- Status pemberitahuan:
unread→read→archived
12. myems_reporting_db (Pangkalan Data Pelaporan)
Tujuan: Menyimpan mesej emel dan lampiran berkaitan dengan laporan.
Ciri-ciri:
- Isipadu data kecil
- Menyokong penyimpanan templat laporan dan fail yang dijana
Struktur Jadual Utama:
| nama jadual | Arahan | medan kunci |
|---|---|---|
tbl_reports | Konfigurasi Laporan | id, name, uuid, expression (JSON), is_enabled, last_run_datetime_utc, next_run_datetime_utc, is_run_immediately |
tbl_reports_files | dokumen laporan | id, uuid, create_datetime_utc, file_name, file_type (xlsx/pdf/docx), file_object (LONGBLOB) |
tbl_template_files | Fail Templat Laporan | id, uuid, report_id, file_name, file_type, file_object |
tbl_email_messages | Mesej emel | id, recipient_name, recipient_email, subject, message, attachment_file_name, attachment_file_object, status |
Nota Pembangunan:
- Fail laporan menyokong format Excel, PDF dan Word
- Fail templat digunakan untuk menjana laporan
- Laporan menyokong kedua-dua penjanaan yang dijadualkan dan penjanaan serta-merta
- Fail disimpan menggunakan
LONGBLOB; perhatikan had saiz
13. myems_production_db (Pangkalan Data Pengeluaran)
Tujuan: Menyimpan data produk berkaitan pengeluaran.
Ciri-ciri:
- Isipadu data kecil
- Digunakan untuk analisis korelasi penggunaan tenaga pengeluaran
Struktur Jadual Utama:
| nama jadual | Arahan | medan kunci |
|---|---|---|
tbl_products | Maklumat Produk | id, name, uuid, unit_of_measure, tag, standard_product_coefficient |
tbl_teams | Maklumat Pasukan | id, name, uuid, description |
tbl_shifts | maklumat Shift | id, shopfloor_id, team_id, product_id, product_count, start_datetime_utc, end_datetime_utc, reference_timestamp |
tbl_shopfloor_hourly | Output setiap jam bengkel | id, shopfloor_id, start_datetime_utc, product_id, product_count |
tbl_space_hourly | Output jam ruang | id, space_id, start_datetime_utc, product_id, product_count |
tbl_shopfloors_products | Persatuan bengkel dan produk | id, shopfloor_id, product_id |
tbl_shopfloors_teams | Persatuan bengkel dan pasukan | id, shopfloor_id, team_id |
Peringatan pembangunan:
- Data pengeluaran digunakan untuk mengira penggunaan tenaga unit produk
- Menyokong statistik berdasarkan dimensi seperti produk, pasukan, bengkel, dsb
- Dikaitkan dengan data penggunaan tenaga untuk mengira penunjuk kecekapan tenaga
Hubungan aliran data
Proses pengumpulan data
Aliran Pemerolehan Data
Peranti / Sensor
↓ (Modbus TCP / MQTT / HTTP)
myems-modbus-tcp (Perkhidmatan Pemerolehan Data)
↓ (Tulis)
myems_historical_db.tbl_analog_value / tbl_digital_value / tbl_energy_value
↓ (Penormalan Data)
myems-normalization (Perkhidmatan Penormalan)
↓ (Pembersihan Data)
myems-cleaning (Perkhidmatan Pembersihan)
↓ (Agregasi Data)
myems-aggregation (Perkhidmatan Agregasi)
↓ (Tulis)
myems_energy_db (Data Tenaga)
myems_billing_db (Data Penagihan)
myems_carbon_db (Data Pelepasan Karbon)
Aliran Pertanyaan Data
Permintaan Pengguna
↓
myems-api (Perkhidmatan API)
↓ (Pertanyaan)
myems_system_db (Data Konfigurasi)
myems_historical_db (Data Sejarah)
myems_energy_db (Data Tenaga)
↓ (Respons)
myems-web / myems-admin (Paparan Hadapan)
Gambarajah Hubungan Data
myems_system_db.tbl_points
↓ (point_id)
myems_historical_db.tbl_analog_value
↓ (Pengiraan Agregasi)
myems_energy_db.tbl_meter_hourly
↓ (Pautan)
myems_system_db.tbl_meters
↓ (Pautan)
myems_system_db.tbl_equipments
↓ (Pautan)
myems_system_db.tbl_spaces
Spesifikasi Reka Bentuk Struktur Jadual
Medan amalan
Semua jadual mengandungi medan biasa berikut:
| nama medan | jenis | Arahan |
|---|---|---|
id | BIGINT NOT NULL AUTO_INCREMENT | Kunci utama, auto increment |
name | VARCHAR(255) | nama |
uuid | CHAR(36) | UUID, Digunakan untuk integrasi sistem luaran |
description | VARCHAR(255) | Penerangan (pilihan) |
Medan masa
| nama medan | jenis | Arahan |
|---|---|---|
utc_date_time | DATETIME | Masa UTC (jadual data sejarah) |
start_datetime_utc | DATETIME | Masa permulaan tempoh masa (jadual data terkumpul) |
created_datetime_utc | DATETIME | Masa Penciptaan |
updated_datetime_utc | DATETIME | Masa Kemas Kini |
last_run_datetime_utc | DATETIME | Masa terakhir dijalankan |
next_run_datetime_utc | DATETIME | Masa run seterusnya |
Perhatian: Semua medan masa harus menggunakan masa UTC secara seragam, dan paparan hadapan harus ditukar kepada masa tempatan.
Medan berangka
| nama medan | jenis | Arahan |
|---|---|---|
actual_value | DECIMAL(21, 6) | Nilai sebenar, menyokong presisi tinggi (6 tempat perpuluhan) |
set_value | DECIMAL(21, 6) | nilai set |
rated_capacity | DECIMAL(21, 6) | Kapasiti terkadar |
rated_power | DECIMAL(21, 6) | kuasa terkadar |
Medan JSON
| nama medan | jenis | Arahan |
|---|---|---|
connection | LONGTEXT | Konfigurasi Sambungan (format JSON) |
expression | LONGTEXT | Ekspresi (format JSON) |
payload | LONGTEXT | Muat (format JSON) |
data | LONGTEXT | Data (format JSON) |
Nota: Medan JSON menyimpan rentetan JSON berformat dan perlu diurai sebelum digunakan.
Medan status
| nama medan | jenis | Arahan |
|---|---|---|
is_enabled | BOOL | Samada dibenarkan |
is_active | BOOL | Status Pengaktifan |
is_bad | BOOL | Adakah terdapat data rosak |
is_published | BOOL | Adakah ia telah dikeluarkan? |
is_counted | BOOL | Adakah ia disertakan dalam statistik |
status | VARCHAR(32) | Status (contoh: baru, dihantar, selesai, ralat) |
Reka Bentuk Indeks
Indeks kunci utama:
- Semua jadual mempunyai
PRIMARY KEY (id)
Indeks unik:
- Medan kunci (seperti
name,uuid) biasanya mempunyai indeks unik
Indeks komposit:
- Mewujudkan indeks komposit untuk gabungan medan yang sering disemak
- Contoh:
(point_id, utc_date_time),(meter_id, start_datetime_utc)
Indeks masa:
- Medan masa biasanya diindeks secara berasingan dan menyokong pertanyaan julat masa