HN giới thiệu: Trình khám phá trang đĩa SQLite
(github.com/QuadrupleA)-
SQLite Page Explorer
-
SQLite Page Explorer là một ứng dụng GUI nhỏ được xây dựng bằng redbean, cho phép khám phá cơ sở dữ liệu SQLite theo cách SQLite nhìn thấy nó, tức là "theo từng trang"
-
Tại sao cần nó?
- SQLite và hầu hết các cơ sở dữ liệu lưu dữ liệu trong các trang có kích thước bằng khối đĩa (thường là 4KB) để tối đa hóa tốc độ đọc và ghi
- Thông thường, lập trình viên tương tác với cơ sở dữ liệu ở "mức schema", nhưng khi nhìn ở "mức trang" bạn có thể thu được những góc nhìn thú vị sau
- Có thể xem chỉ mục thực sự trông như thế nào trên đĩa (về cơ bản chúng là những bảng nhỏ riêng biệt)
- Có thể làm truy vấn và ứng dụng nhanh hơn bằng cách lưu dữ liệu theo cách nén gọn hơn
- Có thể phát hiện các vấn đề và sự kém hiệu quả không thấy được ở mức schema
- Có thể có được trực giác về các cấu trúc dữ liệu quan trọng như B-tree, nền tảng của hầu hết các hệ thống tệp và cơ sở dữ liệu
-
Có thể chạy ở mọi nơi
- Nhờ redbean, cosmopolitan và αcτµαlly pδrταblε εxεcµταblε, đây là một tệp thực thi đơn lẻ 6.5 MB chạy native trên Windows, Linux, MacOS, nhiều bản BSD khác nhau, ARM64 và x64
- Tệp này là một tệp zip chứa ứng dụng cùng mã Lua để chạy ứng dụng và phân tích định dạng nhị phân của cơ sở dữ liệu
-
Cách cài đặt
- Tải
sqlite-page-explorer.comtừ phần releases - Trên hệ Unix, chạy
chmod +x - Kéo thả tệp cơ sở dữ liệu hoặc chạy từ console:
sqlite-page-explorer.com mySqliteDatabase.db - Ứng dụng sẽ mở trong một tab trình duyệt
- Khi xong, nhấn Ctrl-C hai lần trong console
- αcτµαlly pδrταblε εxεcµταblεs có thể làm rối các hệ thống phát hiện virus của trình duyệt và hệ điều hành, dẫn đến cảnh báo nhầm. Hãy áp dụng sự cẩn trọng thông thường với mọi thứ tải xuống từ Internet
- Nếu dùng cơ sở dữ liệu lớn hơn 500 MB, việc tải màn hình cấp cao nhất đọc toàn bộ các trang có thể mất thời gian
- Tải
-
Cách build
- Chỉ cần nén nội dung của
files/vàoredbean-3.0.0-cosmos.combằngzip. Có thể tải từ https://cosmo.zip/pub/cosmos/bin/ (nhấp vào "redbean" trong danh sách) - Nếu hệ thống không có
zip, cần tải từ trang đó - Cũng có thể chạy script Python (3.6+) đi kèm là
zipitup.py - Để chỉnh sửa, có thể chạy
redbean-3.0.0-cosmos.com -D filesđể phục vụ ứng dụng từ thư mục confiles. Không cần build lại file zip mỗi khi có thay đổi
- Chỉ cần nén nội dung của
-
Không phải kiệt tác
- Đây là một phần của thử nghiệm với redbean và lần đầu dùng Lua, nên mã nguồn có thể hơi lộn xộn
- Nếu dùng một hệ thống template như Jinja hoặc template native của bottle.py, có thể giảm đáng kể việc nối chuỗi và các lệnh Write()
- Sẽ tốt hơn nếu console tự đóng khi tab cuối cùng được đóng, và với cơ sở dữ liệu lớn thì có thể dừng ở trang 10.000 trừ khi người dùng xác nhận tiếp tục
- Hoan nghênh PR
1 bình luận
Ý kiến Hacker News
sqlite-reprđược xây dựng bằng Dioxus cũng cung cấp hình ảnh trực quan về SQLite khá thú vịshowdb, hữu ích để khám phá tệp cơ sở dữ liệu