53 पॉइंट द्वारा xguru 2024-12-09 | 14 टिप्पणियां | WhatsApp पर शेयर करें
  • अलग-अलग समस्याओं को हल करने के लिए ध्यान देने लायक 7 DB का परिचय
  • यह "सर्वश्रेष्ठ DB" की सूची नहीं है, बल्कि ऐसे टूल्स हैं जो नए और उपयोगी दृष्टिकोण देते हैं
  • 2025 में इन DBs में से हर एक पर एक-एक हफ्ता निवेश करने की सलाह है (7 DBs in 7 Weeks)

1. PostgreSQL: डिफ़ॉल्ट डेटाबेस

  • PostgreSQL मूल रूप से इस्तेमाल होने वाली स्थिर तकनीक है
    • "Just use Postgres" वाक्यांश एक व्यापक रूप से जाना-पहचाना meme है और भरोसेमंदी का प्रतीक भी
    • यह ACID का पालन करता है और physical तथा logical replication सहित मजबूत फीचर्स देता है
    • यह प्रमुख vendors के बीच व्यापक समर्थन पाने वाला स्थिर डेटाबेस है
  • PostgreSQL की सबसे बड़ी खूबी: extensibility
    • Extensions के ज़रिए अनोखी क्षमताएँ जोड़ी जा सकती हैं
    • प्रमुख extensions के उदाहरण:
      • AGE: graph data structures और Cypher query language का समर्थन
      • TimescaleDB: time-series data पर काम करने का समर्थन
      • Hydra Columnar: column-based storage engine प्रदान करता है
    • Extensions, PostgreSQL को दूसरे डेटाबेस से अलग बनाने वाला मुख्य तत्व हैं
  • PostgreSQL की उपयोगिता और विस्तार क्षमता
    • इसका ecosystem विविध है, और इसकी default settings समझदारीपूर्ण और user-friendly हैं
    • non-PostgreSQL services भी Postgres wire protocol का उपयोग करके client compatibility देती हैं
    • यह इतना हल्का है कि WebAssembly(Wasm) environment में भी install किया जा सकता है
  • PostgreSQL सीखने की सिफारिश
    • PostgreSQL की संभावनाओं और सीमाओं को समझने के लिए समय लगाना सार्थक है
    • उदाहरण: MVCC(Multi-Version Concurrency Control) की जटिलता को समझना
    • साधारण CRUD application बनाना, PostgreSQL extensions लिखना आदि सुझाया गया है

2. SQLite: local-first डेटाबेस

  • SQLite एक "local-first" डेटाबेस है जो स्वतंत्र रूप से चल सकता है
    • यह client-server model से बाहर निकलकर application के उसी environment में चलता है
    • उदाहरण: WhatsApp और Signal डिवाइस के भीतर chat data स्टोर करने के लिए SQLite का उपयोग करते हैं
  • SQLite के उन्नत उपयोग के मामले
    • यह केवल एक बुनियादी ACID-compliant डेटाबेस से कहीं अधिक रचनात्मक तरीकों से इस्तेमाल हो सकता है
    • नए tools और extensions:
      • Litestream: SQLite के लिए streaming backup प्रदान करता है
      • LiteFS: distributed access का समर्थन करता है, जिससे अधिक flexible topology बनती है
      • CR-SQLite: CRDT(Conflict-free Replicated Data Types) का उपयोग कर change sets merge करते समय conflict resolution की ज़रूरत हटाता है
  • SQLite की लोकप्रियता पर फिर से ध्यान
    • Ruby on Rails 8.0 की वजह से यह फिर चर्चा में है
    • 37signals: SQLite के आधार पर Rails modules (जैसे Solid Queue) विकसित कर रहा है
      • Rails में multiple SQLite databases management support (database.yml)
    • Bluesky: Personal Data Servers के रूप में हर user के लिए अलग SQLite डेटाबेस का उपयोग
  • SQLite के उपयोग को सीखने की सिफारिश
    • SQLite के साथ local-centric architecture पर प्रयोग करें
    • यह आज़माएँ कि मौजूदा PostgreSQL-आधारित client-server model को SQLite से बदला जा सकता है या नहीं

