Veritabanı Yapısı
Qapu veritabanı yapısı, tek bir ürünün ihtiyacına göre zamanla büyümüş bir tablo kümesi olarak değil; birden fazla IoT ürün hattını aynı omurga üzerinde taşıyabilecek platform veri modeli olarak ele alınır. Bu nedenle burada asıl mesele tablo sayısı değil, sorumlulukların doğru ayrılmasıdır. Hangi veri hangi bağlamda yaşar, hangi tablo ailesi hangi yaşam döngüsünü taşır ve hangi katman nerede başlar sorusu, yapının temelini oluşturur.
Qapu’nun veritabanı modeli katmanlıdır; çünkü platformun taşıdığı problemler de katmanlıdır. Kimlik ve yetki başka hızda değişir, cihaz ve altyapı başka doğruluk mantığı ister, telemetri başka hacimde akar, kural ve aksiyon başka türde durum yönetir, mesajlaşma ve finans gibi alanlar ise sistemin kullanıcı ve işletme yüzünü oluşturur. Bunların tek parça düşünülmesi kısa vadede kolay görünür; fakat büyüme başladığında hem geliştirme hem bakım maliyeti hızla kontrolden çıkar.
Bu yüzden veri modeli domain ailelerine ayrılır. Bu ayrım yalnız dokümantasyon düzeni için değil, sistemin bounded context sınırlarını net tutmak için yapılmıştır. Her tablo ailesi kendi bağlamında okunur, düzenlenir ve geliştirilir; ama hepsi aynı operasyon omurgasının parçasıdır.
Yüksek seviye veri omurgası
Qapu içindeki temel veri hareketi birkaç büyük blok etrafında döner. Kimlik ve yetki katmanı, kullanıcı ve erişim omurgasını taşır. Cihaz, altyapı ve IoT katmanı sahadaki fiziksel varlıkları ve onların haberleşme bağlamını tanımlar. Telemetri ve ölçüm katmanı ham veriyi kabul eder, normalize eder ve anlamlı ölçüm kayıtlarına dönüştürür. Kural ve aksiyon katmanı bu ölçümleri iş kurallarına ve sistem reaksiyonlarına bağlar. Mesajlaşma, finans, not ve log gibi uygulama katmanları ise bu operasyonun kullanıcıya, yönetime ve sistem gözlemlenebilirliğine bakan yüzlerini oluşturur.
Bu akış, veritabanının yalnız veri saklayan bir yapı olmadığını gösterir. Veri önce bağlama oturur, sonra işlenir, ardından karar ve aksiyon katmanına taşınır. Veritabanı yapısı da tam olarak bu yaşam döngüsünü yansıtacak şekilde bölünmüştür.
Domain sınıflandırması
Qapu içindeki tablo aileleri aynı veritabanında yaşasa da aynı seviyede görülmemelidir. Bazı alanlar doğrudan platform çekirdeğidir. Bazıları birden fazla ürün tarafından paylaşılabilen ortak servis katmanıdır. Bazıları ise ürün uzantısı veya uygulama yüzü niteliğindedir. Bu ayrımı baştan net koymak, ileride platform çekirdeğinin ürün ihtiyaçlarıyla şişmesini ve servis sınırlarının bulanıklaşmasını önler.
Core platform domains
Core alanlar, ürün değişse bile ayakta kalması gereken omurgadır. Kullanıcı ve yetki, cihaz ve detay, IoT altyapı, IoT iletişim, telemetri ve ölçüm çekirdeği, kural ve aksiyon ile log/audit aileleri bu sınıfa girer. Bunlar Qapu’nun gerçek platform omurgasını oluşturur. Bir ürünün yaşam döngüsünden bağımsız düşünülmeli, platform kararı olarak korunmalıdır.
Shared platform services
Mesajlaşma ve bildirim katmanı, adres ve konum yapısı ve bazı ortak sözlük tabloları çekirdek kadar sert değildir; ancak farklı ürünlerin ortak kullanabileceği servis alanlarıdır. Bu nedenle bunlar çekirdekten ayrı düşünülmeli, ama ürünlere özel geçici detay muamelesi de görmemelidir.
Product extension domains
Tarım, saha, arazi ve sulama bağlamı taşıyan tablolar ile bazı ölçüm uzantıları ürün kimliğine daha yakındır. Bunlar platform tarafından taşınabilir; fakat platformun temel tanımı bu alanlarla yapılmamalıdır. Qapu bu tür product extension alanlarını desteklemeli, ancak çekirdeğin sınırlarını bu alanlara göre yeniden şekillendirmemelidir.
Application surface domains
Finans, notlar ve kullanıcıya dönük bazı uygulama katmanları veri modelinin üst yüzünde yer alır. Bunlar platformla aynı veritabanında yaşasa bile çekirdek veri motoruyla aynı sınıfta düşünülmemelidir. Bu ayrım, ileride hangi alanın bağımsız servis veya modül haline gelebileceğini de daha erken görünür kılar.
Bir tablo ailesi yeni eklenirken ilk soru şu olmalıdır: bu alan gerçekten Qapu çekirdeği mi, yoksa paylaşılan servis, ürün uzantısı ya da uygulama yüzü mü? Bu soru sorulmadan yapılan her ekleme, zamanla platformun sınırlarını belirsizleştirir.
Tablo detayları
Veri modelinin kolon, ilişki ve tablo bazlı detayları ayrı sayfalarda tutulur. Bu tercih, büyüyen veritabanı anlatısını tek bir dev dökümanda boğmak yerine domain aileleri halinde düzenli tutmak için yapılmıştır.
Tablolar DetaylariMaster ERD (Tek Kaynak)Migration Playbook (Deterministik Sira)E2E Test Datasi (Ingest -> Rule -> Aksiyon)
Tablo aileleri
Asagidaki sira, tables/*/index.mdx dosyalarindaki sidebar_position degerlerinden gelir:
| Sira | Dizin | Baslik |
|---|---|---|
| 1 | tables/kullanici-ve-yetki | Kullanici ve Yetki Tablolari |
| 2 | tables/mesajlasma-ve-bildirim | Mesajlasma ve Bildirim Tablolari |
| 3 | tables/adres-ve-konum | Adres ve Konum Tablolari |
| 4 | tables/sozluk | Sozluk Tablolari |
| 5 | tables/altyapi | Altyapi Tablolari |
| 6 | tables/cihaz-ve-detay | Cihaz ve Detay Tablolari |
| 7 | tables/log | Log Tablolari |
| 8 | tables/iot-altyapi | IoT Altyapi Tablolari |
| 9 | tables/iot-iletisim | IoT Iletisim Tablolari |
| 10 | tables/telemetri-ve-olcum | Telemetri ve Olcum Tablolari |
| 11 | tables/kural-ve-aksiyon | Kural ve Aksiyon Tablolari |
| 12 | tables/finans-uygulamasi | Finans Uygulamasi Tablolari |
| 13 | tables/not-uygulamasi | Not Uygulamasi Tablolari |
Tum detayli tablo listesi: Tablolar Detaylari
Alt dizin başlık haritası
Aşağıdaki yapı, tablo ailelerinin yalnız klasör olarak değil, sorumluluk alanı olarak nasıl ayrıldığını gösterir. Bu bölümün amacı her alt dizini tek tek yeniden yazmak değil; hangi başlığın hangi problem alanını tuttuğunu görünür kılmaktır.
1. Kullanici ve Yetki
Dokuman odagi:
- kullanici/rol/yetki modeli
- authority ve izin katmanlamasi
Belgede yer alan ana bolumler:
Kullanici Durum AkislariTablolar
Sayfa: Kullanici ve Yetki
2. Mesajlasma ve Bildirim
Dokuman odagi:
- inbox, read-state ve push akislarinin davranissal modeli
- notes alaninin ayri katman oldugu ayrimi
Belgede yer alan ana bolumler:
Katmanin AmaciGenel AkisKatmandaki Temel Tasarim KararlariSonucTablolar
Sayfa: Mesajlasma ve Bildirim
3. Adres ve Konum
Dokuman odagi:
- adres hiyerarsisi ve koordinat modeli
Belgede yer alan ana bolumler:
Tablolar
Sayfa: Adres ve Konum
4. Sozluk
Dokuman odagi:
- sistem genelinde kullanilan ortak referans sozlukleri
Belgede yer alan ana bolumler:
Tablolar
Sayfa: Sozluk
5. Altyapi
Dokuman odagi:
- saha topolojisi, parsel ve pompa/pano iliskileri
Belgede yer alan ana bolumler:
Tablolar
Sayfa: Altyapi
6. Cihaz ve Detay
Dokuman odagi:
- cihaz envanteri, grup modeli, proje ve firmware baglami
Belgede yer alan ana bolumler:
Tablolar
Sayfa: Cihaz ve Detay
7. Log
Dokuman odagi:
- servis ve seviye baglaminda operasyonel loglama
Belgede yer alan ana bolumler:
Tablolar
Sayfa: Log
8. IoT Altyapi
Dokuman odagi:
- SIM/modem envanteri, atama ve baglanti durum takibi
Belgede yer alan ana bolumler:
Tablolar
Sayfa: IoT Altyapi
9. IoT Iletisim
Dokuman odagi:
- cihaz komutu, otomasyon ve calistirma gecmisi
Belgede yer alan ana bolumler:
Tablolar
Sayfa: IoT Iletisim
10. Telemetri ve Olcum
Dokuman odagi:
- ingest zinciri, duplicate kontrolu, transaction boundary, failure davranisi ve sentez kurallarinin telemetri kapsaminda uygulanmasi
Belgede yer alan ana bolumler:
Genel AkisDuplicate Identity SpesifikasyonuTransaction BoundaryFailure MatrixSonucTablolar
Sayfa: Telemetri ve Olcum
11. Kural ve Aksiyon
Dokuman odagi:
- alarm kural tanimi, cihaz atamasi, state, event ve reaksiyon aksiyon modeli
Belgede yer alan ana bolumler:
Tablo Iliski OzetiGenel Kural AkisiTablolar
Sayfa: Kural ve Aksiyon
12. Finans Uygulamasi
Dokuman odagi:
- finans hareketleri ve detay baglami
Belgede yer alan ana bolumler:
Tablolar
Sayfa: Finans Uygulamasi
13. Not Uygulamasi
Dokuman odagi:
- not kayitlari ve not yasam dongusu
Belgede yer alan ana bolumler:
Tablolar
Sayfa: Not Uygulamasi
Katmanlar arası özet akış
Bu sayfa neyi özetler?
Bu sayfa dört şeyi aynı anda toplar: dizin yapısını ve sidebar sırasını, her alt klasörün konu sınırını, alt dokümanlardaki ana başlık haritasını ve domainler arası yüksek seviye veri akışını. Böylece okuyucu, tablo kolon detayına geçmeden önce büyük resmi görür.
Bu sayfa bilinçli olarak tablo kolon detayına girmez. Kolon, index, ilişki nüansı ve örnek kayıt detayları ilgili alt dizin dokümanlarında yaşar. Buradaki amaç, detayları tek sayfaya yığmak değil; detayların nereye ait olduğunu ve sistem içindeki yerini net göstermektir.
Master ERD
Tum tablo iliskilerini tek referans noktada gormek icin:
Migration Sirasi ve Ortam Tutarliligi
Migrationlarin deterministik sirada calismasi ve tum ortamlarda birebir ayni sonucu vermesi icin:
Uctan Uca Test Data Seti
Ingestten rule ve aksiyona kadar tek senaryoda dogrulama icin:
Not: Bu sayfa mevcut tablo dokumanlarini birlestirmez veya yerine gecmez; yalnizca iliski haritasini merkezilesir.