28 poin oleh GN⁺ 2024-08-23 | 2 komentar | Bagikan ke WhatsApp
  • 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

 
stargt 2024-08-23

Ini benar-benar proyek yang sangat menjanjikan, sejalan dengan Supabase.

 
GN⁺ 2024-08-23
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 transact dan useQuery tidak jelas. Detail kecil itu penting

  • Apakah 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

    • Datomic
    • XTDB
    • Datascript
    • Datalevin
    • datahike
    • Naga
  • 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