3. DuckDB: ऐसा डेटाबेस जो हर चीज़ को query कर सकता है

  • DuckDB एक embedded डेटाबेस है जो OLAP के लिए विशेष रूप से बना है
    • यह SQLite की तरह application के साथ काम करता है, लेकिन OLTP की बजाय OLAP workloads पर केंद्रित है
    • यह data analysis और query-centric उपयोग के लिए डिज़ाइन किया गया system है
  • DuckDB की "Query-Anything" विशेषता
    • अलग-अलग data sources को सीधे SQL से query किया जा सकता है:
      • CSV, TSV, JSON जैसे सामान्य file formats
      • Parquet जैसे उन्नत file formats का समर्थन
    • यह फीचर लचीलापन देता है, जैसे Bluesky की data stream analysis में
  • Extensibility और ecosystem
    • DuckDB में भी extensions हैं, लेकिन Postgres जितने समृद्ध नहीं हैं (क्योंकि यह अपेक्षाकृत नया project है)
    • community-contributed extensions काफ़ी हैं, जिनमें gsheets (Google Sheets integration) उल्लेखनीय है
  • DuckDB सीखने की सिफारिश
    • Python notebooks या Evidence के माध्यम से data analysis और processing पर प्रयोग करें
    • SQLite के साथ संयोजन: SQLite डेटाबेस की analytical queries को DuckDB पर offload करके performance बढ़ाई जा सकती है

4. ClickHouse: columnar डेटाबेस

  • ClickHouse एक डेटाबेस है जो OLAP workloads के लिए विशेष रूप से बना है
    • OLTP के लिए PostgreSQL और OLAP के लिए ClickHouse का संयोजन आदर्श माना जा सकता है
    • यह बड़े पैमाने के analytical workloads संभालता है और horizontal scaling व sharding के ज़रिए उच्च data insertion speed देता है
  • ClickHouse की प्रमुख विशेषताएँ
    • hierarchical storage का समर्थन:
      • "hot data" और "cold data" को अलग-अलग स्टोर किया जा सकता है
      • उदाहरण: GitLab के दस्तावेज़ों में इसके उपयोग का विस्तृत केस दिया गया है
    • बड़े datasets की प्रोसेसिंग और real-time analysis:
      • यह ऐसे datasets के लिए उपयुक्त है जिनका आकार DuckDB के लिए कठिन हो सकता है
      • real-time analysis की ज़रूरत वाले मामलों में यह मजबूत प्रदर्शन देता है
  • Operations की सुविधा
    • deployment, scaling, backup जैसी operational documentation व्यवस्थित और विस्तृत है
    • उदाहरण: सही CPU configuration तक समझाने वाले दस्तावेज़ उपलब्ध हैं
  • ClickHouse सीखने की सिफारिश
    • बड़े analytical datasets पर प्रयोग करें, या DuckDB में किए गए analysis को ClickHouse में migrate करके देखें
    • ClickHouse के embedded version chDB का उपयोग कर SQLite से अधिक सीधे तुलना की जा सकती है

5. FoundationDB: layered डेटाबेस

  • FoundationDB एक अनोखा system है जो "डेटाबेस की नींव" जैसा काम करता है
    • इसे key-value store के रूप में डिज़ाइन किया गया है, लेकिन यह एक साधारण डेटाबेस से अधिक, डेटाबेस बनाने की "बुनियाद" की तरह काम करता है
    • इसका उपयोग Apple, Snowflake और Tigris Data जैसी बड़ी कंपनियाँ करती हैं
  • मुख्य विशेषताएँ और सीमाएँ
    • सीमाएँ:
      • transaction data 10MB से ज़्यादा नहीं हो सकता
      • पहली read के बाद transaction 5 सेकंड से ज़्यादा नहीं चल सकता
    • इन्हीं सीमाओं की वजह से यह बड़े scale पर भी पूर्ण ACID transactions का समर्थन कर पाता है
      • उदाहरण: 100TiB से बड़े clusters चलाने के मामले
  • FoundationDB का डिज़ाइन और testing
    • इसे खास workloads के लिए optimize करके बनाया गया है
    • simulation testing के ज़रिए इसकी stability और scalability साबित की गई है:
      • Antithesis और दूसरे डेटाबेसों में भी यही testing methodology इस्तेमाल होती है
      • संबंधित संदर्भ: Tyler Neely और Phil Eaton के दस्तावेज़
  • "layered" डेटाबेस के रूप में FoundationDB
    • storage engine और data model के बीच coupling ढीली है:
      • अलग-अलग layers में storage engine को remap किया जा सकता है
      • उदाहरण: Record layer, Document layer (FoundationDB organization द्वारा प्रदान)
    • Tigris Data द्वारा लिखे गए layer design cases भी देखने लायक हैं
  • FoundationDB सीखने की सिफारिश
    • tutorial पूरा करके RocksDB जैसे systems को replace करने की संभावना देखें
    • design methods (Design Recipes) और संबंधित papers पढ़ें
    • Anti-Features और Features दस्तावेज़ों के ज़रिए उपयोग सीमाएँ और हल की जा सकने वाली समस्याएँ समझें

