28 पॉइंट द्वारा GN⁺ 2024-08-23 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • यह एक क्लाइंट-साइड DB है, जो Notion या Figma जैसे रियल-टाइम सहयोगी ऐप्स को आसानी से बनाने में मदद करता है
  • रिलेशनल क्वेरी लिखने पर Instant डेटा फ़ेचिंग, परमिशन जांच और ऑफलाइन कैशिंग को संभालता है
  • डेटा बदलने पर Optimistic updates और rollback भी अपने-आप संभाले जाते हैं
  • सभी क्वेरी डिफ़ॉल्ट रूप से multiplayer को सपोर्ट करती हैं
  • cursor या online status जैसे अस्थायी updates भी सपोर्ट किए जाते हैं
  • फिलहाल Javascript, React और React Native के लिए SDK उपलब्ध हैं

विकास की प्रेरणा

  • आधुनिक ऐप डेवलपमेंट में server setup, database, cache, ORM, endpoint configuration जैसी बहुत-सी चीज़ों की ज़रूरत होती है
  • क्लाइंट-साइड code लिखना, state management और UI painting भी ज़रूरी होता है
  • multiplayer feature जोड़ने पर stateful server के बारे में सोचना पड़ता है, और offline mode सपोर्ट करने पर IndexedDB और transaction queue पर भी विचार करना पड़ता है
  • हर नई feature जोड़ने पर model, endpoint, state management और UI बार-बार लिखना पड़ता है
  • 2021 में यह समझ आया कि UI engineers जिन ज़्यादातर समस्याओं का सामना करते हैं, वे वास्तव में database समस्याएँ हैं
  • अगर क्लाइंट-साइड database हो, तो state management, endpoints और local cache की चिंता किए बिना सिर्फ़ query लिखनी होगी
  • अगर query डिफ़ॉल्ट रूप से multiplayer को सपोर्ट करे, तो stateful server की चिंता नहीं करनी पड़ेगी
  • अगर database rollback को सपोर्ट करे, तो optimistic updates लगभग मुफ्त में मिल सकते हैं
  • इसी कारण Instant बनाया गया। Instant ऐसा database देता है जिसे client पर इस्तेमाल किया जा सकता है, ताकि UX बनाने पर ध्यान केंद्रित किया जा सके

आर्किटेक्चर का अवलोकन

  • Instant सभी user data को एक बड़े Postgres database में triple form में स्टोर करता है
  • यह multi-tenant setup के साथ free tier प्रदान करता है
  • Clojure में लिखा गया sync server Postgres के साथ संचार करता है
  • Datalog और GraphQL जैसे InstaQL को समझने वाला query engine बनाया गया है
  • Asana के WorldStore और Figma के LiveGraph से प्रेरित होकर, यह Postgres के WAL को ट्रैक करके नया data पहचानता है और संबंधित queries को invalidate करता है
  • frontend पर client-side triple store लिखा गया है
  • SDK web पर IndexedDB और React Native पर AsyncStorage में recent query cache स्टोर करता है
  • सारा data Google की CEL library से चलने वाले permission system के ज़रिए प्रोसेस होता है

GN⁺ का सारांश

  • Instant एक क्लाइंट-साइड database है, जो रियल-टाइम सहयोगी ऐप्स को आसानी से बनाने में मदद करता है
  • रिलेशनल queries के ज़रिए data fetching, permission checking और offline caching अपने-आप संभाली जाती है
  • multiplayer features, optimistic updates और rollback डिफ़ॉल्ट रूप से सपोर्ट किए जाते हैं
  • Asana और Figma से प्रेरित होकर, यह Postgres के WAL को ट्रैक करके नया data पहचानता है और संबंधित queries को invalidate करता है
  • client-side triple store और permission system के ज़रिए data management को कुशलतापूर्वक संभाला जाता है

2 टिप्पणियां

 
stargt 2024-08-23

Supabase जैसी ही दिशा में यह वाकई बहुत उम्मीद जगाने वाला प्रोजेक्ट लग रहा है

 
GN⁺ 2024-08-23
Hacker News राय
  • Firebase के संस्थापक: Instant के offline, real-time, relational query और open source के संयोजन को लेकर उत्साहित। relational query के लिए बहुत अनुरोध थे। Firebase client open source है, लेकिन backend को open source बनाने में सफलता नहीं मिली

  • फीडबैक: code example पूरी नहीं हैं। transact और useQuery कहाँ से आते हैं, यह स्पष्ट नहीं है। छोटे details महत्वपूर्ण होते हैं

  • self-hosting संभव है या नहीं: अक्सर tools के कुछ हिस्से self-host नहीं किए जा सकते। इसे स्पष्ट किया जाना चाहिए

  • offline-first model का विकल्प: PowerSync चुना। WatermelonDB भी ठीक है। ElectricSQL अभी अपरिपक्व है। CouchDB और PocketDB आधुनिक नहीं हैं। backend के रूप में PowerSync और Supabase का उपयोग करने की योजना है

  • CRUD ऐप्स के साथ संबंध: CRUD apps और InstantDB या Firebase की अवधारणा के बीच संबंध समझना कठिन है। collaborative text editor के लिए CRDT Javascript implementation का उपयोग करेंगे

  • Instant इस्तेमाल का अनुभव: 6 महीनों तक Instant का उपयोग किया और संतुष्ट रहे। real-time, relational और offline features महत्वपूर्ण थे। दूसरे tools आज़माए, लेकिन सफल नहीं हुए। Instant के बाद से कोई दूसरा tool इस्तेमाल नहीं किया

  • permission system का सार: Firebase data fetch/update logic और access policy को अलग करता है। Instant query result के आधार पर permission logic का मूल्यांकन करता है। Firebase query चलाने से पहले safety की पुष्टि करता है

  • Datalog engine को expose किया गया है या नहीं: recursive query support करने वाले दूसरे Datalog engines मौजूद हैं। query cache और composability के बारे में पूछा जा रहा है। पहले Java में भी InstantDB नाम था। Clojure में implement किए गए दूसरे Datalog engines की सूची दी गई है

    • Datomic
    • XTDB
    • Datascript
    • Datalevin
    • datahike
    • Naga
  • ActiveRecord जैसी experience चाहिए: React/Vue/Solid में ActiveRecord जैसे तरीके से काम करना चाहते हैं। object graph जैसी API चाहिए। SQL जैसी API नहीं चाहिए। चाहते हैं कि ORM ऐसे काम करे जैसे memory में पूरा object graph मौजूद हो

  • triple store performance समस्या: जब अधिकांश queries पूरा object या उसी object के कई fields लाती हैं, तब triple store का performance अच्छा नहीं होता। Postgres भी बहुत बेहतर नहीं है। इससे संबंधित अनुभव पूछे जा रहे हैं