20 पॉइंट द्वारा GN⁺ 2025-12-05 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • PGlite एक हल्का समाधान है जो WASM environment में एक पूर्ण Postgres database को लोकल रूप से चलाने की सुविधा देता है
  • कंप्रेस होने पर इसका आकार 3MB से कम है, इसलिए इसे browser या client environment में भी आसानी से चलाया जा सकता है
  • data loading, synchronization, real-time query जैसी सुविधाएँ built-in हैं, जिससे reactive data processing संभव होती है
  • pgvector सहित dynamic extension loading को सपोर्ट करता है, इसलिए अलग-अलग extension modules का उपयोग किया जा सकता है
  • Supabase आधारित database.build के जरिए AI से Postgres database बनाया और deploy किया जा सकता है, जिससे web-based database development की flexibility बढ़ती है

अवलोकन

  • PGlite एक embedded Postgres database है जो WASM(WebAssembly) environment में चलता है
    • लोकल environment में एक पूर्ण Postgres instance चलाया जा सकता है
    • reactive data processing और real-time synchronization को सपोर्ट करता है

मुख्य विशेषताएँ

  • हल्कापन: Gzip compression के आधार पर 3MB से कम का पूर्ण Postgres build उपलब्ध
    • browser या lightweight client environment में भी चल सकता है
  • विस्तारशीलता: dynamic extension loading mechanism के जरिए विभिन्न Postgres extensions जोड़े जा सकते हैं
    • pgvector extension का बेसिक सपोर्ट
  • प्रतिक्रियाशीलता: data loading, synchronization, real-time query के लिए built-in फीचर्स शामिल
    • real-time data updates और reactive applications बनाने के लिए उपयुक्त

अनुभव और उपयोग

  • database.build platform पर PGlite-आधारित Postgres database बनाया और publish किया जा सकता है
    • Supabase द्वारा बनाया गया AI-आधारित टूल, जिससे उपयोगकर्ता स्वयं database बना सकते हैं
  • browser के भीतर PGlite Postgres instance को सीधे चलाया जा सकता है
    • pgvector शामिल
    • अतिरिक्त extensions को playground(REPL) environment में आज़माया जा सकता है

महत्व

  • PGlite Postgres की क्षमताओं को browser स्तर तक बढ़ाता है, जिससे client-केंद्रित database execution संभव होता है
  • हल्कापन, विस्तारशीलता और प्रतिक्रियाशीलता को जोड़कर यह अगली पीढ़ी के web applications development के लिए एक उपयुक्त database solution के रूप में उभरता है

2 टिप्पणियां

 
qqq7300 2025-12-10