6. TigerBeetle: पूरी तरह सटीक डेटाबेस

  • TigerBeetle वित्तीय transactions के लिए विशेष रूप से बनाया गया single-purpose डेटाबेस है
    • यह general-purpose डेटाबेस से अलग, खास तौर पर financial transactions पर केंद्रित है
    • यह open source के रूप में उपलब्ध है और उच्च स्तर की reliability व accuracy को लक्ष्य बनाकर बनाया गया है
  • पूर्ण सटीकता के लिए डिज़ाइन दर्शन
    • NASA के Power of Ten Rules और Protocol-Aware Recovery का implementation
    • strict serialisability और Direct I/O का उपयोग, ताकि kernel page cache से जुड़ी समस्याओं से बचा जा सके
    • इसकी safety doc और अनोखी programming style "Tiger Style" में यह बारीकी साफ़ दिखती है
  • Zig भाषा में लागू किया गया अभिनव दृष्टिकोण
    • Zig एक अपेक्षाकृत नई systems programming language है, लेकिन TigerBeetle के लक्ष्यों के लिए आदर्श रूप से उपयुक्त है
    • सादगी और performance को अधिकतम करने में Zig की खूबियों का उपयोग किया गया है
  • TigerBeetle सीखने और उपयोग के सुझाव
    • local deployment environment में financial accounts modeling पर प्रयोग:
      • Quick Start का पालन कर install और उपयोग करें
    • System Architecture docs देखकर general-purpose डेटाबेस के साथ इसके संयोजन की संभावना समझें
    • उदाहरण: PostgreSQL या FoundationDB के साथ integrate करके use cases बढ़ाए जा सकते हैं

7. CockroachDB: global डेटाबेस

  • CockroachDB एक global distributed डेटाबेस है
    • यह PostgreSQL wire protocol के साथ compatible है, और horizontal scaling व strong consistency का समर्थन करता है
    • Google Spanner से प्रेरित इसका डिज़ाइन multi-region डेटाबेस विस्तार को संभव बनाता है
  • CockroachDB की मुख्य तकनीकी विशेषताएँ
    • time synchronization technology:
      • Google Spanner atomic clocks और GPS clocks का उपयोग करता है, लेकिन CockroachDB को सामान्य hardware पर चलने के लिए डिज़ाइन किया गया है
      • NTP-आधारित synchronization delay compensation, nodes के बीच clock drift comparison, और maximum offset पार होने पर member termination
    • multi-region configuration:
      • Table Localities फीचर के ज़रिए read/write trade-offs के अनुसार optimization किया जा सकता है
      • data को users की geographical location के अनुसार वितरित कर performance और latency बेहतर होती है
  • CockroachDB के उपयोग को सीखने के सुझाव
    • MovR example का पुनः implementation:
      • अपनी पसंद की language और framework का उपयोग कर MovR (distributed application example) लागू करें
    • CockroachDB की multi-region और scaling strategies के साथ global applications डिज़ाइन करने पर प्रयोग करें
  • CockroachDB चुनने के कारण
    • DynamoDB जैसे दूसरे distributed डेटाबेसों के विपरीत, इसे local environment में मुफ्त में चलाया जा सकता है
    • यह strong consistency और global distribution support जैसी अलग पहचान वाली विशेषताएँ देता है

