1 poin oleh GN⁺ 2025-02-08 | 1 komentar | Bagikan ke WhatsApp
  • SQLite Page Explorer adalah aplikasi GUI kecil yang memungkinkan Anda menjelajahi database SQLite per halaman disk, sesuai cara SQLite melihatnya
  • Alih-alih menampilkan level skema seperti tabel, baris, dan SQL yang biasanya ditangani developer, alat ini menampilkan level halaman, sehingga Anda bisa melihat struktur disk nyata dan efisiensi penyimpanan indeks
  • Menggunakan redbean, cosmopolitan, dan αcτµαlly pδrταblε εxεcµταblε, aplikasi ini berjalan native di Windows, Linux, MacOS, berbagai BSD, ARM64, dan x64 sebagai satu file executable 6,5MB
  • File executable tersebut juga merupakan file zip yang memuat kode Lua, parser format biner database, dan lainnya; jika file database diseret ke executable atau dijalankan dari konsol, aplikasi akan terbuka di tab browser
  • File executable dengan metode APE dapat memicu false positive pada deteksi virus browser atau sistem operasi, dan untuk database besar di atas 500MB, pemuatan tampilan teratas mungkin lambat

GUI untuk melihat langsung halaman SQLite

  • SQLite Page Explorer adalah aplikasi GUI kecil untuk menjelajahi database SQLite “page by page”
  • SQLite dan sebagian besar database biasanya menyimpan data dalam halaman blok disk berukuran 4KB, sebuah struktur untuk mempercepat baca dan tulis
  • Pekerjaan developer pada umumnya dilakukan pada level skema seperti tabel, baris, dan SQL, tetapi alat ini memungkinkan Anda melihat level halaman sebagaimana dilihat SQLite

Hal yang bisa dilihat dengan eksplorasi level halaman

  • Anda bisa memeriksa seperti apa indeks sebenarnya di disk
    • Indeks pada dasarnya disimpan seperti tabel kecil yang terpisah
  • Anda bisa mempelajari cara menyimpan data secara lebih ringkas, yang dapat berhubungan dengan membuat kueri dan aplikasi lebih cepat
  • Membantu menemukan masalah dan inefisiensi yang mungkin tidak terlihat pada level skema
  • Memberi intuisi tentang B-Tree, struktur data penting yang menjadi dasar filesystem dan database

Berjalan di mana saja sebagai satu file executable

  • Didistribusikan sebagai satu file executable 6,5MB menggunakan redbean, cosmopolitan, dan αcτµαlly pδrταblε εxεcµταblε
  • Berjalan di Windows, Linux, MacOS, dan berbagai BSD, serta mendukung ARM64 dan x64
  • File executable ini juga merupakan file zip yang berisi kode Lua untuk menjalankan aplikasi, parser format biner database, dan lainnya

Cara instalasi dan menjalankan

  • Unduh sqlite-page-explorer.com dari halaman rilis
  • Di sistem keluarga Unix, jalankan chmod +x
  • Seret file database ke executable, atau jalankan dari konsol seperti berikut
    • sqlite-page-explorer.com mySqliteDatabase.db
  • Aplikasi akan terbuka di tab browser
  • Setelah selesai digunakan, tekan Ctrl-C dua kali di konsol

Catatan dan cara pengembangan

  • File executable APE dapat memicu false positive pada deteksi virus browser atau sistem operasi
    • Proyek seperti llamafile juga menggunakan teknik biner polyglot yang sama
    • Tetap perlu berhati-hati seperti biasa terhadap file yang diunduh dari internet
  • Jika memasukkan database besar di atas 500MB, pemuatan tampilan teratas yang membaca semua halaman mungkin lambat
  • Build dilakukan dengan memasukkan isi files/ ke dalam redbean-3.0.0-cosmos.com sebagai zip
    • Build juga bisa dilakukan dengan skrip Python 3.6+ zipitup.py yang disertakan
  • Saat pengembangan, aplikasi bisa disajikan dari subdirektori files dengan redbean-3.0.0-cosmos.com -D files, sehingga tidak perlu membuat ulang zip setiap kali
  • Proyek ini merupakan bagian dari eksperimen redbean dan penggunaan Lua pertama, sehingga kodenya masih punya ruang untuk dirapikan
    • Sistem template dapat membantu mengurangi penggabungan string dan pemanggilan Write()
    • Ada ide perbaikan seperti otomatis menutup konsol saat tab terakhir ditutup, atau berhenti di sekitar 10.000 halaman pada database raksasa sebelum meminta konfirmasi pengguna
    • PR diterima dengan senang hati

