Ana İçeriğe Git

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ı​

Tasarım kavramı​

  1. 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
  2. Okuma-yazma ayrımı: Tarihsel veriler zaman serisi formatında depolanarak, verimli sorgulama sağlanır
  3. Yatay ölçeklenebilirlik: Büyük veritabanları (historical_db, energy_db) bağımsız olarak ölçeklenebilir
  4. 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çıklamalaranahtar alan
tbl_energy_categoriesEnerji sınıflandırması (elektrik, su, gaz, soğuk, ısı vb.)id, name, unit_of_measure, kgce, kgco2e
tbl_energy_itemsEnerji tüketimi alt öğeleri (aydınlatma, klima, güç vb.)id, name, energy_category_id
tbl_cost_centersMaliyet merkeziid, name, external_id
tbl_data_sourcesVeri Kaynağı Yapılandırmasıid, name, gateway_id, protocol, connection
tbl_protocolsProtokol Yapılandırmasıid, name, protocol_type

1.2 Ekipman Yönetimi Tablosu​

tablo adıAçıklamalaranahtar alan
tbl_equipmentsCihaz Bilgisiid, name, uuid, equipment_type_id, cost_center_id
tbl_combined_equipmentsKombinasyon cihazı (birden fazla cihazın kombinasyonu)id, name, is_input_counted, is_output_counted
tbl_metersSayaç bilgisiid, name, uuid, energy_category_id, is_counted
tbl_offline_metersÇevrimdışı sayaç (elle girilen)id, name, energy_category_id
tbl_virtual_metersSanal Sayaç (Hesaplanan)id, name, expression (JSON formatında)
tbl_pointsVeri noktası bilgisiid, name, data_source_id, object_type, object_id

1.3 Mekansal Organizasyon Tablosu​

tablo adıAçıklamalaranahtar alan
tbl_spacesMekansal bilgi (odalar, katlar vb.)id, name, uuid, parent_space_id, area
tbl_storesMağaza Bilgisiid, name, uuid, space_id
tbl_tenantsKiracı bilgisiid, name, uuid, space_id
tbl_shopfloorsAtölye bilgisiid, 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şki
  • tbl_equipments_offline_meters: Ekipman ve çevrimdışı sayaçlar arasındaki ilişki
  • tbl_equipments_virtual_meters: Ekipman ve sanal sayaçlar arasındaki ilişki
  • tbl_spaces_equipments: Mekan ve ekipman arasındaki ilişki
  • tbl_spaces_meters: Mekan ve sayaçlar arasındaki ilişki
  • tbl_combined_equipments_equipments: Kombine ekipman ve cihazlar arasındaki ilişki
  • vb...

1.5 Yeni Enerji Ekipmanları Listesi​

tablo adıAçıklamalaranahtar alan
tbl_photovoltaic_power_stationsfotovoltaik güç istasyonuid, name, capacity, contact_id
tbl_energy_storage_containersEnerji depolama konteyneriid, name, rated_capacity, rated_power
tbl_energy_storage_power_stationsenerji depolama güç istasyonuid, name, rated_capacity
tbl_microgridsmikro ağid, name, address
tbl_charging_stationsşarj istasyonuid, name, rated_capacity, rated_power

1.6 Kontrol ve Zamanlama Tablosu​

tablo adıAçıklamalaranahtar alan
tbl_commandskontrol komutuid, name, topic, payload (JSON formatında)
tbl_control_modeskontrol moduid, name, is_active
tbl_control_modes_timesKontrol 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 bilgileri
  • tbl_distribution_systems: Dağıtım sistemleri
  • tbl_distribution_circuits: Dağıtım devreleri
  • tbl_energy_flow_diagrams: Enerji Akış Diyagramı
  • tbl_tariffs: Elektrik fiyatlandırma yapılandırması
  • tbl_working_calendars: Çalışma takvimleri
  • tbl_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çıklamalaranahtar alanİndeks stratejisi
