- Sebuah DB sisi klien yang memudahkan pembangunan aplikasi kolaborasi real-time seperti Notion atau Figma
- Tulis kueri relasional, lalu Instant menangani pengambilan data, pemeriksaan izin, dan caching offline
- Saat data berubah, pembaruan optimistis dan rollback juga ditangani secara otomatis
- Semua kueri mendukung mode multipemain secara bawaan
- Juga mendukung pembaruan sementara seperti kursor atau status online
- Saat ini menyediakan SDK untuk Javascript, React, dan React Native
Latar belakang pengembangan
- Pengembangan aplikasi modern membutuhkan banyak pekerjaan seperti menyiapkan server, database, cache, ORM, dan endpoint
- Juga perlu menulis kode sisi klien, manajemen state, dan rendering UI
- Saat menambahkan fitur multipemain, perlu memikirkan server stateful, dan saat mendukung mode offline, perlu mempertimbangkan IndexedDB dan antrean transaksi
- Setiap kali menambahkan fitur baru, model, endpoint, manajemen state, dan UI harus ditulis berulang-ulang
- Pada 2021, disadari bahwa sebagian besar masalah yang dihadapi engineer UI sebenarnya adalah masalah database
- Jika ada database sisi klien, cukup menulis kueri tanpa perlu memikirkan manajemen state, endpoint, atau cache lokal
- Jika kueri mendukung multipemain secara bawaan, tidak perlu khawatir tentang server stateful
- Jika database mendukung rollback, pembaruan optimistis bisa didapatkan secara gratis
- Karena itu Instant dikembangkan. Instant menyediakan database yang dapat digunakan di klien sehingga Anda bisa fokus membangun UX
Ringkasan arsitektur
- Instant menyimpan semua data pengguna dalam satu database Postgres besar dalam bentuk triple
- Menyediakan tier gratis dengan pengaturan multi-tenant
- Server sinkronisasi yang ditulis dengan Clojure berkomunikasi dengan Postgres
- Mereka menulis mesin kueri yang memahami InstaQL, yang mirip dengan Datalog dan GraphQL
- Terinspirasi dari WorldStore milik Asana dan LiveGraph milik Figma, Instant melacak WAL Postgres untuk mendeteksi data baru dan meng-invalidasi kueri terkait
- Di frontend, mereka menulis triple store sisi klien
- SDK menyimpan cache kueri terbaru di IndexedDB untuk web dan AsyncStorage untuk React Native
- Semua data diproses melalui sistem izin yang didukung oleh library CEL milik Google
Ringkasan GN⁺
- Instant adalah database sisi klien yang memudahkan pembangunan aplikasi kolaborasi real-time
- Melalui kueri relasional, Instant secara otomatis menangani pengambilan data, pemeriksaan izin, dan caching offline
- Mendukung fitur multipemain, pembaruan optimistis, dan rollback secara bawaan
- Terinspirasi oleh Asana dan Figma, Instant melacak WAL Postgres untuk mendeteksi data baru dan meng-invalidasi kueri terkait
- Mengelola data secara efisien melalui triple store sisi klien dan sistem izin
2 komentar
Ini benar-benar proyek yang sangat menjanjikan, sejalan dengan Supabase.
Opini Hacker News
Pendiri Firebase: Antusias dengan kombinasi offline, realtime, query relasional, dan open source dari Instant. Banyak permintaan untuk query relasional. Klien Firebase bersifat open source, tetapi backend-nya gagal dijadikan open source
Masukan: Contoh kode tidak lengkap. Asal
transactdanuseQuerytidak jelas. Detail kecil itu pentingApakah bisa self-hosting: Sering kali sebagian alat tidak bisa di-self-host. Hal ini perlu diperjelas
Alternatif model offline-first: Memilih PowerSync. WatermelonDB juga cukup baik. ElectricSQL masih belum matang. CouchDB dan PocketDB tidak modern. Berencana menggunakan PowerSync dan Supabase sebagai backend
Hubungan dengan aplikasi CRUD: Sulit memahami hubungan antara aplikasi CRUD dan konsep InstantDB atau Firebase. Untuk editor teks kolaboratif akan menggunakan implementasi CRDT Javascript
Pengalaman menggunakan Instant: Sudah menggunakan Instant selama 6 bulan dan puas. Fitur realtime, relasional, dan offline sangat penting. Sudah mencoba alat lain tetapi gagal. Sejak memakai Instant, tidak lagi menggunakan alat lain
Ringkasan sistem izin: Firebase memisahkan logika pencarian/pembaruan data dan kebijakan akses. Instant mengevaluasi logika izin berdasarkan hasil query. Firebase memeriksa keamanan sebelum query dijalankan
Apakah engine Datalog diekspos: Ada engine Datalog lain yang mendukung query rekursif. Menanyakan apakah query bisa di-cache dan di-join. Dulu ada Java InstantDB dengan nama yang sama. Memberikan daftar engine Datalog lain yang diimplementasikan dengan Clojure
Menginginkan pengalaman seperti ActiveRecord: Ingin bekerja di React/Vue/Solid dengan cara seperti ActiveRecord. Menginginkan API seperti object graph. Tidak menginginkan API seperti SQL. Ingin ORM bekerja seolah memiliki seluruh object graph di memori
Masalah performa triple store: Triple store biasanya tidak bagus ketika sebagian besar query mengambil seluruh objek atau banyak field dari objek yang sama. Postgres juga tidak terlalu unggul. Menanyakan pengalaman terkait hal ini