3 पॉइंट द्वारा GN⁺ 2024-11-16 | 1 टिप्पणियां | WhatsApp पर शेयर करें

SQLite इंडेक्स विज़ुअलाइज़ेशन: संरचना

  • इंडेक्स का महत्व: SQLite एक DBMS है जिसका उपयोग ब्राउज़र, मोबाइल ऐप और ऑपरेटिंग सिस्टम में व्यापक रूप से होता है, इसलिए इंडेक्स संरचना को समझने और डिस्क व मेमोरी में उसके स्टोरेज तरीके को जानने के लिए यह उपयुक्त है.

नोड और पेज संरचना

  • B-ट्री संरचना: SQLite के इंडेक्स B-ट्री संरचना में स्टोर होते हैं, और हर नोड के कई child होते हैं.
  • पेज और सेल: पेज सेल डेटा स्टोर करते हैं और right child page का लिंक रखते हैं. सेल में इंडेक्स डेटा, rowId, और left child page का लिंक शामिल होता है.

SQLite सोर्स कोड विश्लेषण

  • कोड उदाहरण: इंडेक्स विश्लेषण के लिए फ़ंक्शन लिखना. उदाहरण के लिए, sqlite3DebugBtreeIndexDump फ़ंक्शन चुने गए इंडेक्स की सामग्री को पढ़कर आउटपुट करता है.
  • Docker का उपयोग: Docker का उपयोग करके इंडेक्स डंप को टेस्ट किया जा सकता है.

इंडेक्स विज़ुअलाइज़ेशन

  • विज़ुअलाइज़ेशन टूल: d3-org-tree लाइब्रेरी का उपयोग करके इंडेक्स संरचना को विज़ुअलाइज़ करने की कोशिश की गई, लेकिन टेक्स्ट के रूप में संरचना दिखाना अधिक सरल था.
  • PHP ImageMagick: PHP के ImageMagick एक्सटेंशन का उपयोग करके ऐसी इमेज बनाई गईं जिनमें डिज़ाइन और spacing को नियंत्रित किया जा सकता है.

विभिन्न इंडेक्स उदाहरण

  • बेसिक इंडेक्स: 1 रिकॉर्ड से बना सरल इंडेक्स.
  • विभिन्न रिकॉर्ड संख्या: 1,000 और 1,000,000 रिकॉर्ड वाले इंडेक्स.
  • सॉर्ट दिशा की तुलना: ASC और DESC sort direction वाले इंडेक्स की तुलना.
  • expression-आधारित डेटा: expression का उपयोग करके इंडेक्स बनाना.
  • NULL value वाले unique index: SQLite NULL value वाले unique index को सपोर्ट करता है.
  • partial index: NULL value को फ़िल्टर करके इंडेक्स बनाना.
  • multi-column index: कई columns को शामिल करने वाला इंडेक्स बनाना.

इंडेक्स ऑप्टिमाइज़ेशन

  • VACUUM और REINDEX: मौजूदा इंडेक्स को ऑप्टिमाइज़ करने के लिए इस्तेमाल होने वाले commands.
  • टेक्स्ट डेटा: छोटी strings सीधे इंडेक्स सेल में स्टोर होती हैं, जबकि लंबा टेक्स्ट अलग से स्टोर होता है.
  • floating-point डेटा: floating-point डेटा को शामिल करने वाले इंडेक्स बनाना.

निष्कर्ष

  • इंडेक्स संरचना की समझ: SQLite की इंडेक्स संरचना और B-ट्री में डेटा स्टोर व एक्सेस करने के तरीके को समझाया गया है.
  • विज़ुअलाइज़ेशन का महत्व: विज़ुअलाइज़ेशन के जरिए विभिन्न इंडेक्स का विश्लेषण और तुलना की जा सकी.
  • आगे की योजना: इंडेक्स-आधारित search विज़ुअलाइज़ेशन और रोचक SQL queries की पड़ताल करने की योजना है.

1 टिप्पणियां

 
GN⁺ 2024-11-16
Hacker News राय
  • SQLite टेबल की हर row में मूल रूप से एक यूनिक rowId होता है, जो अगर explicitly define न किया गया हो तो primary key की तरह काम करता है

    • वास्तव में primary key होने पर भी rowId का उपयोग होता है
    • WITHOUT ROWID टेबल के primary key index को visualize करके देखना अच्छा रहेगा
    • दोनों index एक जैसे दिख सकते हैं, लेकिन कम pages वाला दूसरा index ज़्यादा तेज़ हो सकता है
    • nodes की संख्या कम होना हमेशा "तेज़" होने का मतलब नहीं है
    • सबसे महत्वपूर्ण चीज़ tree की height है
    • दूसरी सबसे महत्वपूर्ण चीज़ यह है कि index में value मिलने के बाद क्या होता है
    • क्या बाकी डेटा किसी अलग टेबल (rowid) से load करना पड़ता है, या डेटा पहले से वहीं मौजूद है (WITHOUT ROWID), यह खास तौर पर range queries में महत्वपूर्ण है
  • यह देखना चाहता था कि database management system (DBMS) disk और memory में index को कैसे store और retrieve करता है

    • प्रयोग के लिए SQLite को चुना गया
    • SQLite में सब कुछ handle करने के तरीके में कुछ अलग तरह की विशेषताएँ हैं
    • खासकर query processing में यह और भी स्पष्ट है
    • SQLite performance से ज़्यादा simplicity को प्राथमिकता देता है, इसलिए इसका implementation दूसरे databases से अलग है
    • SQLite दूसरे databases से प्रतिस्पर्धा नहीं करता
    • यह JSON और XML files तथा persistent storage के लिए प्रतिस्पर्धा करता है
    • इसका मतलब है कि SQLite किसी चीज़ को जिस तरह implement करता है, वह यह बहुत कम बताता है कि वास्तविक databases कैसे काम करते हैं
  • वेबसाइट बहुत पढ़ने में आसान है, इसलिए इसे पढ़ना चाहूँगा

  • "indexes" का उपयोग क्रिया "to index" के third-person singular present form और संज्ञा "index" के plural, दोनों रूप में होता है

    • वहीं "indices" पारंपरिक plural form है, और खास तौर पर mathematics तथा science में अधिक इस्तेमाल होता है
    • सामान्य अंग्रेज़ी में "indexes" आम है, लेकिन technical क्षेत्रों में भाषाई शुद्धता बनाए रखने के लिए "indices" को प्राथमिकता दी जाती है
    • "indices" का उपयोग indexing क्रिया और index के plural के बीच अंतर स्पष्ट करके clarity बढ़ाता है
  • PostgreSQL यही काम कैसे करता है, यह देखकर तुलना करना और notes छोड़ना अच्छा रहेगा

  • yEd के लिए tgf generate किया जा सकता है, जिससे कम मेहनत में ज़्यादा तरह के layouts मिल सकते हैं