Ana içeriğe geç
v26.3

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):
dotnet run --project Dikas.Api.Web -- --seed-history 730

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_docs View'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 _compact ve _view_cleanup planlayı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).