- Hacker Book, 2006'dan 2025'e kadar Hacker News'un tüm verilerini SQLite formatında koruyan bir proje
- Toplam 46.399.072 gönderi, 1.637 shard içeriyor ve HN'in 19 yıllık kaydını kapsıyor
- Sunucu taraflı bir uygulama yerine WASM'a derlenmiş SQLite kullanıyor; gerektiğinde yalnızca bir kısmını shard olarak indirip gösteriyor
- Web arayüzü üzerinden gönderiler, kullanıcılar ve yorumlar gezilebiliyor; HN'in gerçek zamanlı yapısına benzer bir UI sunuyor
- Üst sıralardaki gönderiler arasında yapay zeka, açık kaynak, teknoloji tarihi ve toplumsal konular gibi çeşitli başlıklar yer alıyor
- Geliştiriciler ve araştırmacılar için internet teknoloji topluluklarının uzun vadeli veri analizi temeli sunan bir kaynak
Hacker Book genel bakış
- Hacker Book, Hacker News'un tüm verilerini SQLite veritabanı olarak sunan bir proje
- Veriler 9 Ekim 2006'dan 28 Aralık 2025'e kadar olan dönemi kapsıyor
- Toplam 46.399.072 öğe (items), 1.637 shard, 8,5 GB boyut içeriyor (sayfanın altındaki bilgiye göre)
- Web sitesine https://hackerbook.dosaygo.com/ adresinden erişilebiliyor
- Arayüz, Hacker News'a benzer yapıda olup gönderi listesi, puanlar, yorum sayısı ve yazar bilgisi gösteriyor
Veri yapısı ve gezinme özellikleri
- Her öğe gönderi başlığı, kaynak alan adı, puan, yazar, yorum sayısı ve gönderim zamanından oluşuyor
- Kullanıcı sayfaları (
view=user&id=) ve gönderi ayrıntı sayfaları (view=item&id=) üzerinden gezinmek mümkün
More bağlantısı ile sayfa bazında ek öğeler yüklenebiliyor
Teknik ayrıntılar
- Veriler SQLite formatında sunulduğu için yerel ortamda sorgulama ve analiz yapılabiliyor
- HN'in tüm geçmişini tek bir veritabanında birleştirerek, araştırmacıların ve geliştiricilerin zaman içindeki trend analizlerini yapmasına olanak tanıyor
- Veri bölümlendirme (sharding) yapısı sayesinde büyük hacimli verilerin verimli biçimde yönetilmesini destekliyor
Projenin önemi
- Hacker News'un 19 yılda birikmiş topluluk bilgisini koruyan bir dijital arşiv işlevi görüyor
- Açık veri erişilebilirliğini artırarak teknoloji tarihi araştırmaları veya topluluk analizlerinde kullanılabiliyor
- “All the HN Belong to You” sloganında olduğu gibi, tüm topluluğun kayıtlarını herkesin keşfedebilmesi için açık hale getiriyor
1 yorum
Hacker News görüşleri
Bu projenin kilit noktası, her şeyin sunucuda değil doğrudan tarayıcı içinde çalışması
SQLite, WASM’a derlenerek kullanılıyor ve 22GB’lık veritabanının tamamını indirmek yerine sayfa için gereken shard düzeyindeki veriler getiriliyor
Ağ panelinde
shard_1636.sqlite.gz,shard_1635.sqlite.gzgibi dosyaların sırayla yüklendiği görülebiliyorBu, eski SQLite.js HTTPVFS hilesini hatırlatıyor ama bu kez range header yerine shard’lanmış dosyalar kullanılıyor
Etkileşimli SQL sorgu arayüzünde sorgunun hangi shard üzerinde çalıştırılacağını doğrudan seçebiliyorsunuz (toplam 1636 tane)
Böyle bir salt okunur VFS, uygun bir API varsa oldukça basit şekilde uygulanabilir
Benim yaptığım VFS örneği burada
Range request kullanan örnek için şu bağlantıya bakılabilir
Zstandard ile sıkıştırılmış SQLite DB desteği için yalnızca şu kütüphaneyi eklemek yeterli
Böyle HTTP range tabanlı fikrin gerçek üretim seviyesinde uygulanmış başka örnekleri var mı merak ediyorum. Potansiyeli büyük görünüyor
VFS desteği gerçekten şaşırtıcı
Bunun Kiwix ile entegre edilebilmesi güzel olurdu
Bu aralar yalnızca çevrimdışı çalışan bir telefon kullanıyorum; Wikipedia, Wiktionary ve 100rabbits sitelerinin tamamına çevrimdışı bakıyorum
Daha fazla sıkıştırılırsa ne kadar küçüleceğini merak ediyorum
“Bu web sitesi scrollbar’ı gasp ettiği için nefret ediyorum” gibi yorumlar muhtemelen birkaç bitte kodlanabilir
select * from items limit 10çalıştırmayı denedim ama shard’ları tek tek dolaştığı için sonuç dönmüyor60 shard’a kadar gidip orada kaldı. Tek bir shard seçildiğinde sonuç anında geliyor
DuckDB, parquet dosyasının yalnızca gereken kısmını HTTP üzerinden okuyabildiği için daha hızlı olabilir
usersveuser_domainstablo hataları, shard filtresi user stats shard olarak değiştirildiğinde düzeliyorSingle-page application (SPA) gibi, belki de bir Single-table application (STA) kavramı ortaya çıkabilir
Tabloyu birden fazla anahtara göre shard’layıp statik dosya olarak sunarsanız, herkese açık veriler için statik HTML gibi dağıtılabilir
Depo 404 olup kaybolmuş
En azından verinin bir kısmının iç yapısına bakmak istiyordum, yazık olmuş
Bende de 404 hatası çıkıyor
Acaba DuckDB gibi sütun bazlı bir store ile SQLite arasındaki trade-off düşünülmüş mü merak ediyorum
Metnin videodan çok daha verimli olduğunu yeniden fark ettim
Aynı miktarda bilgiyi videoya koysanız ne kadar büyük olacağını hayal bile edemiyorum
22GB metni videoya çevirmek yaklaşık 1PB(1000TB) eder
Masa oyunu ya da programlama videolarında en iyisi metin özetini çıkarıp okumak
Bunun .zim dosyası haline getirilip Kiwix gibi çevrimdışı tarayıcılarda görüntülenebilmesi güzel olurdu
Ben bazen “yalnızca çevrimdışı günler” belirleyip öğrendiklerimi derliyorum; Kiwix üzerinden Wikipedia veya StackOverflow’a bakıyorum
Kiwix kütüphanesi tanıtımı
Ben de benzer bir şey yaptım
Reddit’in Project Arctic Shift dump verisini SQLite’a aktaran bir aracı Rust ile yazdım
FTS5 indeksi oluşturmadan ve WAL kullanmadan
--unsafe-modeile içe aktarırsanız, tüm yorumlar ve gönderiler yaklaşık 24 saatte içe aktarılıyor ve yaklaşık 10TB’lık bir DB oluşuyorSQLite’ın JSON özellikleri harika ama ben yükleme sırasında bir kez parse edip normalize etme yolunu seçtim
DB oluşturma hızlı, ancak hemen ardından VACUUM çalıştırılırsa sorgu hızı çok artıyor. Yalnız VACUUM günler sürüyor
Pushshift Importer / Arctic Shift dump bağlantısı