HN เปิดตัว: ตัวสำรวจหน้าดิสก์ SQLite
(github.com/QuadrupleA)-
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 ใหม่ทุกครั้งที่มีการเปลี่ยนแปลง
- zip เนื้อหาใน
-
ยังไม่ใช่งานระดับมาสเตอร์พีซ
- นี่เป็นส่วนหนึ่งของการทดลองใช้ redbean และลองใช้ Lua เป็นครั้งแรก ดังนั้นโค้ดอาจจะค่อนข้างรกอยู่บ้าง
- หากใช้ระบบเทมเพลตอย่างเนทีฟเทมเพลตของ Jinja หรือ bottle.py ก็จะช่วยลดการต่อสตริงจำนวนมากและคำสั่ง Write() ได้
- น่าจะดีถ้าคอนโซลปิดเองอัตโนมัติเมื่อแท็บสุดท้ายถูกปิด และในกรณีฐานข้อมูลขนาดใหญ่สามารถหยุดที่หน้า 10,000 เว้นแต่ผู้ใช้จะยืนยันให้ไปต่อ
- ยินดีรับ PR
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
sqlite-reprที่สร้างด้วย Dioxus ก็มีการแสดงผลภาพของ SQLite ที่น่าสนใจเช่นกันshowdbรวมอยู่ด้วย ซึ่งมีประโยชน์สำหรับการสำรวจไฟล์ฐานข้อมูล