HN’de Tanıtıldı: SQLite Disk Sayfası Gezgini
(github.com/QuadrupleA)- SQLite Page Explorer, bir SQLite veritabanını SQLite'ın gördüğü şekilde disk sayfası düzeyinde gezebilen küçük bir GUI uygulamasıdır
- Geliştiricilerin genelde çalıştığı tablo·satır·SQL gibi şema düzeyi yerine sayfa düzeyini göstererek indekslerin gerçek disk yapısını ve depolama verimliliğini incelemeyi sağlar
- redbean, cosmopolitan ve αcτµαlly pδrταblε εxεcµταblε kullanılarak 6.5MB tek bir çalıştırılabilir dosya halinde Windows, Linux, MacOS, çeşitli BSD sistemleri ile ARM64 ve x64 üzerinde yerel olarak çalışır
- Çalıştırılabilir dosya, Lua kodu ve veritabanı ikili biçim ayrıştırıcısı gibi bileşenleri içeren bir zip dosyası da olup, veritabanı dosyasını sürükleyip bıraktığınızda veya konsoldan çalıştırdığınızda uygulama bir tarayıcı sekmesinde açılır
- APE tarzı çalıştırılabilir dosyalar, tarayıcı veya işletim sistemi virüs tespitinde yanlış pozitif üretebilir ve 500MB üzerindeki büyük veritabanlarında en üst görünümün yüklenmesi yavaş olabilir
SQLite sayfalarını doğrudan gösteren GUI
- SQLite Page Explorer, SQLite veritabanlarını “page by page” gezmek için hazırlanmış küçük bir GUI uygulamasıdır
- SQLite ve çoğu veritabanı, verileri genellikle 4KB boyutundaki disk blok sayfalarında saklar; bu yapı okuma ve yazmayı hızlandırmak içindir
- Tipik geliştirici çalışmaları tablo, satır ve SQL gibi şema düzeyinde yürütülürken, bu araç SQLite'ın gördüğü sayfa düzeyine bakmayı sağlar
Sayfa düzeyi gezinmeyle görülebilecekler
- İndekslerin disk üzerinde gerçekte nasıl göründüğünü inceleyebilirsiniz
- İndeksler temelde ayrı küçük tablolar gibi saklanır
- Veriyi daha kompakt biçimde saklama yollarını görebilir, bunu sorguları ve uygulamaları hızlandırmaya bağlayabilirsiniz
- Şema düzeyinde görünmeyebilecek sorunları ve verimsizlikleri bulmaya yardımcı olur
- Dosya sistemleri ile veritabanlarının temelindeki önemli veri yapılarından biri olan B-Tree için sezgisel bir anlayış kazandırır
Tek çalıştırılabilir dosyayla her yerde çalışma
- redbean, cosmopolitan ve αcτµαlly pδrταblε εxεcµταblε kullanılarak tek bir 6.5MB çalıştırılabilir dosya olarak dağıtılır
- Windows, Linux, MacOS ve çeşitli BSD sistemlerinde çalışır; hem ARM64 hem de x64 desteklenir
- Çalıştırılabilir dosya, uygulamayı çalıştıran Lua kodunu, veritabanı ikili biçim ayrıştırıcılarını ve diğer bileşenleri içeren bir zip dosyasıdır
Kurulum ve çalıştırma yöntemi
- Sürüm sayfasından
sqlite-page-explorer.comdosyasını indirin - Unix benzeri sistemlerde
chmod +xçalıştırın - Veritabanı dosyasını çalıştırılabilir dosyanın üzerine sürükleyin veya konsolda şu şekilde çalıştırın
sqlite-page-explorer.com mySqliteDatabase.db
- Uygulama bir tarayıcı sekmesinde açılır
- İşiniz bittiğinde konsolda Ctrl-C tuşuna iki kez basın
Dikkat edilmesi gerekenler ve geliştirme biçimi
- APE çalıştırılabilir dosyaları, tarayıcı veya işletim sistemi virüs tespitinde yanlış pozitif oluşturabilir
- llamafile gibi projeler de aynı poliglot ikili tekniğini kullanır
- İnternetten indirilen dosyalar için her zamanki dikkat gereklidir
- 500MB'tan büyük veritabanlarında tüm sayfaları okuyan en üst görünümün yüklenmesi yavaş olabilir
- Derleme süreci,
files/içeriğiniredbean-3.0.0-cosmos.comiçine zip olarak yerleştirme şeklindedir- Dahil edilen
zipitup.pyPython 3.6+ betiğiyle de derleme yapılabilir
- Dahil edilen
- Geliştirme sırasında
redbean-3.0.0-cosmos.com -D filesile uygulamafilesalt dizininden servis edilebilir; böylece her seferinde zip'i yeniden oluşturmak gerekmez - Proje, bir redbean deneyi ile Lua'nın ilk kullanım deneyiminin parçasıydı ve kodun daha düzenli hale getirilmesi için hâlâ alan var
- Bir şablon sistemi, dize birleştirme ve
Write()çağrılarını azaltmaya yardımcı olabilir - Son sekme kapandığında konsolu otomatik kapatma ya da dev veritabanlarında kullanıcı onayı öncesinde yaklaşık 10.000 sayfada durma gibi iyileştirme fikirleri var
- PR'ler memnuniyetle karşılanır
- Bir şablon sistemi, dize birleştirme ve
1 yorum
Hacker News yorumları
Gerçekten harika. Buraya animasyonlu GIF ekran görüntüsünü koydum: https://simonwillison.net/2025/Feb/6/sqlite-page-explorer/
Harika! SQLite dosya biçimi dokümantasyonunu yanına alıp bir SQLite dosyasını parse eden kodu kendin yazmaya başlamak şaşırtıcı derecede kolay
Bu projenin yaptığına benziyor ve README'deki “Why?” bölümünde yazan nedenlerden dolayı şiddetle tavsiye ederim
https://www.sqlite.org/fileformat.html
Görselleştirme aracı da biraz var ama özgün yazıdaki yazılımdan çok daha az özelliğe sahip: https://www.nayuki.io/page/sqlite-database-file-visualizatio...
Gerçekten etkileyici! Geçmişte SQLite'ın iç yapısıyla uğraşmış biri olarak, böyle bir çalışmanın ve deneylerin hiç de küçük iş olmadığını biliyorum
Bununla ilgili olarak yakın zamanda sqlite-repr [1]'i gördüm; Dioxus ile yapılmış ve SQLite görselleştirmesine ilginç bir yaklaşım sunuyor
[1] https://torymur.github.io/sqlite-repr/
10 yıldan da önce bir güvenlik aracı yaparken böyle bir şey yapmıştım. Bunu deneyince sıkı sıkıya tasarlanmış bir motoru daha çok seviyorsun
Sadece bir gezgin ya da temel bir kütüphane olsa bile eğlenceli olacağını hep düşünmüştüm; özellikle MIT lisansıyla yayımlandığını görmek sevindirici
Harika görünüyor, iyi yapılmış
İlk ekrana bir renk lejantı eklemek iyi olabilir. Başta renklerin ne anlama geldiğini anlayamadım
Büyük veritabanlarında biraz zorlanıyor gibi. 3,6 GB ve 942719 sayfalıktı; sayfaları bölerek göstermek iyi olabilir
titleözelliği olarak görünüyor, bu yüzden renk şeması anlaşılabiliyor ama çok belirgin değilBüyük veritabanlarında yavaşlaması da doğru. Sayfaları “sunucu tarafında” dolaştığı için yüz binlerce sayfa olunca zaman alıyor
İdeal olarak gerçek zamanlı kaydırmalı sayfa aralığı API'si iyi olurdu, ama basitçe “sonraki 10 bin sayfayı göster” gibi bir yöntem de mümkün olabilir
Güzel proje, ancak çalıştırılabilir dosyayı çalıştırınca
"failed to run lua code: /index.lua:3: module 'utils' not found:"hatası veriyorBir dersi ya da kursu sonuna kadar takip edecek kadar disiplinli olmayan biri olarak, içeride neler olduğunu ve verileri daha verimli yapılandırmanın yollarını görsel olarak anlamak için gerçekten çok iyi buldum
Yakın zamanda SQLite dosya biçimini açıklayan bir yazı yazdım ve faydalı olabilecek diyagramlar da ekledim. İşe yarayabilir
https://blog.jabid.in/2024/11/24/sqlite.html
SQLite kaynak kodunda, veritabanı dosyasının içine bakmak için iyi bir showdb adlı CLI aracı bulunuyor
Harika. Veritabanlarını öğreniyorum ve çok yardımcı oluyor