- Hacker Book adalah proyek yang melestarikan seluruh data Hacker News dalam format SQLite dari 2006 hingga 2025
- Terdiri dari total 46.399.072 postingan, 1.637 shard, dan mencakup 19 tahun rekam jejak HN
- Bukan aplikasi server-side, melainkan menggunakan SQLite yang dikompilasi ke WASM, lalu mengunduh hanya sebagian shard saat diperlukan untuk ditampilkan
- Melalui antarmuka web, pengguna dapat menjelajahi postingan, pengguna, dan komentar, dengan UI yang mirip struktur real-time HN
- Postingan teratas mencakup beragam topik seperti AI, open source, sejarah teknologi, dan isu sosial
- Menjadi sumber yang memberi landasan analisis data jangka panjang komunitas teknologi internet bagi pengembang dan peneliti
Gambaran umum Hacker Book
- Hacker Book adalah proyek yang menyediakan seluruh data Hacker News sebagai database SQLite
- Data mencakup periode 9 Oktober 2006 hingga 28 Desember 2025
- Terdiri dari total 46.399.072 item, 1.637 shard, dan berukuran 8,5GB (informasi di bagian bawah halaman)
- Situs web dapat diakses di https://hackerbook.dosaygo.com/
- Antarmukanya mirip Hacker News, menampilkan daftar postingan, poin, jumlah komentar, dan informasi penulis
Struktur data dan fitur penjelajahan
- Setiap item terdiri dari judul postingan, domain sumber, poin, penulis, jumlah komentar, dan waktu penulisan
- Dapat dijelajahi melalui halaman per pengguna (view=user&id=) dan halaman detail per postingan (view=item&id=)
- Melalui tautan ‘More’, item tambahan dapat dimuat per halaman
Detail teknis
- Data disediakan dalam format SQLite, sehingga dapat di-query dan dianalisis di lingkungan lokal
- Dengan menggabungkan seluruh riwayat HN ke dalam satu database, peneliti maupun pengembang dapat melakukan analisis tren berdasarkan periode waktu
- Mendukung pengelolaan data skala besar yang efisien melalui struktur data sharding
Makna proyek ini
- Berperan sebagai arsip digital yang melestarikan 19 tahun pengetahuan komunitas Hacker News
- Meningkatkan aksesibilitas data terbuka, sehingga bisa dimanfaatkan untuk riset sejarah teknologi atau analisis komunitas
- Sesuai slogan “All the HN Belong to You”, seluruh rekam jejak komunitas dibuka agar dapat dijelajahi siapa saja
1 komentar
Komentar Hacker News
Inti proyek ini adalah semuanya berjalan sepenuhnya di dalam browser, bukan di server
SQLite digunakan dengan cara dikompilasi ke WASM, dan alih-alih mengunduh seluruh DB 22GB, sistem ini hanya mengambil data per shard yang dibutuhkan halaman
Di panel jaringan terlihat file seperti
shard_1636.sqlite.gz,shard_1635.sqlite.gzdimuat secara berurutanIni mengingatkan pada trik SQLite.js HTTPVFS sebelumnya, tetapi kali ini memakai file yang di-shard alih-alih range header
Di antarmuka kueri SQL interaktif, kita bisa memilih sendiri shard mana yang akan dijalankan untuk kueri (total 1636)
VFS read-only seperti ini bisa diimplementasikan dengan sangat sederhana jika ada API yang tepat
Contoh VFS yang saya buat ada di sini
Untuk contoh yang memakai range request, lihat tautan ini
Untuk mendukung SQLite DB yang dikompresi dengan Zstandard, cukup tambahkan library ini
Saya penasaran apakah ada contoh lain yang benar-benar mengimplementasikan ide berbasis HTTP range seperti ini pada level produksi. Terlihat sangat menjanjikan
Dukungan VFS ini benar-benar mengagumkan
Akan bagus kalau ini bisa diintegrasikan ke Kiwix
Akhir-akhir ini saya memakai ponsel khusus offline, jadi saya melihat Wikipedia, Wiktionary, dan situs 100rabbits sepenuhnya secara offline
Saya penasaran seberapa kecil ukurannya kalau dikompresi lebih lanjut
Komentar seperti “Saya tidak suka situs web ini karena membajak scrollbar” rasanya bisa dienkode hanya dengan beberapa bit
Saya mencoba menjalankan
select * from items limit 10, tetapi hasilnya tidak kembali karena ia menelusuri shard satu per satuSampai shard ke-60 lalu berhenti. Kalau hanya menentukan satu shard, hasilnya langsung keluar
DuckDB tampaknya akan lebih cepat karena bisa membaca hanya bagian yang diperlukan dari file parquet melalui HTTP
Error pada tabel
usersdanuser_domainsbisa diatasi dengan mengganti filter shard ke shard statistik penggunaSeperti Single-page application(SPA), mungkin bisa muncul konsep Single-table application(STA)
Jika tabel di-shard dengan beberapa kunci lalu disajikan sebagai file statis, data yang boleh dipublikasikan bisa didistribusikan seperti HTML statis
Repositorinya hilang dengan 404
Saya ingin setidaknya melihat struktur internalnya walaupun hanya sebagian datanya
Saya juga mendapat error 404
Saya penasaran apakah trade-off antara store kolumnar seperti DuckDB dan SQLite sudah dipertimbangkan
Ini kembali mengingatkan saya bahwa teks jauh lebih efisien daripada video
Bahkan sulit membayangkan seberapa besar ukurannya jika jumlah pengetahuan yang sama dimasukkan ke dalam video
Jika 22GB teks diubah menjadi video, ukurannya sekitar 1PB(1000TB)
Untuk video board game atau pemrograman, lebih baik cukup membaca ringkasan teksnya
Akan bagus kalau ini dibuat menjadi file .zim agar bisa dibuka di browser offline seperti Kiwix
Saya kadang menetapkan “hari khusus offline” untuk merapikan hal-hal yang saya pelajari, dan memakai Kiwix untuk merujuk ke Wikipedia atau StackOverflow
Pengenalan library Kiwix
Saya juga pernah membuat sesuatu yang mirip
Saya membuat tool Rust untuk mengimpor dump Project Arctic Shift dari Reddit ke SQLite
Tanpa membuat indeks FTS5 dan mengimpor dengan
--unsafe-modetanpa WAL, seluruh komentar dan postingan bisa diimpor dalam sekitar 24 jam dan menghasilkan DB sekitar 10TBFitur JSON SQLite keren, tetapi saya memilih mem-parsing sekali saat load lalu menormalkannya
Membangun DB memang cepat, tetapi kalau langsung menjalankan VACUUM, kecepatan kueri menjadi jauh lebih cepat. Hanya saja VACUUM memakan waktu beberapa hari
Pushshift Importer / tautan dump Arctic Shift