tbl_analog_valueAnalog tarihsel veripoint_id, utc_date_time, actual_value, is_bad, is_published(point_id, utc_date_time), (utc_date_time)
tbl_analog_value_latestEn son analog değer (önbellek)point_id, utc_date_time, actual_value(point_id, utc_date_time)
tbl_digital_valueDijital tarihsel veripoint_id, utc_date_time, actual_value (INT)(point_id, utc_date_time), (utc_date_time)
tbl_digital_value_latestEn son sayısal değer (önbellek)point_id, utc_date_time, actual_value(point_id, utc_date_time)
tbl_energy_valueTarihsel enerji tüketimi verileripoint_id, utc_date_time, actual_value, is_bad, is_published(point_id, utc_date_time), (utc_date_time)
tbl_energy_value_latestEn son enerji tüketimi değeri (önbellek)point_id, utc_date_time, actual_value(point_id, utc_date_time)
tbl_text_valueMetin hacmi tarihsel veripoint_id, utc_date_time, actual_value (LONGTEXT)(point_id, utc_date_time), (utc_date_time)
tbl_text_value_latestEn son metin hacmi değeri (önbellek)point_id, utc_date_time, actual_value(point_id, utc_date_time)

Dosya Depolama Tablosu:

tablo adıAçıklamalaranahtar alan
tbl_cost_filesMaliyet 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_filesVeri onarım dosyasıfile_name, uuid, upload_datetime_utc, status, file_object
tbl_energy_plan_filesEnerji tüketimi plan belgesifile_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 destekler
  • utc_date_time: DATETIME - UTC zamanı, tüm zamanlar bir şekilde UTC kullanır
  • is_bad: BOOL - Veri Kalite Etiketi, True hatalı veriyi gösterir
  • is_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
  • _latest tablosu, 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 LONGBLOB kullanı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-aggregation hizmeti 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çıklamalaranahtar alan
tbl_meter_hourlySayaçın saatlik enerji tüketimimeter_id, start_datetime_utc, actual_value
tbl_meter_dailySayaçın günlük enerji tüketimimeter_id, start_datetime_utc, actual_value
tbl_meter_monthlySayaçın aylık enerji tüketimimeter_id, start_datetime_utc, actual_value
tbl_meter_yearlySayaçın yıllık enerji tüketimimeter_id, start_datetime_utc, actual_value
tbl_offline_meter_hourlyÇevrimdışı sayaç saatlik enerji tüketimioffline_meter_id, start_datetime_utc, actual_value
tbl_virtual_meter_hourlySanal sayaç saatlik enerji tüketimivirtual_meter_id, start_datetime_utc, actual_value

3.2 Ekipman Enerji Tüketimi Tablosu​

tablo adıAçıklamalaranahtar alan
tbl_equipment_input_category_hourlyEkipman giriş enerji tüketimi (kategoriye göre)equipment_id, energy_category_id, start_datetime_utc, actual_value
tbl_equipment_input_item_hourlyEkipman giriş enerji tüketimi (öğeye göre)equipment_id, energy_item_id, start_datetime_utc, actual_value
tbl_equipment_output_category_hourlyEkipman çıkış enerji tüketimi (kategoriye göre)equipment_id, energy_category_id, start_datetime_utc, actual_value
tbl_combined_equipment_input_category_hourlyKombinasyon cihazı giriş enerji tüketimi (kategoriye göre)combined_equipment_id, energy_category_id, start_datetime_utc, actual_value
tbl_combined_equipment_output_category_hourlyKombine 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çıklamalaranahtar alan
tbl_space_input_category_hourlyMekan giriş enerji tüketimi (kategoriye göre)space_id, energy_category_id, start_datetime_utc, actual_value
tbl_space_input_item_hourlyMekan giriş enerji tüketimi (öğeye göre)space_id, energy_item_id, start_datetime_utc, actual_value
tbl_space_output_category_hourlyMekan çıkış enerji tüketimi (sınıflandırmaya göre)space_id, energy_category_id, start_datetime_utc, actual_value
tbl_store_input_category_hourlyMağaza giriş enerji tüketimistore_id, energy_category_id, start_datetime_utc, actual_value
tbl_tenant_input_category_hourlyKiracılar enerji tüketimi girertenant_id, energy_category_id, start_datetime_utc, actual_value
tbl_shopfloor_input_category_hourlyAtölye giriş enerji tüketimishopfloor_id, energy_category_id, start_datetime_utc, actual_value

3.4 Yeni Enerji Ekipmanlarının Enerji Tüketimi Tablosu​

