1 puan yazan GN⁺ 2025-02-08 | 1 yorum | WhatsApp'ta paylaş
  • 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.com dosyası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ğini redbean-3.0.0-cosmos.com içine zip olarak yerleştirme şeklindedir
    • Dahil edilen zipitup.py Python 3.6+ betiğiyle de derleme yapılabilir
  • Geliştirme sırasında redbean-3.0.0-cosmos.com -D files ile uygulama files alt 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

1 yorum

 
GN⁺ 2025-02-08
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/

    • Onur duydum :) Bunu yaparken “SimonW'nin hoşuna gidebilecek bir şey gibi” diye düşünmüştüm. Paylaştığın harika LLM deneyleri ve yazıları için teşekkürler
  • 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

    • Evet, dosya biçimi okunması kolay! Bir oturuşta birkaç saat içinde reader implementasyonuna kadar yapmıştım
      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...
    • Tam bugün bunu denedim ve faydalıydı
  • 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

    • Fareyle üzerine gelince sayfa türü title özelliği olarak görünüyor, bu yüzden renk şeması anlaşılabiliyor ama çok belirgin değil
      Bü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ı veriyor

  • Bir 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