1 komentar

 
GN⁺ 2025-02-08
Komentar Hacker News
  • Keren sekali. Saya mengunggah cuplikan layar GIF animasi di sini: https://simonwillison.net/2025/Feb/6/sqlite-page-explorer/

    • Sebuah kehormatan :) Saat membuat ini saya sempat berpikir, “sepertinya ini sesuatu yang akan disukai SimonW”. Terima kasih sudah sering membagikan eksperimen dan tulisan LLM yang luar biasa
  • Keren! Ternyata cukup mudah untuk mulai menulis sendiri kode yang mem-parsing file SQLite sambil membuka dokumentasi format file SQLite di samping
    Sangat direkomendasikan karena mirip dengan cara kerja proyek ini, dan karena alasan-alasan yang tertulis di bagian “Why?” pada README
    https://www.sqlite.org/fileformat.html

    • Betul, format filenya mudah dibaca! Saya pernah duduk dan dalam beberapa jam sudah sampai mengimplementasikan reader
      Ada juga sedikit alat visualisasi, tetapi fiturnya jauh lebih sedikit dibanding perangkat lunak pada postingan utama: https://www.nayuki.io/page/sqlite-database-file-visualizatio...
    • Kebetulan saya baru memakainya hari ini, dan itu berguna
  • Benar-benar mengesankan! Sebagai orang yang pernah menyentuh struktur internal SQLite sebelumnya, saya tahu pekerjaan dan eksperimen seperti ini sama sekali bukan hal kecil
    Terkait ini, saya baru-baru ini melihat sqlite-repr [1], dibuat dengan Dioxus, dan menunjukkan pendekatan yang menarik untuk visualisasi SQLite
    [1] https://torymur.github.io/sqlite-repr/

  • Saya pernah melakukan hal seperti ini saat membuat alat keamanan lebih dari 10 tahun lalu. Melakukannya membuat saya semakin menghargai engine yang dirancang dengan sangat rapi
    Saya selalu berpikir penjelajah seperti ini atau bahkan sekadar pustaka dasarnya akan menyenangkan, jadi saya senang melihat ini dirilis dengan lisensi MIT

  • Terlihat keren, dibuat dengan baik
    Akan bagus kalau ada legenda warna di layar pertama. Awalnya saya tidak tahu arti warna-warna itu
    Sepertinya agak kewalahan pada basis data besar. Saya mencoba yang 3.6GB dengan 942719 halaman, dan mungkin akan lebih baik jika halaman-halamannya ditampilkan bertahap

    • Saat diarahkan dengan mouse, jenis halamannya memang muncul lewat atribut title, jadi sistem warnanya bisa diketahui, tetapi memang tidak terlalu jelas
      Memang benar basis data besar jadi lambat. Halamannya ditelusuri dari “sisi server”, jadi kalau ada ratusan ribu tentu butuh waktu
      Idealnya akan bagus jika ada API rentang halaman untuk scroll real-time, tetapi pendekatan sederhana seperti “lihat 10 ribu halaman berikutnya” juga tampaknya memungkinkan
  • Proyek yang bagus, tetapi saat menjalankan executable muncul error "failed to run lua code: /index.lua:3: module 'utils' not found:"

  • Sebagai orang yang tidak cukup disciplined untuk menuntaskan kuliah atau kelas sampai akhir, ini sangat bagus untuk memahami secara visual apa yang terjadi di dalam dan bagaimana menata data dengan lebih efisien

  • Baru-baru ini saya menulis artikel yang menjelaskan format file SQLite, dan saya juga menambahkan diagram yang mungkin membantu. Mungkin berguna
    https://blog.jabid.in/2024/11/24/sqlite.html

  • Di source SQLite ada alat CLI bernama showdb yang bagus untuk mengintip isi file basis data

  • Keren. Saya sedang belajar basis data dan ini sangat membantu