tablo adıAçıklamalaranahtar alan
tbl_photovoltaic_power_station_hourlyFotovoltaik güç istasyonunun saatlik elektrik üretimiphotovoltaic_power_station_id, start_datetime_utc, actual_value
tbl_energy_storage_container_charge_hourlyEnerji depolama konteynerinin şarj kapasitesienergy_storage_container_id, start_datetime_utc, actual_value
tbl_energy_storage_container_discharge_hourlyEnerji depolama konteynerinin deşarj kapasitesienergy_storage_container_id, start_datetime_utc, actual_value
tbl_energy_storage_container_grid_buy_hourlyEnerji depolama konteynerleri elektrik alırenergy_storage_container_id, start_datetime_utc, actual_value
tbl_energy_storage_container_grid_sell_hourlyEnerji depolama konteynerlerinden elektrik satışıenergy_storage_container_id, start_datetime_utc, actual_value
tbl_microgrid_charge_hourlyMikro ağ şarj kapasitesimicrogrid_id, start_datetime_utc, actual_value
tbl_microgrid_discharge_hourlyMikro ağ deşarj kapasitesimicrogrid_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_db ile tamamen aynıdır
  • Veriler, myems-aggregation hizmeti 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_db ile 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_tariffs iç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_db ile tamamen aynıdır
  • Veriler, myems_aggregation hizmeti tarafından karbon emisyon faktörlerine dayalı olarak hesaplanır
  • Karbon emisyon faktörleri, myems_system_db.tbl_energy_categories.kgco2e içinde depolanır

Ana Tablolar:

  • myems_energy_db ile 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_db ile 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_db ile 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 _8760 soneki bulunur

Ana Tablo:

tablo adıAçıklamalaranahtar alan
tbl_meter_8760Sayaç 8760 saat modelimeter_id, start_datetime_utc, actual_value
tbl_equipment_input_category_8760Ekipman giriş enerji tüketimi modeliequipment_id, energy_category_id, start_datetime_utc, actual_value
tbl_combined_equipment_input_category_8760Kombinasyon cihazı giriş enerji tüketimi modelicombined_equipment_id, energy_category_id, start_datetime_utc, actual_value
tbl_space_input_category_8760Mekan giriş enerji tüketimi modelispace_id, energy_category_id, start_datetime_utc, actual_value
tbl_shopfloor_input_category_8760Atölye giriş enerji tüketimi modelishopfloor_id, energy_category_id, start_datetime_utc, actual_value
tbl_store_input_category_8760Mağaza giriş enerji tüketimi modelistore_id, energy_category_id, start_datetime_utc, actual_value
tbl_tenant_input_category_8760Kiracı giriş enerji tüketimi modelitenant_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_db ile 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_db ile 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_db ile 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_db ile 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çıklamalaranahtar alan
tbl_rulesTanısal kurallarid, name, category, fdd_code, priority, channel, expression (JSON), message_template, is_enabled
tbl_web_messagesWeb Mesajıid, rule_id, user_id, subject, category, priority, message, status, belong_to_object_type, belong_to_object_id
tbl_email_messagesE-posta mesajıid, rule_id, recipient_name, recipient_email, subject, message, attachment_file_name, status
tbl_text_messages_outboxSMS gönderi kutusuid, rule_id, recipient_mobile, message, status, acknowledge_code
tbl_text_messages_inboxSMS gelen kutusuid, sender_mobile, message, status
tbl_wechat_messages_outboxWeChat mesajı gönderici kutusuid, rule_id, recipient_openid, message_template_id, message_data (JSON)
tbl_wechat_messages_inboxWeChat mesajı gelen kutusuid, sender_openid, message, status
tbl_email_serversE-posta Sunucusu Yapılandırmasıid, host, port, requires_authentication, user_name, password, from_addr
tbl_wechat_configsWeChat yapılandırmasıid, api_server, app_id, app_secret, access_token, expires_datetime_utc

Kural Kategorileri (category):

  • REALTIME: Gerçek zamanlı uyarılar
  • SYSTEM: 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: Kritik
  • HIGH: Yüksek
  • MEDIUM: Orta
  • LOW: Düşük

Geliştirme Notları:

  • expression alanı, kural ifadesini JSON formatında depolar
  • message_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çıklamalaranahtar alan
