Mimari Felsefe: İlişkisel SQL vs Doküman-tabanlı NoSQL
Drift, SQLite'ı doğrudan kullanan ilişkisel bir katmandır — verini tablolar, satırlar ve foreign key'lerle modellersin, sorguları hem SQL hem Dart fluent API ile yazabilirsin, ikisi de derleme-zamanında doğrulanır. Bu, join gerektiren karmaşık veri ilişkilerinde (örn. bir kullanıcının siparişleri ve o siparişlerin kalemleri) ciddi bir avantaj sağlar: SQL'in 40+ yıllık ilişkisel cebiri elinin altındadır. Isar/isar_community ise doküman-tabanlı NoSQL modelini benimser: @collection anotasyonlu bir Dart sınıfını doğrudan saklarsın, şema örtük olarak sınıfın kendisinden çıkarılır. Bu model, iç içe (nested) veya esnek şemalı veriler için daha az sürtünmeyle çalışır ama ilişkisel sorgulama (çoklu tablo join, window fonksiyonları) Drift kadar doğal değildir — Isar'da ilişkiler IsarLink/IsarLinks ile modellenir, bu da SQL foreign key kadar esnek değildir. Seçim burada gerçekten veri modeline bağlı: verin doğası gereği ilişkiselse (siparişler, kullanıcılar, kategoriler) Drift; bağımsız doküman koleksiyonlarıysa (notlar, önbellek kayıtları, offline cache) Isar daha az kod ister.
Bakım Durumu: "Isar" İki Ayrı Paket, Tek İsim
Bu karşılaştırmanın en kritik teknik bulgusu budur ve kurulum yapmadan önce mutlaka bilmen gerekir. pub.dev API'sine göre orijinal isar paketinin son sürümü 3.1.0+1, yayın tarihi 2023-04-25 — o tarihten beri hiç güncellenmemiş. GitHub'daki isar/isar deposunun son push tarihi 2025-06-14; 2026-09-24 okuması itibarıyla o tarihten sonra kod hareketi yok. Buna karşın Drift'in son sürümü 2.35.0, yayın tarihi 2026-09-09 ve GitHub'daki son commit 2026-09-24 tarihli — aktiflik farkı çarpıcı. Isar tarafında iyi haber şu: proje ölmedi, topluluk 2024-11-23'te isar-community GitHub organizasyonunu kurarak devraldı. isar_community paketinin son sürümü 3.3.2 (2026-03-23), GitHub'daki son commit 2026-09-08 tarihli — gerçek anlamda aktif. pub.dev indirme verileri de bu tabloyu doğruluyor: orijinal isar son 30 günde yalnızca 3.367 indirme almış, isar_community ise 102.411 — yaklaşık 30 kat fark. Pratik sonuç nettir: yeni bir Flutter projesine isar paketini pubspec.yaml'a eklemek hatalı bir başlangıç noktasıdır; doğru bağımlılık isar_community'dir.
Sorgulama, Tip Güvenliği ve Kod Üretimi
İkisi de kod üretimi (build_runner) kullanır ama farklı amaçlarla. Drift'te drift_dev, tablo tanımlarından (ya da elle yazılmış .sql dosyalarından) tip-güvenli Dart sınıfları ve sorgu metodları üretir; hem SQL hem Dart tarafı derleme-zamanında birbiriyle senkron kalır — yanlış kolon adı yazarsan derleme hatası alırsın. Isar/isar_community'de isar_community_generator (eski isar paketinde isar_generator), @collection anotasyonlu sınıflardan şema ve sorgu builder'ları (.filter(), .where()) üretir; sorgu API'si daha "fluent" ve az satırlıdır ama SQL'in ifade gücüne (subquery, aggregate, window fonksiyonu) sahip değildir. Reaktivite tarafında ikisi de benzer bir deneyim sunar: Drift'te .watch(), Isar'da .watch(fireImmediately: true) ile sorgu sonucu bir Stream'e dönüşür ve Flutter widget'ları bu akışı dinleyerek otomatik güncellenir. Pratikte SQL'e aşina bir ekip Drift'te daha az sürprizle ilerlerken, SQL'den kaçınmak isteyen ekipler Isar'ın API yüzeyini daha "doğal" bulur.
Paralellik: Çoklu-İzole Desteği
Isar/isar_community'nin mimari avantajlarından biri, varsayılan olarak çoklu-izole (multi-isolate) paralel sorgu desteği sunmasıdır — birden fazla Dart isolate'i aynı veritabanına eş zamanlı erişebilir, bu da ağır sorgu/yazma yükünü UI thread'inden uzak tutmayı kolaylaştırır. Drift'te izolat kullanımı da mümkündür: NativeDatabase.createInBackground bağlantıyı arka plan isolate'inde açar ve Drift'in pub.dev'deki README'si bu konuda iddialıdır — "Drift is the only major persistence library with builtin threading support, allowing you to run database code across isolates with zero additional effort." Resmi platform dokümantasyonu ise (drift.simonbinder.eu/platforms/) NativeDatabase satırında "No further setup is required. Usage in a isolate is recommended." der. Fark aslında "varsayılan mı, yoksa tek satırlık bir tercih mi" ekseninde: Isar'da çoklu-izole erişim modelin doğal hâliyken, Drift'te bağlantıyı açarken createInBackground yazmayı hatırlaman gerekir. O adımı atlarsan sorguların ana isolate'te koşar ve ağır batch işlemlerinde (toplu import, senkronizasyon) UI donabilir.
Platform Desteği ve Web/WASM
Drift'in platform matrisi geniştir: Android, iOS, Windows, Linux, macOS ve Web — pub.dev'de "wasm-ready" etiketiyle listelenir ve drift.simonbinder.eu/platforms/ sayfası her platform için ayrı bir executor (NativeDatabase, SqfliteQueryExecutor, web sürücüsü) tanımlar. Isar/isar_community tarafında tablo daha dardır ve burada iki ayrı kaynağı birbirine karıştırmamalısın. Birincisi paket etiketleri: isar_community'nin pub.dev platform etiketleri yalnızca Android, iOS, Windows, Linux ve macOS'u listeler — web bu listede yok. İkincisi resmi doküman: isar-community.dev/v3/ sayfasının özellik listesinde "📱 Multiplatform — iOS, Android, Mac, Windows and Linux" yazar, web'den hiç söz edilmez. platform:web etiketi bugün yalnızca terkedilmiş orijinal isar paketinde durmaya devam ediyor; yani o etikete bakarak web desteğini forka mal edemezsin. Pratik sonuç: web'i de hedefleyen bir cross-platform projede Drift sana hem etiket hem doküman düzeyinde net bir zemin sunar, isar_community ise böyle bir beyan vermez. Mobil-only bir uygulama için bu fark önemsizdir.
Lisans, Maliyet ve iOS Uyumluluk Riski
Maliyet tarafında fark yok: Drift MIT, Isar/isar_community Apache-2.0 lisanslı — ikisi de tamamen ücretsiz, açık kaynak, tek-tier modelde ve ayrı bir "pricing" sayfaları bulunmuyor; ikisi de GitHub Sponsors üzerinden gönüllü bağışla finanse ediliyor (Drift için sponsors/simolus3, Isar tarafında sponsors/leisim ve sponsors/vicenterusso). iOS/App Store tarafında ise bilmen gereken bir tarihçe var. Apple'ın privacy manifest şartı için isar/isar#1601 numaralı issue ("Add privacy manifest for Apple") 2024-04-24'te açıldı ve 2025-06-14'te kapatıldı. Bugün topluluk fork'unun isar_community_flutter_libs paketi iOS kaynaklarında bir PrivacyInfo.xcprivacy gönderiyor; bu dosya yalnızca NSPrivacyAccessedAPICategoryDiskSpace kategorisini E174.1 gerekçesiyle beyan ediyor, FileTimestamp veya SystemBootTime için bir beyan içermiyor. Terkedilmiş isar paketinde ise böyle bir dosya hiç yok: 3.1.0+1 sürümü 2023-04-25 tarihli, yani Apple'ın bu şartı yürürlüğe koymasından önceki bir noktada donmuş. iOS'a yayın yapacak bir ekip için pratik sonuç şu: Isar kullanacaksan zaten fork'u kullanmalısın, privacy manifest de bunun somut gerekçelerinden biri.