Pendekatan baru untuk replikasi edge
- Sinkronisasi data adalah masalah yang lebih sulit daripada yang terlihat. Solusi yang ada umumnya terbagi antara menyinkronkan seluruh dataset ke klien atau melacak perubahan logis.
- Graft dirancang untuk mengatasi masalah ini, dan merupakan mesin penyimpanan open source yang menggabungkan replikasi fisik sederhana dengan replikasi logis yang efisien.
Sinkronisasi malas: sinkronkan dengan kecepatan yang Anda inginkan
- Graft memungkinkan klien memilih kapan akan melakukan sinkronisasi, sehingga cocok untuk lingkungan edge yang hanya terhubung ke jaringan secara berkala.
- Server menyediakan indeks halaman yang berubah sejak snapshot terakhir klien, dan klien dapat secara selektif mengambil hanya data yang dibutuhkan.
Sinkronisasi parsial: sinkronkan hanya yang dibutuhkan
- Di lingkungan edge, seluruh dataset tidak dapat diunduh, sehingga Graft mendukung sinkronisasi parsial yang secara selektif mengambil hanya halaman yang diperlukan.
- Graft dapat mengambil lebih dulu halaman yang dibutuhkan dengan memanfaatkan algoritma prediksi umum dan pengetahuan domain.
Edge: sinkronisasi lebih dekat ke tempat yang dibutuhkan
- Graft menyajikan data melalui server edge di seluruh dunia, sehingga tetap menjaga latensi rendah dan responsivitas tinggi di mana pun pengguna berada.
- Klien dirancang ringan sehingga dapat dengan mudah diintegrasikan ke browser, aplikasi mobile, dan lingkungan serverless.
Konsistensi: sinkronisasi yang aman
- Graft menyediakan model konsistensi yang kuat untuk menangani konflik antar-klien dengan aman.
- Melalui model snapshot isolation, klien dapat memperoleh tampilan data yang konsisten, dan penulisan diserialkan secara ketat.
Apa yang bisa dibuat dengan Graft?
- Graft menyediakan fondasi yang kuat untuk berbagai aplikasi edge-native.
- Ini memungkinkan aplikasi offline-first, data lintas platform, read replica stateless, dan replikasi data arbitrer.
Ekstensi SQLite Graft (libgraft)
- libgraft adalah ekstensi native SQLite yang memungkinkan klien mereplikasi hanya sebagian database yang benar-benar digunakan, sehingga SQLite dapat berjalan bahkan di lingkungan dengan sumber daya terbatas.
- Fitur yang disediakan mencakup replikasi asinkron, replikasi parsial malas, snapshot isolation, dan point-in-time restore.
Cara berpartisipasi
- Graft dikembangkan di GitHub, dan kontribusi dari komunitas sangat disambut.
- Anda dapat bergabung ke Discord atau memberikan masukan melalui email.
- Anda juga dapat mendaftar ke daftar tunggu untuk layanan terkelola Graft.
Roadmap
- Graft masih dalam pengembangan, dengan rencana seperti dukungan WebAssembly, integrasi dengan SQLSync, dan dukungan untuk berbagai pustaka klien.
- Fitur seperti pengurangan latensi tulis, garbage collection, autentikasi dan otorisasi, volume forking, serta penanganan konflik juga akan ditambahkan.
Perbandingan dengan solusi replikasi SQLite lainnya
- Graft memiliki keunggulan unik dibandingkan mvSQLite, Litestream, cr-sqlite, Cloudflare Durable Objects, Cloudflare D1, Turso & libSQL, rqlite & dqlite, dan Verneuil.
- Replikasi parsial, dukungan untuk struktur data arbitrer, dan replikasi efisien di edge adalah pembeda utamanya.
1 komentar
Opini Hacker News
Tidak memahami model konsistensinya
Penulis Graft menyampaikan ucapan terima kasih
Memahami bahwa model konsistensinya mirip dengan git
Saat klien mengambil Graft, perubahan yang terjadi bisa diketahui dengan tepat
Tidak membahas detail implementasi
Menganggap penggunaan VFS sebagai "hack" yang menarik
Proyek yang menggunakan algoritma Leap sangat menarik
Masalah bisa muncul saat klien mobile berada di koneksi lambat
Pendekatan yang memakai page sebagai unit sinkronisasi dasar cukup menarik
Ini adalah masalah yang sangat menantang