1 điểm bởi GN⁺ 2025-02-08 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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.com từ 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
  • Cách build

    • Chỉ cần nén nội dung của files/ vào redbean-3.0.0-cosmos.com bằng zip. 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 con files. Không cần build lại file zip mỗi khi có thay đổi
  • 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

 
GN⁺ 2025-02-08
Ý kiến Hacker News
  • Dự án đăng ảnh chụp màn hình GIF động rất thú vị
  • Viết mã để phân tích tệp SQLite dựa trên tài liệu định dạng tệp SQLite dễ hơn tưởng tượng
  • Với kinh nghiệm từng làm việc với phần bên trong của SQLite, công việc trong dự án này rất ấn tượng
    • 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ị
    • Liên kết liên quan: sqlite-repr
  • Dự án rất tuyệt, và có ý kiến cho rằng sẽ tốt hơn nếu thêm chú giải màu sắc
    • Trên cơ sở dữ liệu lớn (3.6GB, 942719 trang) xuất hiện vấn đề hiệu năng, nên có thể cân nhắc phân trang
  • Đã làm việc tương tự cho một công cụ bảo mật cách đây 10 năm, và thật tốt khi dự án này được cung cấp theo giấy phép MIT
  • Mã nguồn SQLite có kèm công cụ CLI showdb, hữu ích để khám phá tệp cơ sở dữ liệu
  • Với những người khó theo học bài giảng hay lớp học, dự án này là một cách tốt để trực quan hóa cấu trúc dữ liệu một cách hiệu quả
  • Đây là công cụ rất hữu ích cho người đang học về cơ sở dữ liệu
  • Có người từng viết tài liệu giải thích và sơ đồ hữu ích về định dạng tệp SQLite
  • Công cụ hoạt động tốt