Edge replikasyonu için yeni bir yaklaşım
- Veri senkronizasyonu düşünüldüğünden daha zor bir problem. Mevcut çözümler ya tüm veri kümesini istemciye senkronize ediyor ya da mantıksal değişiklikleri izleme yaklaşımını benimsiyor.
- Graft, bu sorunları çözmek için tasarlandı ve basit fiziksel replikasyonu verimli mantıksal replikasyonla birleştiren açık kaynaklı bir depolama motoru.
Tembel senkronizasyon: Kendi hızınızda senkronize olun
- Graft, istemcinin ne zaman senkronize olacağını seçmesine izin vererek ağa aralıklı olarak bağlanan edge ortamları için uygun hale geliyor.
- Sunucu, istemcinin son snapshot'ından sonra değişen sayfaların dizinini sunuyor; istemci de yalnızca ihtiyaç duyduğu verileri seçerek alabiliyor.
Kısmi senkronizasyon: Yalnızca gerekeni senkronize edin
- Edge ortamlarında tüm veri kümesini indirmek mümkün olmadığından, Graft yalnızca gerekli sayfaları seçerek alan kısmi senkronizasyonu destekliyor.
- Graft, yaygın tahmin algoritmalarını ve alan bilgisini kullanarak ihtiyaç duyulan sayfaları önceden getirebiliyor.
Edge: İhtiyaç duyulan yere yakın senkronizasyon
- Graft, verileri dünya genelindeki edge sunucuları üzerinden sunarak kullanıcı nerede olursa olsun düşük gecikme ve yüksek yanıt verebilirlik sağlıyor.
- İstemci hafif olacak şekilde tasarlandığı için tarayıcıya, mobil uygulamalara ve sunucusuz ortamlara kolayca entegre edilebiliyor.
Tutarlılık: Güvenli senkronizasyon
- Graft, güçlü bir tutarlılık modeli sunarak istemciler arasındaki çakışmaları güvenli biçimde ele alıyor.
- İstemciler, snapshot isolation modeli sayesinde verinin tutarlı bir görünümünü elde edebiliyor ve yazmalar sıkı biçimde serileştiriliyor.
Graft ile neler yapılabilir?
- Graft, çeşitli edge-native uygulamalar için güçlü bir temel sunuyor.
- Offline-first uygulamalar, platformlar arası veri, durumsuz okuma replikaları ve rastgele veri replikasyonu mümkün.
Graft SQLite uzantısı (libgraft)
- libgraft, SQLite için yerel bir uzantı; istemcinin gerçekten kullandığı veritabanı kısmını çoğaltarak kaynakların kısıtlı olduğu ortamlarda da SQLite çalıştırmayı mümkün kılıyor.
- Asenkron replikasyon, tembel kısmi replikasyon, snapshot isolation ve point-in-time restore gibi özellikler sunuyor.
Nasıl katkı sağlanır?
- Graft, GitHub üzerinde geliştiriliyor ve topluluk katkılarını memnuniyetle karşılıyor.
- Discord'a katılabilir veya e-posta ile geri bildirim gönderebilirsiniz.
- Graft yönetilen hizmeti için bekleme listesine kaydolabilirsiniz.
Yol haritası
- Graft hâlâ geliştirme aşamasında; WebAssembly desteği, SQLSync ile entegrasyon ve çeşitli istemci kütüphaneleri için destek gibi planlar bulunuyor.
- Yazma gecikmesini azaltma, garbage collection, kimlik doğrulama ve yetkilendirme, volume forking ve çakışma işleme gibi özelliklerin de eklenmesi planlanıyor.
Diğer SQLite replikasyon çözümleriyle karşılaştırma
- Graft; mvSQLite, Litestream, cr-sqlite, Cloudflare Durable Objects, Cloudflare D1, Turso & libSQL, rqlite & dqlite ve Verneuil ile karşılaştırıldığında kendine özgü avantajlar sunuyor.
- Kısmi replikasyon, rastgele veri yapısı desteği ve edge üzerinde verimli replikasyon başlıca fark yaratan yönleri.
1 yorum
Hacker News yorumu
Tutarlılık modeli anlaşılmıyor
Graft'ın yazarı teşekkürlerini iletiyor
Tutarlılık modelinin git'e benzer olduğu düşünülüyor
İstemci Graft'ı çektiğinde hangi içeriklerin değiştiğini tam olarak bilebiliyor
Uygulama ayrıntılarından bahsedilmiyor
VFS kullanmanın eğlenceli bir "hack" olduğu düşünülüyor
Leap algoritmasını kullanan proje oldukça ilgi çekici
Mobil istemci yavaş bir bağlantıdayken sorunlar çıkabilir
Sayfayı varsayılan senkronizasyon birimi olarak kullanan yaklaşım ilgi çekici
Oldukça zorlayıcı bir problem