1 पॉइंट द्वारा GN⁺ 2025-02-08 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • SQLite Page Explorer एक छोटा GUI एप्लिकेशन है, जिससे SQLite डेटाबेस को SQLite की नजर से डिस्क पेज स्तर पर एक्सप्लोर किया जा सकता है
  • यह डेवलपर्स द्वारा आम तौर पर संभाले जाने वाले tables, rows, SQL जैसे schema level के बजाय page level दिखाता है, जिससे indexes की असली disk structure और storage efficiency देखी जा सकती है
  • redbean, cosmopolitan, αcτµαlly pδrταblε εxεcµταblε का उपयोग करके यह 6.5MB single executable file के रूप में Windows, Linux, MacOS, कई BSD, ARM64 और x64 पर natively चलता है
  • executable file Lua code और database binary format parser आदि को समेटे एक zip file भी है; database file को drag करने या console से चलाने पर app browser tab में खुलता है
  • APE-style executable browser या operating system virus detection में false positives पैदा कर सकता है, और 500MB से बड़े databases में top-level view loading धीमी हो सकती है

SQLite पेज को सीधे देखने वाला GUI

  • SQLite Page Explorer SQLite database को “page by page” explore करने वाला एक छोटा GUI application है
  • SQLite और ज्यादातर databases आम तौर पर 4KB size के disk block pages में data store करते हैं; यह reads और writes को तेज करने के लिए बनाई गई structure है
  • आम developer work tables, rows, SQL जैसे schema level पर होता है, लेकिन यह tool SQLite द्वारा देखे जाने वाले page level में झांकने देता है

Page-level exploration से क्या देखा जा सकता है

  • देख सकते हैं कि index असल में disk पर कैसा दिखता है
    • index मूल रूप से एक अलग छोटी table की तरह store होता है
  • data को और compactly store करने के तरीके देखे जा सकते हैं, और यह queries व applications को तेज बनाने से जुड़ सकता है
  • schema level पर न दिखने वाली समस्याएं और inefficiencies खोजने में मदद मिलती है
  • filesystems और databases की बुनियाद में मौजूद महत्वपूर्ण data structure B-Tree के बारे में intuition मिलती है

Single executable file के रूप में कहीं भी चलाएं

  • redbean, cosmopolitan, αcτµαlly pδrταblε εxεcµταblε का उपयोग करके single 6.5MB executable file के रूप में distribute किया गया है
  • Windows, Linux, MacOS, कई BSD पर चलता है, और ARM64 व x64 दोनों को support करता है
  • executable file app चलाने वाला Lua code, database binary format parser आदि शामिल करने वाली zip file भी है

Installation और running method

  • release page से sqlite-page-explorer.com download करें
  • Unix-like systems पर chmod +x चलाएं
  • database file को executable file पर drag करें या console से इस तरह चलाएं
    • sqlite-page-explorer.com mySqliteDatabase.db
  • app browser tab में खुलता है
  • उपयोग पूरा होने पर console में Ctrl-C दो बार दबाएं

सावधानियां और development method

  • APE executable file browser या operating system virus detection में false positives बना सकती है
    • llamafile जैसे projects भी वही polyglot binary technique use करते हैं
    • internet से download की गई files के लिए सामान्य सावधानी जरूरी है
  • 500MB से बड़े database डालने पर सभी pages पढ़ने वाले top-level view की loading धीमी हो सकती है
  • build का तरीका files/ contents को redbean-3.0.0-cosmos.com में zip के रूप में डालना है
    • शामिल zipitup.py Python 3.6+ script से भी build किया जा सकता है
  • development के दौरान redbean-3.0.0-cosmos.com -D files से files subdirectory से app serve किया जा सकता है, ताकि हर बार zip दोबारा न बनानी पड़े
  • project redbean experiment और Lua के पहले उपयोग का हिस्सा था, और code को और साफ करने की गुंजाइश है
    • template system string concatenation और Write() calls को कम करने में मदद कर सकता है
    • सुधार के ideas हैं: आखिरी tab बंद होने पर console को automatically exit करना, या huge database में user confirmation से पहले करीब 10,000 pages पर रुकना
    • PRs welcome हैं