tbl_usersKullanıcı bilgisiid, 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_sessionskullanıcı oturumuid, user_uuid, token, utc_expires
tbl_api_keysAPI Anahtarıid, name, token, created_datetime_utc, expires_datetime_utc
tbl_email_messagesE-posta mesajıid, recipient_name, recipient_email, subject, message, attachment_file_name, status, scheduled_datetime_utc
tbl_email_message_sessionsE-posta konuşmasıid, recipient_email, token, expires_datetime_utc
tbl_logsOperasyon günlüğüid, user_uuid, request_datetime_utc, request_method, resource_type, resource_id, request_body (JSON)
tbl_notificationsBildirim mesajıid, user_id, created_datetime_utc, status, subject, message, url
tbl_new_usersYeni kullanıcı (etkinleştirilmesi gereken)id, name, uuid, display_name, email, salt, password
tbl_verification_codesDoğrulama Koduid, 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çıklamalaranahtar alan
tbl_reportsRapor Yapılandırmasıid, name, uuid, expression (JSON), is_enabled, last_run_datetime_utc, next_run_datetime_utc, is_run_immediately
tbl_reports_filesrapor belgesiid, uuid, create_datetime_utc, file_name, file_type (xlsx/pdf/docx), file_object (LONGBLOB)
tbl_template_filesRapor Şablon Dosyasıid, uuid, report_id, file_name, file_type, file_object
tbl_email_messagesE-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, LONGBLOB kullanı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çıklamalaranahtar alan
tbl_productsÜrün Bilgisiid, name, uuid, unit_of_measure, tag, standard_product_coefficient
tbl_teamsTakım Bilgisiid, name, uuid, description
tbl_shiftsVardiya bilgisiid, shopfloor_id, team_id, product_id, product_count, start_datetime_utc, end_datetime_utc, reference_timestamp
tbl_shopfloor_hourlyAtölye saatlik çıktısıid, shopfloor_id, start_datetime_utc, product_id, product_count
tbl_space_hourlyMekan saatlik çıktısıid, space_id, start_datetime_utc, product_id, product_count
tbl_shopfloors_productsAtölye ve ürün ilişkisiid, shopfloor_id, product_id
tbl_shopfloors_teamsAtölye ve takım ilişkisiid, 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ürAçıklamalar
idBIGINT NOT NULL AUTO_INCREMENTBirincil anahtar, otomatik artış
nameVARCHAR(255)isim
uuidCHAR(36)UUID, Dış sistem entegrasyonu için kullanılır
descriptionVARCHAR(255)Açıklama (isteğe bağlı)

Zaman alanı​

alan adıtürAçıklamalar
utc_date_timeDATETIMEUTC zamanı (tarihsel veri tablosu)
start_datetime_utcDATETIMEZaman periyodunun başlangıç zamanı (birleşik veri tablosu)
created_datetime_utcDATETIMEOluşturma Zamanı
updated_datetime_utcDATETIMEGüncelleme zamanı
last_run_datetime_utcDATETIMESon çalışma zamanı
next_run_datetime_utcDATETIMESonraki ç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ürAçıklamalar
actual_valueDECIMAL(21, 6)Gerçek değer, yüksek hassasiyeti destekler (6 ondalık basamak)
set_valueDECIMAL(21, 6)ayarlı değer
rated_capacityDECIMAL(21, 6)Nominal kapasite
rated_powerDECIMAL(21, 6)nominal güç

JSON alanları​

alan adıtürAçıklamalar
connectionLONGTEXTBağlantı yapılandırması (JSON formatında)
expressionLONGTEXTİfade (JSON formatında)
payloadLONGTEXTYük (JSON formatında)
dataLONGTEXTVeri (JSON formatında)

Not: JSON alanları, biçimlendirilmiş JSON dizelerini depolar ve kullanmadan önce ayrıştırılmaları gerekir.

Durum alanı​

alan adıtürAçıklamalar
is_enabledBOOLEtkin mi değil mi
is_activeBOOLAktivasyon durumu
is_badBOOLHatalı veri var mı
is_publishedBOOLYayınlandı mı?
is_countedBOOLİstatistiklere dahil ediliyor mu
statusVARCHAR(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