Veritabanı (CouchDB / SQLite / SQL Server)¶
DiKAS üç veritabanı sağlayıcısını destekler. Sağlayıcı, appsettings.json
(Database.Provider) içinde veya ortam değişkenleri aracılığıyla yapılandırılır — kod aynıdır,
tüm işlevler her sağlayıcıyla kullanılabilir.
| Sağlayıcı | Kullanım |
|---|---|
| CouchDb (Standart) | Sunucu/Cloud işletimi, çok kiracılı, çoğaltma |
| Sqlite | Tek kullanıcı, Android uygulaması, demo/geliştirme |
| SqlServer | Mevcut Microsoft altyapısı |
Yapılandırma¶
{
"Database": { "Provider": "CouchDb" },
"CouchDb": {
"ServerUrl": "http://localhost:5984",
"DatabasePrefix": "dikas",
"MainDatabase": "main"
}
}
Ortam değişkenleri dosyayı geçersiz kılar — Docker ve testler için pratiktir:
| Değişken | Anlamı |
|---|---|
Database__Provider |
CouchDb, Sqlite veya SqlServer |
COUCHDB_URL |
Sunucu URL'si, örn. http://192.168.1.10:5984 |
COUCHDB_USER / COUCHDB_PASSWORD |
Erişim bilgileri |
COUCHDB_PREFIX |
Veritabanı öneki (kurulum/kiracı başına benzersiz) |
İlk başlatmada DiKAS, veritabanlarını ({prefix}_maindb, {prefix}_gastrocurrent),
tüm Views'leri içeren tasarım belgesini ve — boş veritabanında — demo verilerini
otomatik olarak oluşturur.
Demo verileri ve geçmiş¶
- Auto-Seed: Boş bir veritabanı (SQLite veya CouchDB), başlatmada demo ana verileriyle doldurulur (ürünler, personel, masalar, müşteriler).
- Geçmiş oluşturma (testler/değerlendirmeler için):
belirtilen gün sayısı için gerçekçi belgeler, vardiyalar ve gün sonu raporları oluşturur (toplu yazma hızı ≈ 760 belge/sn). Belge/vardiya/rapor numaraları ilerletilir, devam eden işletme sorunsuzca bağlanır.
Performans (CouchDB)¶
2 yıllık geçmişle (34.500 belge) yük testinden çıkan en önemli ayar parametreleri:
- Full-Scan yerine tarih aralığı: Tüm raporlar ve operasyonel sorgular belgeleri
bybizdate_docsView'i (iş günü aralığı) üzerinden yükler. Kısa dönemler böylece veritabanı boyutundan bağımsız olarak hızlıdır. - Önceden yoğunlaştırılmış günlük cirolar: Map/Reduce View
revenue_daily, brüt/vergi/belge sayısını gün başına doğrudan CouchDB'de toplar.GET /api/v1/reports/daily-aggregate?startDate=…&endDate=…uç noktası, 2 yıllık günlük ciroları ~0,1 sn içinde sunar — panolar için ideal. - Slow-Query-Log: 1 sn'nin üzerindeki View erişimleri günlükte uyarı olarak görünür (View, satır sayısı, süre, URL) ve pahalı sorguları anında gösterir.
- Bakım: Büyük veri aktarımlarından sonra
_compactve_view_cleanupplanlayın — belge View'leri belgelerin bir kopyasını dizinde tutar (hıza karşı bellek).
Cloud senkronizasyonu¶
Yerel kurulumlar, merkezi Cloud CouchDB ile senkronize olabilir. Bağlantı,
sunucu başlatmada lisanstan (systemlic) otomatik olarak çözümlenir:
Kullanıcı = SyncLink (küçük harf), Şifre = SyncLink, Uzak veritabanı =
{DatabaseName}_{db}. appsettings.json içinde elle doldurulmuş bir Sync bölümü
lisansı geçersiz kılar. Yönetim ve durum: Yönetici → Ayarlar → Sistem →
Cloud-Sync (Destek girişi).
| Mod | Mekanizma |
|---|---|
| CouchDb (yerel) | Yerel CouchDB çoğaltması: {prefix}_maindb ve {prefix}_gastrocurrent için _replicator içinde sürekli Push+Pull kayıtları (ID deseni {prefix}_{db}_push / _pull) |
| Sqlite / SqlServer | Kendi Sync servisi: Seçilen belge türlerinin aralıklarla Push/Pull işlemi (çakışmalar: Last-Write-Wins) |
| Cloud çok kiracılı | Senkronizasyon yok — cihazlar doğrudan merkezi veritabanı üzerinde çalışır |
Yerel çoğaltma kurulurken, aynı veritabanlarına işaret eden ancak artık güncel
yapılandırmaya uymayan eski _replicator kayıtları kaldırılır (örn. SyncLink
veya veritabanı adı değişikliğinden sonra). Lisansta SyncLink eksikse, kendi
kayıtları silinir — çoğaltma o zaman devre dışıdır. İş durumu (_scheduler/docs),
Cloud-Sync sayfasında gösterilir; bağlantı hatalarında sunucu kurulumu her
5 dakikada bir yeniden dener.
SQLite ipuçları¶
- Veritabanı dosyası:
Dikas.Api.Web/dikas.db(içerik kökünde, çalışma dizininden bağımsız). - Şema geçişleri başlatmada otomatik olarak çalışır (EF Core).
- CouchDB'ye taşınmak için: Yedekleme oluşturun ve bir CouchDB kurulumuna geri yükleyin (bkz. Yedekleme ve Geri Yükleme).