1 टिप्पणियां

 
GN⁺ 2025-02-08
Hacker News टिप्पणियाँ
  • वाकई बहुत शानदार है। यहाँ animated GIF screenshot डाली गई है: https://simonwillison.net/2025/Feb/6/sqlite-page-explorer/

    • यह मेरे लिए सम्मान की बात है :) इसे बनाते समय मैंने सोचा था, “यह शायद SimonW को पसंद आएगा।” इतने सारे शानदार LLM experiments और लेख साझा करने के लिए धन्यवाद
  • बढ़िया! SQLite file format documentation को साथ रखकर SQLite फ़ाइल को parse करने वाला कोड खुद लिखना हैरान करने वाली हद तक आसान है
    यह प्रोजेक्ट जिस तरह करता है, उससे मिलता-जुलता है, और README के “Why?” सेक्शन में दिए कारणों की वजह से मैं इसे ज़ोरदार तरीके से recommend करता हूँ
    https://www.sqlite.org/fileformat.html

    • सही है, file format पढ़ने में आसान है! मैं बैठा और कुछ ही घंटों में reader implementation भी कर ली
      थोड़ा-बहुत visualization tool भी है, लेकिन मूल पोस्ट के software की तुलना में इसकी functionality काफी कम है: https://www.nayuki.io/page/sqlite-database-file-visualizatio...
    • संयोग से आज ही मैंने इसका इस्तेमाल किया, और यह उपयोगी लगा
  • सच में प्रभावशाली! पहले SQLite internals पर काम कर चुका हूँ, इसलिए जानता हूँ कि इस तरह का काम और experiment बिल्कुल छोटा काम नहीं है
    इसी संदर्भ में हाल ही में sqlite-repr [1] देखा, जो Dioxus में बना है और SQLite visualization के लिए एक दिलचस्प approach दिखाता है
    [1] https://torymur.github.io/sqlite-repr/

  • 10 साल से भी पहले security tool बनाते समय मैंने ऐसा कुछ किया था। ऐसा करने पर घनी तरह से डिज़ाइन किया गया engine और भी पसंद आने लगता है
    मैं हमेशा सोचता था कि explorer या सिर्फ basic library भी मज़ेदार होगी, इसलिए खासकर इसे MIT license के तहत जारी देखना अच्छा लगा

  • अच्छा लग रहा है, बढ़िया बनाया है
    पहली स्क्रीन पर color legend जोड़ना अच्छा होगा। शुरुआत में समझ नहीं आया कि रंग क्या दिखा रहे हैं
    बड़े database पर यह थोड़ा संघर्ष करता दिखता है। मेरा 3.6GB, 942719-page वाला database था, तो pages को हिस्सों में दिखाना अच्छा रहेगा

    • hover करने पर page type title attribute में दिखता है, इसलिए color scheme समझी जा सकती है, लेकिन यह बहुत स्पष्ट नहीं है
      बड़े database पर धीमा होना भी सही बात है। pages को “server side” पर iterate किया जाता है, इसलिए अगर कई लाख हों तो समय लगता है
      आदर्श रूप से real-time scrolling page range API अच्छा होगा, लेकिन सिर्फ “अगले 10,000 pages दिखाओ” जैसा तरीका भी काम कर सकता है
  • प्रोजेक्ट अच्छा है, लेकिन executable चलाने पर "failed to run lua code: /index.lua:3: module 'utils' not found:" error आता है

  • मैं इतना disciplined नहीं हूँ कि lecture या class को आखिर तक देख सकूँ, इसलिए अंदर क्या हो रहा है और data को ज़्यादा efficient तरीके से कैसे structure किया जाए, इसे visual तरीके से समझने के लिए यह बहुत अच्छा लगा

  • मैंने हाल ही में SQLite file format समझाने वाला एक लेख लिखा था, और उसमें मददगार diagram भी शामिल किए थे। यह उपयोगी हो सकता है
    https://blog.jabid.in/2024/11/24/sqlite.html

  • SQLite source में database file को देखने के लिए अच्छा showdb नाम का CLI tool शामिल है

  • बढ़िया है। मैं database सीख रहा हूँ और यह बहुत मददगार है