Uygulamanız için AWS RDS PostgreSQL, MySQL veya Supabase gibi pahalı yönetilen bulut veritabanları yerine tek bir VDS üzerinde SQLite WAL modu ve Litestream S3 sürekli akış replikasyonu kullanarak maliyet ve sorgu gecikmesi avantajını hesaplayın.
AWS RDS veya Supabase üzerinde aynı yük için ayrılan tahmini aylık fatura.
Cloudflare R2, $0 çıkış (egress) ücreti ve ucuz PUT maliyetleriyle Litestream için önerilir.
| Mimari / Model | Veritabanı Altyapısı | Yedekleme & DR | Aylık Toplam | Gecikme | Durum |
|---|---|---|---|---|---|
| SQLite + Litestream (Önerilen) | VDS üzerinde dahili NVMe | Cloudflare R2 ($0.94) | $6.94/ay | < 0.05 ms (In-Memory/NVMe) | En Yüksek Tasarruf |
| Supabase Pro (Micro) | Yönetilen Bulut (TCP Ağı) | Dahili Snapshot | $25.00/ay | 1.5 - 4.0 ms (VPC Ağı) | $18.06 Daha Pahalı |
| Geleneksel Self-Hosted PostgreSQL VDS | Ayrı DB VDS (2 vCPU / 4GB RAM) | pgBackRest / Günlük pg_dump | $18.00/ay | 0.5 - 1.5 ms (Yerel soket / LAN) | Bakım Ek Yükü Yüksek |
/etc/litestream.yml)# /etc/litestream.yml - Production SQLite Streaming Replication
dbs:
- path: /var/lib/app/production.sqlite
replicas:
- url: r2://my-app-backups/prod.db
sync-interval: 1s
retention: 72h
snapshot-interval: 24h
validation-interval: 12h
endpoint: https://<account_id>.r2.cloudflarestorage.com
force-path-style: true-- SQLite Production Performance PRAGMAs (Apply on DB open) PRAGMA journal_mode = WAL; -- Write-Ahead Logging for concurrent readers & Litestream PRAGMA synchronous = NORMAL; -- Durability with 5x write throughput boost PRAGMA busy_timeout = 5000; -- Wait up to 5000ms before returning SQLITE_BUSY PRAGMA cache_size = -64000; -- 64 MB in-memory page cache (negative = KiB) PRAGMA foreign_keys = ON; -- Foreign key constraint enforcement PRAGMA mmap_size = 268435456; -- 256 MB memory-mapped I/O for zero-copy queries PRAGMA temp_store = MEMORY; -- Keep temporary tables & indexes in RAM
Geleneksel web mimarisinde her uygulama için ayrı bir veritabanı sunucusu (PostgreSQL, MySQL vb.) kurmak veya aylık onlarca dolar ödeyerek AWS RDS / Supabase kiralamak standart bir pratik olarak kabul edilirdi. Ancak NVMe SSD hızlarının milyonlarca IOPS seviyesine ulaşması ve Litestream gibi sürekli akış araçlarının geliştirilmesiyle, orta ölçekli SaaS uygulamaları için SQLite inanılmaz derecede güçlü, ucuz ve hızlı bir alternatife dönüştü.
Uzak bir veritabanına bağlanırken her SQL sorgusu TCP el sıkışması ve ağ gecikmesine (VPC içinde 1 - 3 ms, farklı veri merkezlerinde 15 - 40 ms) maruz kalır. SQLite ise doğrudan uygulamanın bellek alanında (in-process) çalışır; sorgular mikrosaniyeler mertebesinde (< 50 µs) yanıt verir.
SQLite'ın en büyük çekincesi sunucu çökmesi durumunda tek bir dosyaya bağımlı olmaktı. Litestream, arka planda çalışan hafif bir Go sürecidir. SQLite'ın WAL (Write-Ahead Log) çerçevelerini doğrudan yakalar ve her 1 saniyede bir Cloudflare R2 veya AWS S3'e şifreli olarak yükler. Sunucu tamamen yok olsa bile veri kaybı azami 1 saniyedir.
Varsayılan modda SQLite dosya kilitleri nedeniyle okuma/yazma çakışmaları yaşayabilir. Ancak PRAGMA journal_mode = WAL;ve PRAGMA busy_timeout = 5000; ile okuyucular hiçbir zaman yazıcıları engellemez. Tek bir yazar saniyede on binlerce işlemi NVMe hızında sorunsuz tamamlayabilir.
Eğer uygulamanız çok bölgeli (multi-region active-active) eşzamanlı yazma gerektiriyorsa veya saniyede yüz binlerce dağıtık yazma işlemi yapılıyorsa (örneğin devasa e-ticaret sepet sistemleri), PostgreSQL veya Spanner gibi dağıtık veritabanları zorunludur. Ancak read-heavy içerik siteleri, SaaS panelleri, bloglar ve mikroservisler için SQLite + Litestream en verimli çözümdür.