1 คะแนน โดย GN⁺ 2025-02-08 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • SQLite Page Explorer

  • SQLite Page Explorer เป็นแอป GUI ขนาดเล็กที่พัฒนาด้วย redbean ซึ่งเป็นเครื่องมือที่ช่วยให้สามารถสำรวจฐานข้อมูล SQLite แบบ "ทีละหน้า" ตามมุมมองที่ SQLite มองเห็นได้

  • ทำไมถึงจำเป็น?

    • SQLite และฐานข้อมูลส่วนใหญ่เก็บข้อมูลเป็นหน้า (page) ขนาดเท่าบล็อกดิสก์ ซึ่งโดยทั่วไปคือ 4KB เพื่อให้การอ่านและเขียนทำได้เร็วที่สุด
    • โดยปกตินักพัฒนาจะโต้ตอบกับฐานข้อมูลในระดับ "สคีมา" แต่การดูในระดับ "หน้า" สามารถให้ข้อมูลเชิงลึกที่น่าสนใจดังนี้
      • สามารถดูได้ว่าอินเด็กซ์มีหน้าตาบนดิสก์จริง ๆ อย่างไร (โดยพื้นฐานแล้วมันคือตารางเล็กอีกตารางหนึ่ง)
      • สามารถทำให้คิวรีและแอปพลิเคชันเร็วขึ้นได้ด้วยการเก็บข้อมูลให้บีบอัดมากขึ้น
      • สามารถค้นพบปัญหาและความไม่มีประสิทธิภาพที่มองไม่เห็นในระดับสคีมา
      • สามารถสร้างความเข้าใจเชิงสัญชาตญาณเกี่ยวกับโครงสร้างข้อมูลสำคัญอย่าง B-tree ซึ่งเป็นรากฐานของระบบไฟล์และฐานข้อมูลส่วนใหญ่
  • รันได้ทุกที่

    • ด้วย redbean, cosmopolitan และ αcτµαlly pδrταblε εxεcµταblε จึงเป็นไฟล์ปฏิบัติการเดี่ยวขนาด 6.5 MB ที่รันแบบเนทีฟได้บน Windows, Linux, MacOS, BSD หลากหลายรุ่น, ARM64 และ x64
    • ไฟล์นี้เป็น zip file ที่รวมตัวแอปพลิเคชันและโค้ด Lua สำหรับพาร์สไบนารีฟอร์แมตของฐานข้อมูลไว้ด้วย
  • วิธีติดตั้ง

    • ดาวน์โหลด sqlite-page-explorer.com จาก releases
    • บนระบบตระกูล Unix ให้รัน chmod +x
    • ลากไฟล์ฐานข้อมูลมาวาง หรือรันจากคอนโซล: sqlite-page-explorer.com mySqliteDatabase.db
    • แอปพลิเคชันจะเปิดในแท็บเบราว์เซอร์
    • เมื่อเสร็จแล้ว ให้กด Ctrl-C สองครั้งในคอนโซล
    • αcτµαlly pδrταblε εxεcµταblεs อาจทำให้ระบบตรวจจับไวรัสของเบราว์เซอร์และระบบปฏิบัติการสับสนจนเกิดการแจ้งเตือนผิดพลาดได้ ควรใช้ความระมัดระวังตามปกติกับทุกสิ่งที่ดาวน์โหลดจากอินเทอร์เน็ต
    • หากใช้ฐานข้อมูลขนาดใหญ่กว่า 500 MB การโหลดมุมมองระดับบนสุดที่อ่านทุกหน้าอาจใช้เวลาสักระยะ
  • วิธีบิลด์

    • zip เนื้อหาใน files/ เข้าไปใน redbean-3.0.0-cosmos.com ได้เลย ซึ่งดาวน์โหลดได้จาก https://cosmo.zip/pub/cosmos/bin/ (คลิก "redbean" ในรายการ)
    • หากในระบบไม่มี zip ก็ต้องดาวน์โหลดจากเว็บไซต์ดังกล่าว
    • จะรันสคริปต์ Python (3.6+) ที่แนบมา zipitup.py ก็ได้
    • หากต้องการแก้ไข ให้รัน redbean-3.0.0-cosmos.com -D files เพื่อเสิร์ฟแอปจากไดเรกทอรีย่อย files โดยไม่ต้องบิลด์ zip ใหม่ทุกครั้งที่มีการเปลี่ยนแปลง
  • ยังไม่ใช่งานระดับมาสเตอร์พีซ

    • นี่เป็นส่วนหนึ่งของการทดลองใช้ redbean และลองใช้ Lua เป็นครั้งแรก ดังนั้นโค้ดอาจจะค่อนข้างรกอยู่บ้าง
    • หากใช้ระบบเทมเพลตอย่างเนทีฟเทมเพลตของ Jinja หรือ bottle.py ก็จะช่วยลดการต่อสตริงจำนวนมากและคำสั่ง Write() ได้
    • น่าจะดีถ้าคอนโซลปิดเองอัตโนมัติเมื่อแท็บสุดท้ายถูกปิด และในกรณีฐานข้อมูลขนาดใหญ่สามารถหยุดที่หน้า 10,000 เว้นแต่ผู้ใช้จะยืนยันให้ไปต่อ
    • ยินดีรับ PR

1 ความคิดเห็น

 
GN⁺ 2025-02-08
ความคิดเห็นบน Hacker News
  • โปรเจ็กต์ที่โพสต์ภาพหน้าจอแบบแอนิเมชัน GIF นี้น่าสนใจมาก
  • การเขียนโค้ดเพื่อพาร์สไฟล์ SQLite โดยอ้างอิงเอกสารรูปแบบไฟล์ SQLite นั้นง่ายกว่าที่คิด
  • ในฐานะคนที่เคยมีประสบการณ์ทำงานกับระบบภายในของ SQLite งานในโปรเจ็กต์นี้น่าประทับใจ
    • sqlite-repr ที่สร้างด้วย Dioxus ก็มีการแสดงผลภาพของ SQLite ที่น่าสนใจเช่นกัน
    • ลิงก์ที่เกี่ยวข้อง: sqlite-repr
  • มีความเห็นว่าโปรเจ็กต์นี้ยอดเยี่ยม และถ้าเพิ่มคำอธิบายสีประกอบก็น่าจะดี
    • พบปัญหาด้านประสิทธิภาพกับฐานข้อมูลขนาดใหญ่ (3.6GB, 942719 หน้า) และอาจพิจารณาการแบ่งหน้า
  • เคยทำสิ่งคล้ายกันเมื่อ 10 ปีก่อนสำหรับเครื่องมือความปลอดภัย และรู้สึกดีที่โปรเจ็กต์นี้เผยแพร่ภายใต้สัญญาอนุญาต MIT
  • ในซอร์สของ SQLite มีเครื่องมือ CLI ชื่อ showdb รวมอยู่ด้วย ซึ่งมีประโยชน์สำหรับการสำรวจไฟล์ฐานข้อมูล
  • สำหรับคนที่เข้าถึงการบรรยายหรือชั้นเรียนได้ยาก โปรเจ็กต์นี้เป็นวิธีที่ดีในการมองภาพโครงสร้างข้อมูลได้อย่างมีประสิทธิภาพ
  • เป็นเครื่องมือที่มีประโยชน์มากสำหรับผู้ที่กำลังเรียนรู้เรื่องฐานข้อมูล
  • เคยมีประสบการณ์เขียนเอกสารอธิบายและไดอะแกรมที่มีประโยชน์เกี่ยวกับรูปแบบไฟล์ SQLite
  • เครื่องมือทำงานได้ดี