यह लेख देखकर मैंने अपने प्रोजेक्ट में PGlite को प्रयोगात्मक रूप से अपनाकर देखा। यक़ीनन, सरल testing के लिए यह सच में बहुत तेज़ और अच्छा लगा। आगे भी इससे काफ़ी उम्मीदें हैं।

 
GN⁺ 2025-12-05
Hacker News राय
  • मैं PGlite टीम में काम करता हूँ। इसे फिर से HN पर देख कर खुशी हुई।
    हाल ही में साप्ताहिक डाउनलोड 30 लाख से ऊपर चले गए हैं और जल्द ही 40 लाख तक पहुँचने वाले हैं — npm package page देखें।
    इसे मूल रूप से web app में embed करने के लिए बनाया गया था, लेकिन अब development tools और CLI environment में इसका उपयोग तेज़ी से बढ़ रहा है। Google Firebase और Prisma भी अपने-अपने CLI में PGlite को embed करके server products को emulate कर रहे हैं।

    • दिलचस्प है। लेकिन यह जानना चाहूँगा कि इसे केवल WASM के लिए क्यों बनाया गया। आम तौर पर पहले library बनाया जाता है और फिर उसे WASM में ले जाया जाता है; लगता है शायद मैं कुछ मिस कर रहा हूँ।
    • शानदार काम के लिए धन्यवाद। क्या http-vfs read-only scenario को support करने की कोई योजना है?
      मेरा मतलब DuckDB या sql.js-httpvfs की तरह remote URL से range request के ज़रिए blocks पढ़ने वाले तरीके से है।
      हमारी lab में भी ऐसा प्रोजेक्ट चल रहा है, लेकिन http-vfs ecosystem अभी भी prototype level पर है, इसलिए optimized libraries लगभग नहीं हैं।
      यह भी जानना चाहूँगा कि PostgreSQL का disk access pattern, SQLite की तुलना में, http-vfs के लिए ज़्यादा उपयुक्त है या नहीं।
    • क्या Flutter के लिए library की कोई योजना है?
    • यह जानना दिलचस्प होगा कि memory mode में PGlite, सामान्य Postgres से तेज़ है या नहीं।
      अगर ऐसा है, तो network protocol support के साथ यह JS के अलावा दूसरी भाषाओं के CI environment में भी बहुत बढ़िया हो सकता है।
    • यह वाकई शानदार लग रहा है। खास तौर पर किन use cases में इसका इस्तेमाल अच्छा रहेगा, यह जानना चाहूँगा।
      क्या लक्ष्य SQLite या DuckDB का विकल्प बनना है?
  • मैं non-JavaScript runtime में PGlite इस्तेमाल करना चाहता हूँ।
    उदाहरण के लिए, Go CLI में इसे WASM runtime के ज़रिए embed करके SQLite के विकल्प की तरह।
    issue #89 देखने पर लगता है कि Rust के लिए third-party bindings हैं; क्या आधिकारिक रूप से दूसरी भाषाओं के bindings support करने की कोई योजना है?

    • सही कहा, PGlite + Go का संयोजन वाकई बहुत अच्छा होगा।
  • PGlite सच में बेहतरीन है। मैं इसे browser के अंदर PostgreSQL server की तरह development के लिए इस्तेमाल कर रहा हूँ।
    server, PG protocol को implement करता है, और जब client connect करता है तो query browser तक भेजी जाती है, जहाँ अंदर PGlite चलता है।
    नतीजतन browser के अंदर पूरा PG server चलता है — dbfor.dev

  • यह project बहुत दिलचस्प है। Postgres की कमियों में से एक यह है कि आपको हमेशा server set up करना पड़ता है, और यह उसी समस्या को हल करता है।
    क्या इसे native library के रूप में compile करने का कोई तरीका है? लगता है कुछ code reuse किया जा सकता है।

    • मैंने प्रयोग के तौर पर इसे React Native के लिए compile किया था। iOS और Android पर Postgres चल रहा है — PR link
    • native library फिलहाल roadmap में शामिल है।
    • पूरी तरह सहमत। अगर SQL या behavior बदले बिना embedded से network mode में switch किया जा सके, तो वह बहुत शानदार होगा।
  • PGlite और SQLite के बीच फ़र्क क्या है, यह जानना चाहूँगा।
    मैं मुख्य रूप से embedded environment और browser client side पर SQLite इस्तेमाल करता रहा हूँ।
    SQLite की ताकत उसकी सादगी है, जबकि PGlite की अलग-अलग extensions काफ़ी दिलचस्प हैं। दोनों DB के बीच मूल अंतर क्या है?

    • मेरे हिसाब से इसका मुख्य उपयोग test/CI environment है।
      SQLite से जल्दी tests चलाए जा सकते हैं, लेकिन अगर आपकी वास्तविक infra PostgreSQL है, तो उसका मूल्य सीमित हो जाता है।
  • unit tests में मैं अभी भी TestContainers के साथ Docker-आधारित Postgres चलाता हूँ।
    लेकिन ऐसे विकल्पों की वजह से py-pglite जैसे Python testing tools भी संभव हुए हैं।
    फिर भी, pgserver की तरह pip package के रूप में हल्का-फुल्का असली Postgres चलाने वाले तरीके पर मुझे ज़्यादा भरोसा है।
    मेरी राय पूरी तरह unit testing के नज़रिए से है।

    • यह जानना उपयोगी होगा कि दोनों approaches के trade-offs क्या हैं। ऐसे अनुभव हमेशा मददगार होते हैं।
  • हमारी टीम ने नई internal service बनाते समय test environment में PGlite अपनाया।
    हमने wrapper इस तरह बनाया कि test के समय PGlite चले और वास्तविक execution में Postgres instance इस्तेमाल हो, और यह बहुत सफल रहा।
    खास तौर पर .clone() feature से DB checkpoints बनाकर हर test के लिए शुरुआती state में वापस जाना संभव हुआ।
    50 test suites को parallel चलाना भी बहुत आसान हो गया।

  • मैं इसे testing के लिए इस्तेमाल कर रहा हूँ, और यह in-memory SQLite और full Postgres instance के बीच का रास्ता जैसा लगता है।
    मैं लंबे समय से कुछ ऐसा ही ढूँढ़ रहा था, और test speed बढ़ने से बहुत संतुष्ट हूँ। अभी तक कोई बड़ी limitation भी नहीं दिखी।

  • Doltgres नाम का single executable file वाला Postgres भी है।
    Deno की तरह एक single .exe file डाउनलोड करके चलाएँ और Postgres तुरंत शुरू हो जाता है — Doltgres installation docs