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: newsentacknowledged / 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ı: unreadreadarchived

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