Anlamsal Mimari
Bu sayfa, IronFlock’un veri modelini açıklar: temel varlıklar ve bunların birbirleriyle ilişkileri. Mimari Genel Bakış sistemin fiziksel katmanlarını (kenar, bulut, mesaj aracısı) ele alırken, bu sayfa mantıksal yapıya — projeler, cihazlar, uygulamalar ve veriler arasındaki ilişkilere — odaklanır.
Varlık Genel Bakışı
Account
├─ App
│ └─ Release
└─ Project
├─ Device ──────────┐
│ └─ App Edge Component
├─ Group ───────────┘
├─ Release Installation
├─ Fleet Database
│ └─ Data Tables
├─ Dashboard
└─ AlarmTemel Varlıklar
Hesap
Bir hesap, en üst düzey kimliktir — IronFlock’a giriş yapan bir kişi veya kuruluş. Bir hesap projelere ve uygulamalara sahiptir. Uygulamalar ve projeler, bir hesabın doğrudan alt öğeleridir ancak birbirinden bağımsız olarak var olurlar.
Uygulama
Bir uygulama, dağıtılabilir bir yazılım paketidir. Uygulamalar bir hesaba aittir, bir projeye değil — tek bir uygulama birçok farklı projeye kurulabilir. Bir uygulama kendi başına hiçbir yerde çalışmaz; sürümleri cihazlara kurulabilen bir katalog girişi olarak işlev görür.
Sürüm
Bir sürüm, bir uygulamanın değişmez, sürümlü bir derlemesidir. Yalnızca READY durumundaki sürümler cihazlara kurulabilir. Sürümler değişmezdir — bir uygulamanın davranışını değiştirmek için yeni bir sürüm yayınlanır.
Proje
Bir proje, birincil izolasyon sınırıdır. Bir proje içindeki her şey — cihazlar, gruplar, kurulumlar, veriler, gösterge panelleri, alarmlar — diğer projeler için görünmezdir. Her projenin mesaj aracısında kendi WAMP alanı, özel bir Filo Veritabanı ve kendi cihazlar, gruplar, kurulumlar, gösterge panelleri ve alarmlar kümesi vardır.
Cihaz
Bir cihaz, IronFlock ajanını çalıştıran fiziksel veya sanal bir Linux makinesidir. Her cihaz tam olarak bir projeye aittir. Bir cihaz, kurulu sürümlerin kenar bileşenlerini barındırır — donanım üzerinde yerel olarak çalışan konteynerler. Bir cihaz aynı anda birden fazla sürümden kenar bileşenleri barındırabilir ve birden fazla grubun üyesi olabilir.
Grup
Bir grup, toplu işlemler için kullanılan bir proje içindeki mantıksal cihaz koleksiyonudur. Bir cihaz birden fazla gruba ait olabilir (çoka-çok). Bir gruba sürüm kurulduğunda, her üye cihaz grubun yapılandırmasını devralabilen veya yerel olarak geçersiz kılabilen bir kurulum alır.
Sürüm Kurulumu
Bir sürüm kurulumu, belirli bir cihazda çalışan belirli bir sürümün örneğidir. Bir proje içinde bir cihaz ile bir sürüm arasındaki birleştirmedir. Bir grup aracılığıyla kurulduğunda, her cihazın kurulumu grubun yapılandırmasını devralabilir veya geçersiz kılabilir; bu sayede cihaz başına istisnalar ile filo genelinde varsayılanlar sağlanır.
Group Installation
├─ Device A → inherits from group
├─ Device B → inherits from group
└─ Device C → overrides with custom configurationFilo Veritabanı
Her projenin özel bir Filo Veritabanı vardır — zaman serisi verileri için TimescaleDB uzantısına sahip bir PostgreSQL veritabanı. Cihazlardaki kenar bileşenler WAMP aracılığıyla telemetri yayınlar, FleetDB hizmeti bunu projenin veritabanına yazar ve veriler gösterge panelleri, AI sorgu hizmeti ve harici araçlar tarafından sorgulanabilir.
Gösterge Paneli
Bir gösterge paneli, projenin Filo Veritabanındaki verileri görselleştirir. Gösterge panelleri bir projeye aittir ve birden fazla uygulama ve cihazdan gelen verileri tek bir görünümde birleştirebilir.
Alarm
Bir alarm, bir proje içindeki eşik tabanlı bir uyarı kuralıdır. Alarmlar, Filo Veritabanındaki verileri izler ve koşullar karşılandığında bildirimleri tetikler.
Varlık İlişki Diyagramı
┌──────────┐
│ Account │
└──┬───┬───┘
│ │
│ │ owns 1:N
│ ▼
│ ┌─────────────────────┐
│ │ App │
│ └────────┬────────────┘
│ │ contains 1:N
│ ▼
│ ┌─────────────────────┐
│ │ Release │
│ └─────────────────────┘
│ ▲
│ │ references
│ owns 1:N │
▼ │
┌──────────────────────────────────────────────────────────────────┐
│ Project │
│ │
│ ┌──────────┐ N:N ┌──────────┐ │
│ │ Device │◆──────────◆│ Group │ │
│ └────┬─────┘ └────┬─────┘ │
│ │ hosts │ installs on │
│ │ edge components │ member devices │
│ │ 1:N │ │
│ │ ▼ │
│ │ ┌──────────────┐ │
│ └──────────────►│ Release │ (inherits or │
│ │ Installation│ overrides group) │
│ └──────────────┘ │
│ │
│ ┌───────────────────────┐ │
│ │ Fleet Database │ │
│ │ (TimescaleDB) │ │
│ │ ┌─────┐ ┌─────┐ │ │
│ │ │Table│ │Table│ ... │ │
│ │ └─────┘ └─────┘ │ │
│ └───────────────────────┘ │
│ ▲ │
│ │ queried by │
│ ┌───────────┴───────────┐ │
│ │ Dashboard │ │
│ └───────────────────────┘ │
│ │
│ ┌───────────────────────┐ │
│ │ Alarm │ │
│ │ (monitors FleetDB) │ │
│ └───────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────┘İlişki Özeti
| İlişki | Tür | Açıklama |
|---|---|---|
| Hesap → Proje | 1:N | Bir hesap birden fazla projeye sahiptir |
| Hesap → Uygulama | 1:N | Bir hesap birden fazla uygulamaya sahiptir (projelerden bağımsız) |
| Uygulama → Sürüm | 1:N | Bir uygulama birden fazla sürümlü derleme içerir |
| Proje → Cihaz | 1:N | Her cihaz tam olarak bir projeye aittir |
| Proje → Grup | 1:N | Gruplar bir projeyle sınırlıdır |
| Cihaz ↔ Grup | N:N | Bir cihaz birden fazla grupta olabilir; bir grup birden fazla cihaz içerir |
| Proje → Filo Veritabanı | 1:1 | Her projenin kendi özel veritabanı vardır |
| Proje → Gösterge Paneli | 1:N | Gösterge panelleri bir projeye aittir ve Filo Veritabanını sorgular |
| Proje → Alarm | 1:N | Alarmlar bir projeyle sınırlıdır ve Filo Veritabanını izler |
| Cihaz → Sürüm Kurulumu | 1:N | Bir cihaz birden fazla sürüm kurulumundan kenar bileşenler barındırır |
| Sürüm Kurulumu → Sürüm | N:1 | Her kurulum belirli bir sürüm versiyonuna başvurur |