MyEMS Veritabanı Tasarım Belgesi
Bu belge, programcılar için hedeflenmiş olup, MyEMS enerji yönetim sisteminin veritabanı mimarisini, tablo yapısını ve tasarım felsefesini detaylı bir şekilde açıklar.
İçindekiler
- Veritabanı mimarisi tasarımı
- Detaylı veritabanı açıklaması
- Veri akışı ilişkisi
- Tablo Yapısı Tasarım Şartnamesi
Veritabanı mimarisi tasarımı
Tasarım kavramı
- Veri ayrımı: Verileri veri türüne ve kullanımına göre farklı veritabanlarına ayırarak, tek bir veritabanının çok büyük olmasını önleyin
- Okuma-yazma ayrımı: Tarihsel veriler zaman serisi formatında depolanarak, verimli sorgulama sağlanır
- Yatay ölçeklenebilirlik: Büyük veritabanları (historical_db, energy_db) bağımsız olarak ölçeklenebilir
- Birleşik standartlar: Tüm veritabanları aynı karakter seti ve sıralama kurallarını kullanır
Veritabanı yapılandırması
Tüm veritabanları aşağıdaki yapılandırmayı bir şekilde kullanır:
- Karakter Seti:
utf8mb4(Emoji dahil tam UTF-8 karakter setini destekler) - Sıralama kuralı:
utf8mb4_unicode_ci(Unicode sıralama kuralı) - Depolama motoru: InnoDB (varsayılan, işlem ve yabancı anahtarları destekler)
Adlandırma kuralları
- Veritabanı Adlandırması:
myems_{Fonksiyon}_db(küçük harf, alt çizgi ile ayrılmış) - Tablo Adlandırması:
tbl_{Varlık Adı}(küçük harf, alt çizgi ile ayrılmış) - Alan Adlandırması: Küçük harf, alt çizgilerle ayrılmış, örn:
start_datetime_utc - İndeks Adlandırması:
tbl_{Tablo Adı}_index_{Sıra Numarası}
Detaylı veritabanı açıklaması
1. Myems_system_db (sistem yapılandırma veritabanı)
Amaç: Sistem temel yapılandırmasını ve meta veriyi depolamak, tüm sistemin çekirdek yapılandırma kütüphanesidir.
Özellikler:
- En fazla tabloyu içerir (yaklaşık 150+ tablo)
- Veri hacmi nispeten küçük ancak yapı karmaşıktır
- Birçok ilişki tablosu içerir
Ana Tablo Sınıflandırması:
1.1 Temel Yapılandırma Tablosu
| tablo adı | Açıklamalar | anahtar alan |
|---|---|---|
tbl_energy_categories | Enerji sınıflandırması (elektrik, su, gaz, soğuk, ısı vb.) | id, name, unit_of_measure, kgce, kgco2e |
tbl_energy_items | Enerji tüketimi alt öğeleri (aydınlatma, klima, güç vb.) | id, name, energy_category_id |
tbl_cost_centers | Maliyet merkezi | id, name, external_id |
tbl_data_sources | Veri Kaynağı Yapılandırması | id, name, gateway_id, protocol, connection |
tbl_protocols | Protokol Yapılandırması | id, name, protocol_type |
1.2 Ekipman Yönetimi Tablosu
| tablo adı | Açıklamalar | anahtar alan |
|---|---|---|
tbl_equipments | Cihaz Bilgisi | id, name, uuid, equipment_type_id, cost_center_id |
tbl_combined_equipments | Kombinasyon cihazı (birden fazla cihazın kombinasyonu) | id, name, is_input_counted, is_output_counted |
tbl_meters | Sayaç bilgisi | id, name, uuid, energy_category_id, is_counted |
tbl_offline_meters | Çevrimdışı sayaç (elle girilen) | id, name, energy_category_id |
tbl_virtual_meters | Sanal Sayaç (Hesaplanan) | id, name, expression (JSON formatında) |
tbl_points | Veri noktası bilgisi | id, name, data_source_id, object_type, object_id |
1.3 Mekansal Organizasyon Tablosu
| tablo adı | Açıklamalar | anahtar alan |
|---|---|---|
tbl_spaces | Mekansal bilgi (odalar, katlar vb.) | id, name, uuid, parent_space_id, area |
tbl_stores | Mağaza Bilgisi | id, name, uuid, space_id |
tbl_tenants | Kiracı bilgisi | id, name, uuid, space_id |
tbl_shopfloors | Atölye bilgisi | id, name, uuid, space_id |
1.4 İlişki İlişkisi Tablosu
Sistem, çoklu çoklu ilişkiler kurmak için bir çok ilişki tablosu kullanır:
tbl_equipments_meters: Ekipman ve sayaçlar arasındaki ilişkitbl_equipments_offline_meters: Ekipman ve çevrimdışı sayaçlar arasındaki ilişkitbl_equipments_virtual_meters: Ekipman ve sanal sayaçlar arasındaki ilişkitbl_spaces_equipments: Mekan ve ekipman arasındaki ilişkitbl_spaces_meters: Mekan ve sayaçlar arasındaki ilişkitbl_combined_equipments_equipments: Kombine ekipman ve cihazlar arasındaki ilişki- vb...
1.5 Yeni Enerji Ekipmanları Listesi
| tablo adı | Açıklamalar | anahtar alan |
|---|---|---|
tbl_photovoltaic_power_stations | fotovoltaik güç istasyonu | id, name, capacity, contact_id |
tbl_energy_storage_containers | Enerji depolama konteyneri | id, name, rated_capacity, rated_power |
tbl_energy_storage_power_stations | enerji depolama güç istasyonu | id, name, rated_capacity |
tbl_microgrids | mikro ağ | id, name, address |
tbl_charging_stations | şarj istasyonu | id, name, rated_capacity, rated_power |
1.6 Kontrol ve Zamanlama Tablosu
| tablo adı | Açıklamalar | anahtar alan |
|---|---|---|
tbl_commands | kontrol komutu | id, name, topic, payload (JSON formatında) |
tbl_control_modes | kontrol modu | id, name, is_active |
tbl_control_modes_times | Kontrol modu zaman aralığı | id, control_mode_id, start_time_of_day, end_time_of_day |
1.7 Diğer Yapılandırma Tablosu
tbl_contacts: İletişim bilgileritbl_distribution_systems: Dağıtım sistemleritbl_distribution_circuits: Dağıtım devreleritbl_energy_flow_diagrams: Enerji Akış Diyagramıtbl_tariffs: Elektrik fiyatlandırma yapılandırmasıtbl_working_calendars: Çalışma takvimleritbl_web_messages: Web Mesajları
Geliştirme önlemleri:
- Tüm tabloların birincil anahtar olarak 'id' (BIGINT AUTO-INCREMENT) alanı vardır
- Çoğu tablonun, dış sistem entegrasyonu için 'uuid' (CHAR(36)) alanı vardır
- İlişki tabloları genellikle yalnızca 'id' ve iki yabancı anahtar alanı içerir
- JSON alanları, biçimlendirilmiş JSON dizelerini depolamak için 'LONGTEXT' türünü kullanır
2. Myems_historics_db (Tarihsel Veri Veritabanı)
Amaç: Gerçek zamanlı izleme verilerini ve tarihsel verileri depolamak, sistem veri hacmi açısından en büyük veritabanlarından biridir.
Özellikler:
- Veri hacmi devasa ve zaman serisi depolama kullanılır
- Ham verileri ve en son değer önbellek tablosunu içerir
- Veri kalite etiketlemeyi destekler (
is_bad,is_published)
Ana Tablo Yapısı:
| tablo adı | Açıklamalar | anahtar alan | İndeks stratejisi |
|---|---|---|---|
tbl_analog_value | Analog tarihsel veri | point_id, utc_date_time, actual_value, is_bad, is_published | (point_id, utc_date_time), (utc_date_time) |
tbl_analog_value_latest | En son analog değer (önbellek) | point_id, utc_date_time, actual_value | (point_id, utc_date_time) |
tbl_digital_value | Dijital tarihsel veri | point_id, utc_date_time, actual_value (INT) | (point_id, utc_date_time), (utc_date_time) |
tbl_digital_value_latest | En son sayısal değer (önbellek) | point_id, utc_date_time, actual_value | (point_id, utc_date_time) |
tbl_energy_value | Tarihsel enerji tüketimi verileri | point_id, utc_date_time, actual_value, is_bad, is_published | (point_id, utc_date_time), (utc_date_time) |
tbl_energy_value_latest | En son enerji tüketimi değeri (önbellek) | point_id, utc_date_time, actual_value | (point_id, utc_date_time) |
tbl_text_value | Metin hacmi tarihsel veri | point_id, utc_date_time, actual_value (LONGTEXT) | (point_id, utc_date_time), (utc_date_time) |
tbl_text_value_latest | En son metin hacmi değeri (önbellek) | point_id, utc_date_time, actual_value | (point_id, utc_date_time) |
Dosya Depolama Tablosu:
| tablo adı | Açıklamalar | anahtar alan |
|---|---|---|
tbl_cost_files | Maliyet belgesi (Excel/CSV) | file_name, uuid, upload_datetime_utc, status, file_object (LONGBLOB) |
tbl_offline_meter_files | Çevrimdışı sayaç veri dosyası | file_name, uuid, upload_datetime_utc, status, file_object |
tbl_data_repair_files | Veri onarım dosyası | file_name, uuid, upload_datetime_utc, status, file_object |
tbl_energy_plan_files | Enerji tüketimi plan belgesi | file_name, uuid, upload_datetime_utc, status, file_object |
Veri Türü Açıklaması:
actual_value: DECIMAL(21,6) - 6 ondalık basamaklı yüksek hassasiyetli sayısal değerleri desteklerutc_date_time: DATETIME - UTC zamanı, tüm zamanlar bir şekilde UTC kullanıris_bad: BOOL - Veri Kalite Etiketi, True hatalı veriyi gösteriris_published: BOOL - yayın bayrağı, True yayınlanmış olduğunu gösterir
Geliştirme önlemleri:
- Tüm zaman alanları UTC zamanını kullanır ve ön uç görüntüleme yerel zamana dönüştürülür
_latesttablosu, en son değerleri hızlı bir şekilde sorgulamak ve tarihsel tabloları taramayı önlemek için kullanılır- Dosya tablosu, ikili dosyaları depolamak için
LONGBLOBkullanır, boyut kısıtlamalarına dikkat edin - Performansı etkilememek için tabloların çok büyük olmasını önlemek üzere tarihsel verileri düzenli olarak temizleyin
3. Myems_energy_db (enerji tüketimi veritabanı)
Amaç: Çeşitli cihazların enerji tüketimi istatistiklerini depolamak ve saatlik, günlük, aylık ve yıllık olarak birleştirmek.
Özellikler:
- Veriler,
myems-aggregationhizmeti tarafından hesaplanarak ve oluşturulur - Zaman ayrıntılığına göre saatlik, günlük, aylık ve yıllık tablolara ayrılır
- Enerji kategorisine ve enerji tüketimi öğesine göre istatistikleri destekler
Tablo Adlandırma Kuralları:
tbl_{Nesne Türü}_{Yön}_{Sınıflandırma}_{Zaman Ayrıntılığı}- Nesne türü:
meter,equipment,combined_equipment,space,store,tenant,shopfloor - Yön:
input(giriş),output(çıkış) - Kategoriler:
category(enerji kategorisi),item(enerji tüketimi alt öğesi) - Zaman ayrıntılığı:
hourly,daily,monthly,yearly
Ana Tablo Yapısı:
3.1 Enerji tüketimi sayaç
| tablo adı | Açıklamalar | anahtar alan |
|---|---|---|
tbl_meter_hourly | Sayaçın saatlik enerji tüketimi | meter_id, start_datetime_utc, actual_value |
tbl_meter_daily | Sayaçın günlük enerji tüketimi | meter_id, start_datetime_utc, actual_value |
tbl_meter_monthly | Sayaçın aylık enerji tüketimi | meter_id, start_datetime_utc, actual_value |
tbl_meter_yearly | Sayaçın yıllık enerji tüketimi | meter_id, start_datetime_utc, actual_value |
tbl_offline_meter_hourly | Çevrimdışı sayaç saatlik enerji tüketimi | offline_meter_id, start_datetime_utc, actual_value |
tbl_virtual_meter_hourly | Sanal sayaç saatlik enerji tüketimi | virtual_meter_id, start_datetime_utc, actual_value |
3.2 Ekipman Enerji Tüketimi Tablosu
| tablo adı | Açıklamalar | anahtar alan |
|---|---|---|
tbl_equipment_input_category_hourly | Ekipman giriş enerji tüketimi (kategoriye göre) | equipment_id, energy_category_id, start_datetime_utc, actual_value |
tbl_equipment_input_item_hourly | Ekipman giriş enerji tüketimi (öğeye göre) | equipment_id, energy_item_id, start_datetime_utc, actual_value |
tbl_equipment_output_category_hourly | Ekipman çıkış enerji tüketimi (kategoriye göre) | equipment_id, energy_category_id, start_datetime_utc, actual_value |
tbl_combined_equipment_input_category_hourly | Kombinasyon cihazı giriş enerji tüketimi (kategoriye göre) | combined_equipment_id, energy_category_id, start_datetime_utc, actual_value |
tbl_combined_equipment_output_category_hourly | Kombine ekipman çıkışının enerji tüketimi (sınıflandırmaya göre) | combined_equipment_id, energy_category_id, start_datetime_utc, actual_value |
3.3 Mekan Enerji Tüketimi Tablosu
| tablo adı | Açıklamalar | anahtar alan |
|---|---|---|
tbl_space_input_category_hourly | Mekan giriş enerji tüketimi (kategoriye göre) | space_id, energy_category_id, start_datetime_utc, actual_value |
tbl_space_input_item_hourly | Mekan giriş enerji tüketimi (öğeye göre) | space_id, energy_item_id, start_datetime_utc, actual_value |
tbl_space_output_category_hourly | Mekan çıkış enerji tüketimi (sınıflandırmaya göre) | space_id, energy_category_id, start_datetime_utc, actual_value |
tbl_store_input_category_hourly | Mağaza giriş enerji tüketimi | store_id, energy_category_id, start_datetime_utc, actual_value |
tbl_tenant_input_category_hourly | Kiracılar enerji tüketimi girer | tenant_id, energy_category_id, start_datetime_utc, actual_value |
tbl_shopfloor_input_category_hourly | Atölye giriş enerji tüketimi | shopfloor_id, energy_category_id, start_datetime_utc, actual_value |
3.4 Yeni Enerji Ekipmanlarının Enerji Tüketimi Tablosu
| tablo adı | Açıklamalar | anahtar alan |
|---|---|---|
tbl_photovoltaic_power_station_hourly | Fotovoltaik güç istasyonunun saatlik elektrik üretimi | photovoltaic_power_station_id, start_datetime_utc, actual_value |
tbl_energy_storage_container_charge_hourly | Enerji depolama konteynerinin şarj kapasitesi | energy_storage_container_id, start_datetime_utc, actual_value |
tbl_energy_storage_container_discharge_hourly | Enerji depolama konteynerinin deşarj kapasitesi | energy_storage_container_id, start_datetime_utc, actual_value |
tbl_energy_storage_container_grid_buy_hourly | Enerji depolama konteynerleri elektrik alır | energy_storage_container_id, start_datetime_utc, actual_value |
tbl_energy_storage_container_grid_sell_hourly | Enerji depolama konteynerlerinden elektrik satışı | energy_storage_container_id, start_datetime_utc, actual_value |
tbl_microgrid_charge_hourly | Mikro ağ şarj kapasitesi | microgrid_id, start_datetime_utc, actual_value |
tbl_microgrid_discharge_hourly | Mikro ağ deşarj kapasitesi | microgrid_id, start_datetime_utc, actual_value |
İndeks Tasarımı:
- Tüm tabloların birleşik indeksi vardır:
(Nesne ID, Sınıflandırma ID, start_datetime_utc)veya(Nesne ID, start_datetime_utc) - Nesne ve zaman aralığına göre hızlı sorgulamaları destekler
Geliştirme önlemleri:
start_datetime_utc, zaman periyodunun başlangıç zamanını temsil eder (örn: 2024-01-01 00:00:00, 1 Ocak'ın 00:00 ile 01:00 arasıdır)actual_value, birleşik değer olup ham değer değildir- Veriler, birleşim hizmeti tarafından periyodik olarak hesaplanır, gerçek zamanlı olarak yazılmaz
- Sorgulama yaparken saat dilimi dönüşümüne dikkat edin
4. myems_billing_db (Faturalama Veritabanı)
Amaç: Faturalama ile ilgili enerji tüketimi verilerini depolamak. Yapısı myems_energy_db ile benzerdir, ancak veriler elektrik tarifelerine dayalı olarak hesaplanır.
Özellikler:
- Tablo yap ısı
myems_energy_dbile tamamen aynıdır - Veriler,
myems-aggregationhizmeti tarafından tarife yapılandırmalarını kullanarak hesaplanır - Kullanım zamanı tarifeleri ve katmanlı fiyatlandırma gibi karmaşık faturalama kurallarını destekler
Ana Tablolar:
myems_energy_dbile aynı tablo yapısı- Veri değerleri, genellikle para birimi birimlerinde (örn: CNY, USD) karşılık gelen tarife ile çarpılır
Geliştirme Notları:
- Faturalama verileri,
myems_system_db.tbl_tariffsiçindeki tarife yapılandırmasına bağımlıdır - Maliyet merkezleri (
cost_center) ile ilişkilendirilmesi zorunludur - Çoklu tarife stratejilerini destekler (kullanım zamanı, katmanlı, kapasite tabanlı vb.)
5. myems_carbon_db (Karbon Emisyonu Veritabanı)
Amaç: Karbon ayak izi hesaplamaları için karbon emisyonu ile ilgili enerji verilerini depolamak.
Özellikler:
- Tablo yapısı
myems_energy_dbile tamamen aynıdır - Veriler,
myems_aggregationhizmeti tarafından karbon emisyon faktörlerine dayalı olarak hesaplanır - Karbon emisyon faktörleri,
myems_system_db.tbl_energy_categories.kgco2eiçinde depolanır
Ana Tablolar:
myems_energy_dbile aynı tablo yapısı- Veri değerleri, genellikle kgCO2e (CO₂ eşdeğer kilogramları) cinsinden karbon emisyon faktörü ile çarpılır
Geliştirme Notları:
- Karbon emisyon faktörleri zamanla değişebilir, bu nedenle tarihsel faktörlerin desteklenmesi gerekmektedir
- Farklı enerji türleri (elektrik, gaz, petrol vb.) farklı emisyon faktörlerine sahiptir
- Kapsam 1, Kapsam 2 ve Kapsam 3 karbon emisyon hesaplamasını destekler
6. myems_energy_baseline_db (Enerji Başlangıç Noktası Veritabanı)
Amaç: Enerji tasarrufu analizi ve enerji verimliliği değerlendirmesi için enerji temel verilerini depolamak.
Özellikler:
- Tablo yapısı
myems_energy_dbile benzerdir - Başlangıç noktası verileri, genellikle tarihsel verilere veya standart değerlere dayalı olarak hesaplanır
- Gerçek enerji tüketimini temel tüketim ile karşılaştırmak ve enerji tasarruflarını hesaplamak için kullanılır
Ana Tablolar:
myems_energy_dbile aynı tablo yapısı- Gerçek değerler yerine temel değerleri depolar
Geliştirme Notları:
- Başlangıç noktası verileri düzenli olarak güncellenmesi gerekmektedir
- Çoklu temel hesaplama yöntemlerini destekler (tarihsel ortalama, regresyon analizi, standart değerler vb.)
7. Myems_energy_model_db (enerji tüketimi model veritabanı)
Amaç: Yıllık 8760 saatlik enerji tüketimi model verilerini depolamak (yılda 8760 saat).
Özellikler:
- Her nesne, 8760 kayıt depolar (bir yıl için saatlik veriler)
- Enerji tüketimi tahmini ve planlaması için kullanılır
- Tablo adında
_8760soneki bulunur
Ana Tablo:
| tablo adı | Açıklamalar | anahtar alan |
|---|---|---|
tbl_meter_8760 | Sayaç 8760 saat modeli | meter_id, start_datetime_utc, actual_value |
tbl_equipment_input_category_8760 | Ekipman giriş enerji tüketimi modeli | equipment_id, energy_category_id, start_datetime_utc, actual_value |
tbl_combined_equipment_input_category_8760 | Kombinasyon cihazı giriş enerji tüketimi modeli | combined_equipment_id, energy_category_id, start_datetime_utc, actual_value |
tbl_space_input_category_8760 | Mekan giriş enerji tüketimi modeli | space_id, energy_category_id, start_datetime_utc, actual_value |
tbl_shopfloor_input_category_8760 | Atölye giriş enerji tüketimi modeli | shopfloor_id, energy_category_id, start_datetime_utc, actual_value |
tbl_store_input_category_8760 | Mağaza giriş enerji tüketimi modeli | store_id, energy_category_id, start_datetime_utc, actual_value |
tbl_tenant_input_category_8760 | Kiracı giriş enerji tüketimi modeli | tenant_id, energy_category_id, start_datetime_utc, actual_value |
Geliştirme önlemleri:
- 8760 saatlik model, genellikle tarihsel verilere veya standart modellere dayalı olarak oluşturulur
- Yıllık enerji tüketimi tahmini ve bütçe hazırlama için kullanılır
- Hafta, ay, çeyrek gibi boyutlara göre görüntülemeyi destekler
8. myems_energy_plan_db (Enerji Planı Veritabanı)
Amaç: Enerji planı ve hedef verilerini depolamak.
Özellikler:
- Tablo yapısı
myems_energy_dbile benzerdir - Gerçek değerler yerine planlanan değerleri depolar
- Enerji tüketimi bütçelemesi ve hedef yönetimi için kullanılır
Ana Tablolar:
myems_energy_dbile aynı tablo yapısı- Veriler, plan dosyalarından veya elle girişte gelir
Geliştirme Notları:
- Plan verileri, analiz için gerçek verilerle karşılaştırılmalıdır
- Çok seviyeli planları destekler (yıllık, aylık, haftalık vb.)
9. myems_energy_prediction_db (Enerji Tahmini Veritabanı)
Amaç: Enerji tüketimi tahmini verilerini depolamak.
Özellikler:
- Tablo yapısı
myems_energy_dbile benzerdir - Gerçek değerler yerine tahmini değerleri depolar
- Enerji tüketimi tahmini ve uyarılar için kullanılır
Ana Tablolar:
myems_energy_dbile aynı tablo yapısı- Veriler, tahmin algoritmaları tarafından oluşturulur
Geliştirme Notları:
- Tahmin verileri düzenli olarak güncellenmesi gerekmektedir
- Çoklu tahmin algoritmalarını destekler (zaman serisi, makine öğrenimi vb.)
- Tahmin doğruluğu sürekli olarak optimize edilmelidir
10. Myems_fdd_db (Arıza Teşhisi Veritabanı)
Amaç: Arıza tespiti ve teşhisi ile ilgili verileri depolamak.
Özellikler:
- Çoklu uyarı kanallarını destekler (web, e-posta, SMS, WeChat, telefon)
- Kural motoru, karmaşık arıza tespiti mantığını destekler
- Arıza mesajlarının onaylanmasını ve işlenmesini destekler
Ana Tablo Yapısı:
| tablo adı | Açıklamalar | anahtar alan |
|---|---|---|
tbl_rules | Tanısal kurallar | id, name, category, fdd_code, priority, channel, expression (JSON), message_template, is_enabled |
tbl_web_messages | Web Mesajı | id, rule_id, user_id, subject, category, priority, message, status, belong_to_object_type, belong_to_object_id |
tbl_email_messages | E-posta mesajı | id, rule_id, recipient_name, recipient_email, subject, message, attachment_file_name, status |
tbl_text_messages_outbox | SMS gönderi kutusu | id, rule_id, recipient_mobile, message, status, acknowledge_code |
tbl_text_messages_inbox | SMS gelen kutusu | id, sender_mobile, message, status |
tbl_wechat_messages_outbox | WeChat mesajı gönderici kutusu | id, rule_id, recipient_openid, message_template_id, message_data (JSON) |
tbl_wechat_messages_inbox | WeChat mesajı gelen kutusu | id, sender_openid, message, status |
tbl_email_servers | E-posta Sunucusu Yapılandırması | id, host, port, requires_authentication, user_name, password, from_addr |
tbl_wechat_configs | WeChat yapılandırması | id, api_server, app_id, app_secret, access_token, expires_datetime_utc |
Kural Kategorileri (category):
REALTIME: Gerçek zamanlı uyarılarSYSTEM: Sistem uyarılarıSPACE: Mekan uyarılarıMETER: Sayaç uyarılarıTENANT: Kiracı uyarılarıSTORE: Mağaza uyarılarıSHOPFLOOR: Atölye uyarılarıEQUIPMENT: Ekipman uyarılarıCOMBINEDEQUIPMENT: Kombine ekipman uyarıları
Öncelik (priority):
CRITICAL: KritikHIGH: YüksekMEDIUM: OrtaLOW: Düşük
Geliştirme Notları:
expressionalanı, kural ifadesini JSON formatında depolarmessage_template, değişken değiştirmeyi destekler (örn:$name,$value)- Kurallar, hem zamanlanmış yürütmeyi hem de anında yürütmeyi destekler
- Mesaj durumu:
new→sent→acknowledged/timeout
11. myems_user_db (Kullanıcı Veritabanı)
Amaç: Kullanıcı kimlik doğrulamasını, API anahtarlarını, e-posta mesajlarını vb. depolamak.
Özellikler:
- Küçük veri hacmi ancak yüksek güvenlik gereksinimleri
- Kullanıcı izinleri yönetimini destekler
- API anahtarı kimlik doğrulamasını destekler
Ana Tablo Yapısı:
| tablo adı | Açıklamalar | anahtar alan |
|---|---|---|
tbl_users | Kullanıcı bilgisi | 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 | İzin Yapılandırması | id, name, data (JSON formatında) |
tbl_sessions | kullanıcı oturumu | id, user_uuid, token, utc_expires |
tbl_api_keys | API Anahtarı | id, name, token, created_datetime_utc, expires_datetime_utc |
tbl_email_messages | E-posta mesajı | id, recipient_name, recipient_email, subject, message, attachment_file_name, status, scheduled_datetime_utc |
tbl_email_message_sessions | E-posta konuşması | id, recipient_email, token, expires_datetime_utc |
tbl_logs | Operasyon günlüğü | id, user_uuid, request_datetime_utc, request_method, resource_type, resource_id, request_body (JSON) |
tbl_notifications | Bildirim mesajı | id, user_id, created_datetime_utc, status, subject, message, url |
tbl_new_users | Yeni kullanıcı (etkinleştirilmesi gereken) | id, name, uuid, display_name, email, salt, password |
tbl_verification_codes | Doğrulama Kodu | id, recipient_email, verification_code, created_datetime_utc, expires_datetime_utc |
Güvenlik Tasarımı:
- Parolalar, tuz + karma kullanılarak depolanır, düz metin depolanmaz
- Hesap ve parola son kullanma tarihini destekler
- Giriş başarısızlığı deneme sınırlarını destekler
- API anahtarları, son kullanma tarihini destekler
Geliştirme Notları:
- Parola alanları, depolamak için şifrelenmelidir, doğrudan sorgulanmamalıdır
- Oturum belirteçleri, süresi dolmuş kayıtları kaldırmak için düzenli olarak temizlenmelidir
- Operasyon günlükleri, denetim için tüm kritik eylemleri kaydetmelidir
- Bildirim durumları:
unread→read→archived
12. myems_reporting_db (Raporlama Veritabanı)
Amaç: Raporlarla ilgili e-posta mesajlarını ve ekleri depolamak.
Özellikler:
- Küçük veri hacmi
- Rapor şablonlarını ve oluşturulan dosyaları depolamayı destekler
Ana Tablo Yapısı:
| tablo adı | Açıklamalar | anahtar alan |
|---|---|---|
tbl_reports | Rapor Yapılandırması | id, name, uuid, expression (JSON), is_enabled, last_run_datetime_utc, next_run_datetime_utc, is_run_immediately |
tbl_reports_files | rapor belgesi | id, uuid, create_datetime_utc, file_name, file_type (xlsx/pdf/docx), file_object (LONGBLOB) |
tbl_template_files | Rapor Şablon Dosyası | id, uuid, report_id, file_name, file_type, file_object |
tbl_email_messages | E-posta mesajı | id, recipient_name, recipient_email, subject, message, attachment_file_name, attachment_file_object, status |
Geliştirme Notları:
- Rapor dosyaları, Excel, PDF ve Word formatlarını destekler
- Şablon dosyaları, raporlar oluşturmak için kullanılır
- Raporlar, hem zamanlanmış oluşturmayı hem de anında oluşturmayı destekler
- Dosyalar,
LONGBLOBkullanılarak depolanır; boyut kısıtlamalarına dikkat edin
13. myems_production_db (Üretim Veritabanı)
Amaç: Üretim ile ilgili ürün verilerini depolamak.
Özellikler:
- Küçük veri hacmi
- Üretim enerji tüketimi korelasyon analizi için kullanılır
Ana Tablo Yapısı:
| tablo adı | Açıklamalar | anahtar alan |
|---|---|---|
tbl_products | Ürün Bilgisi | id, name, uuid, unit_of_measure, tag, standard_product_coefficient |
tbl_teams | Takım Bilgisi | id, name, uuid, description |
tbl_shifts | Vardiya bilgisi | id, shopfloor_id, team_id, product_id, product_count, start_datetime_utc, end_datetime_utc, reference_timestamp |
tbl_shopfloor_hourly | Atölye saatlik çıktısı | id, shopfloor_id, start_datetime_utc, product_id, product_count |
tbl_space_hourly | Mekan saatlik çıktısı | id, space_id, start_datetime_utc, product_id, product_count |
tbl_shopfloors_products | Atölye ve ürün ilişkisi | id, shopfloor_id, product_id |
tbl_shopfloors_teams | Atölye ve takım ilişkisi | id, shopfloor_id, team_id |
Geliştirme önlemleri:
- Üretim verileri, birim ürün enerji tüketimini hesaplamak için kullanılır
- Ürün, takım, atölye gibi boyutlara göre istatistikleri destekler
- Enerji verimlilik göstergelerini hesaplamak için enerji tüketimi verileriyle ilişkilendirilir
Veri akışı ilişkisi
Veri toplama süreci
Veri Edinimi Akışı
Cihaz / Sensör
↓ (Modbus TCP / MQTT / HTTP)
myems-modbus-tcp (Veri Edinimi Hizmeti)
↓ (Yazma)
myems_historical_db.tbl_analog_value / tbl_digital_value / tbl_energy_value
↓ (Veri Normalizasyonu)
myems-normalization (Normalizasyon Hizmeti)
↓ (Veri Temizleme)
myems-cleaning (Temizleme Hizmeti)
↓ (Veri Birleştirme)
myems-aggregation (Birleştirme Hizmeti)
↓ (Yazma)
myems_energy_db (Enerji Verileri)
myems_billing_db (Faturalama Verileri)
myems_carbon_db (Karbon Emisyonu Verileri)
Veri Sorgulama Akışı
Kullanıcı İsteği
↓
myems-api (API Hizmeti)
↓ (Sorgu)
myems_system_db (Yapılandırma Verileri)
myems_historical_db (Tarihsel Verileri)
myems_energy_db (Enerji Verileri)
↓ (Yanıt)
myems-web / myems-admin (Ön Uç Görüntüleme)
Veri İlişkisi Diyagramı
myems_system_db.tbl_points
↓ (point_id)
myems_historical_db.tbl_analog_value
↓ (Birleştirme Hesaplaması)
myems_energy_db.tbl_meter_hourly
↓ (Bağlantı)
myems_system_db.tbl_meters
↓ (Bağlantı)
myems_system_db.tbl_equipments
↓ (Bağlantı)
myems_system_db.tbl_spaces
Tablo Yapısı Tasarım Şartnamesi
Genel alanlar
Tüm tablolar aşağıdaki ortak alanları içerir:
| alan adı | tür | Açıklamalar |
|---|---|---|
id | BIGINT NOT NULL AUTO_INCREMENT | Birincil anahtar, otomatik artış |
name | VARCHAR(255) | isim |
uuid | CHAR(36) | UUID, Dış sistem entegrasyonu için kullanılır |
description | VARCHAR(255) | Açıklama (isteğe bağlı) |
Zaman alanı
| alan adı | tür | Açıklamalar |
|---|---|---|
utc_date_time | DATETIME | UTC zamanı (tarihsel veri tablosu) |
start_datetime_utc | DATETIME | Zaman periyodunun başlangıç zamanı (birleşik veri tablosu) |
created_datetime_utc | DATETIME | Oluşturma Zamanı |
updated_datetime_utc | DATETIME | Güncelleme zamanı |
last_run_datetime_utc | DATETIME | Son çalışma zamanı |
next_run_datetime_utc | DATETIME | Sonraki çalışma zamanı |
Dikkat: Tüm zaman alanları, bir şekilde UTC zamanını kullanmalıdır ve ön uç görüntüleme yerel zamana dönüştürülmelidir.
Sayısal alan
| alan adı | tür | Açıklamalar |
|---|---|---|
actual_value | DECIMAL(21, 6) | Gerçek değer, yüksek hassasiyeti destekler (6 ondalık basamak) |
set_value | DECIMAL(21, 6) | ayarlı değer |
rated_capacity | DECIMAL(21, 6) | Nominal kapasite |
rated_power | DECIMAL(21, 6) | nominal güç |
JSON alanları
| alan adı | tür | Açıklamalar |
|---|---|---|
connection | LONGTEXT | Bağlantı yapılandırması (JSON formatında) |
expression | LONGTEXT | İfade (JSON formatında) |
payload | LONGTEXT | Yük (JSON formatında) |
data | LONGTEXT | Veri (JSON formatında) |
Not: JSON alanları, biçimlendirilmiş JSON dizelerini depolar ve kullanmadan önce ayrıştırılmaları gerekir.
Durum alanı
| alan adı | tür | Açıklamalar |
|---|---|---|
is_enabled | BOOL | Etkin mi değil mi |
is_active | BOOL | Aktivasyon durumu |
is_bad | BOOL | Hatalı veri var mı |
is_published | BOOL | Yayınlandı mı? |
is_counted | BOOL | İstatistiklere dahil ediliyor mu |
status | VARCHAR(32) | Durum (örn: new, sent, done, error) |
İndeks Tasarımı
Birincil anahtar indeksi:
- Tüm tabloların
PRIMARY KEY (id)alanı vardır
Benzersiz indeks:
- Anahtar alanlar (örn:
name,uuid) genellikle benzersiz indekslere sahiptir
Birleşik indeks:
- Sık sık sorgulanan alan kombinasyonları için birleşik indeks oluşturulur
- Örn:
(point_id, utc_date_time),(meter_id, start_datetime_utc)
Zaman indeksi:
- Zaman alanı, genellikle ayrı olarak indekslenir ve zaman aralığı sorgularını destekler