Wrap Up

  • यहाँ परिचित कराए गए डेटाबेस अलग-अलग समस्याओं और आवश्यकताओं को हल करने के लिए डिज़ाइन किए गए हैं
  • 2025 में इन डेटाबेसों को सीखते हुए और भी रोचक व रचनात्मक problem-solving तरीकों को खोजें!

14 टिप्पणियां

 
wfedev 2025-11-28

कुछ भी query करें! 😆🐤

 
budaestew 2024-12-16

Duckdb की विश्लेषण परफ़ॉर्मेंस उम्मीद से कहीं ज़्यादा शानदार निकली, यह देखकर मैं चौंक गया।

 
halfenif 2024-12-09

मैं कई महीनों से sqlite के साथ काम कर रहा हूँ। तारीख़-वार 20 लाख रिकॉर्ड और 5GB स्तर के डेटा को प्रोसेस करने वाला काम कर रहा हूँ.

प्रोसेसिंग स्पीड से संतुष्ट हूँ.. लेकिन इस डेटा को प्रोसेस करने के बाद फिर से Excel में बनाकर संबंधित हितधारकों को देने में बहुत ज़्यादा समय लग रहा है.

लगता है कि OpenPyXl का उपयोग करने वाले तरीके पर थोड़ा और अध्ययन करना पड़ेगा.

 
kimjj81 2024-12-18

पता नहीं इसमें कौन-सा magic है, लेकिन लगता है कि वे duckDB + sqlite का कॉम्बिनेशन इस्तेमाल कर रहे हैं।

 
channprj 2024-12-09

हैरानी की बात है कि MongoDB का ज़िक्र नहीं किया गया।

 
felizgeek 2024-12-09

अगर आपको ऐसा माहौल चाहिए जहाँ developers की learning curve को लेकर चिंता कम हो, तो मैं SQLite की सिफारिश करता हूँ। यह file-based है, इसलिए आसान है।

 
savvykang 2024-12-09

अगर यह पक्का हो कि remote access की कोई आवश्यकता नहीं है, तो यह वाकई एक बेहद संतोषजनक solution है। DB management का झंझट खत्म हो जाता है, और data editing, backup/recovery भी आसान हो जाती है, इसलिए यह अच्छा लगता है।

 
aer0700 2024-12-09

अगर आप कहते हैं कि SQLITE इस्तेमाल करेंगे तो लोग डांटने के लिए तैयार रहते हैं, लेकिन जब तक आप यह नहीं बताते कि आपने SQLITE इस्तेमाल किया है, किसी को पता भी नहीं चलता... SQLITE सोचे से बेहतर है।

 
jpumpkin94 2024-12-09

मैं कई दशकों(??) से सिर्फ MySQL ही इस्तेमाल कर रहा हूँ,
PostgreSQL कैसा है, इस पर प्रोडक्शन में PostgreSQL इस्तेमाल करने वाले लोगों की बहुत-सी टिप्पणियों का इंतज़ार है।

 
zuppiy 2024-12-09

"हाथी सील से बेहतर होते हैं"
यह ज़्यादातर स्थितियों में सच है

 
roxie 2024-12-11

हाहाहाहा

 
kibae 2024-12-09

मैं 2001 में bug से भरे mysql (उस समय v3.x) से pgsql पर आ गया था.
मुझे लगता है कि कई मामलों में यह बेहतर है, लेकिन... व्यवहारिक दुनिया में मुझे लगता है कि Partial Index का होना इसकी सबसे शक्तिशाली feature है.

 
chanhee 2024-12-09

कंपनी के काम में Oracle और Sqlserver ही इस्तेमाल करता रहा, फिर जब MySQL इस्तेमाल करने की कोशिश की तो सच में बहुत बार लगा, "ये क्यों नहीं हो रहा?" मुझे भी अब ठीक-ठीक याद नहीं है.
आखिरकार Postgres पर आ गया.

 
bbulbum 2024-12-09

Postgres इस्तेमाल करने के बाद जब मैं ऐसी जगह आया जहाँ MySQL इस्तेमाल होता है, तो मुझे कई बार लगा, आखिर यह क्यों नहीं होता? इसका performance क्यों नहीं निकल रहा?
मुझे ठीक-ठीक याद नहीं कि वे क्या चीज़ें थीं (वे मामूली भी हो सकती हैं, और नहीं भी)।