22GB SQLite में बैकअप किया गया Hacker News का 2006–2025 का पूरा लेख और कमेंट आर्काइव
(hackerbook.dosaygo.com)- Hacker Book एक ऐसा प्रोजेक्ट है जो 2006 से 2025 तक के Hacker News के पूरे डेटा को SQLite फ़ॉर्मेट में संरक्षित करता है
- इसमें कुल 46,399,072 पोस्ट, 1,637 shards शामिल हैं, और HN के 19 साल के रिकॉर्ड को समेटे हुए है
- यह सर्वर-साइड ऐप नहीं है, बल्कि WASM में compile किया गया SQLite इस्तेमाल करता है, और ज़रूरत पड़ने पर सिर्फ़ कुछ shards डाउनलोड करके दिखाता है
- वेब इंटरफ़ेस के ज़रिए पोस्ट, यूज़र, कमेंट ब्राउज़ किए जा सकते हैं, और यह HN की रीयल-टाइम संरचना जैसा UI देता है
- शीर्ष पोस्टों में AI, open source, तकनीकी इतिहास, सामाजिक मुद्दे जैसे विविध विषय शामिल हैं
- यह डेवलपर्स और शोधकर्ताओं को इंटरनेट टेक कम्युनिटी के दीर्घकालिक डेटा विश्लेषण के लिए आधार उपलब्ध कराता है
Hacker Book का अवलोकन
- Hacker Book एक प्रोजेक्ट है जो Hacker News का पूरा डेटा SQLite database के रूप में उपलब्ध कराता है
- डेटा 9 अक्टूबर 2006 से 28 दिसंबर 2025 तक की अवधि को कवर करता है
- इसमें कुल 46,399,072 items, 1,637 shards, और 8.5GB आकार शामिल है (पेज के नीचे दी गई जानकारी)
- वेबसाइट https://hackerbook.dosaygo.com/ पर उपलब्ध है
- इंटरफ़ेस Hacker News जैसा है, जिसमें पोस्ट सूची, points, कमेंट की संख्या, और लेखक की जानकारी दिखाई जाती है
डेटा संरचना और ब्राउज़िंग सुविधाएँ
- हर item में पोस्ट शीर्षक, source domain, points, लेखक, कमेंट की संख्या, और पोस्ट करने का समय शामिल है
- यूज़र-आधारित पेज(view=user&id=) और पोस्ट-आधारित डिटेल पेज(view=item&id=) के ज़रिए ब्राउज़ किया जा सकता है
- ‘More’ लिंक के माध्यम से पेज-दर-पेज अतिरिक्त items लोड किए जा सकते हैं
तकनीकी विवरण
- डेटा SQLite फ़ॉर्मेट में उपलब्ध है, इसलिए इसे लोकल एनवायरनमेंट में query और analysis के लिए इस्तेमाल किया जा सकता है
- HN के पूरे रिकॉर्ड को एक single database में एकीकृत करके, शोधकर्ता और डेवलपर समय-आधारित ट्रेंड विश्लेषण कर सकते हैं
- डेटा sharding संरचना बड़े पैमाने के डेटा के कुशल प्रबंधन में मदद करती है
प्रोजेक्ट का महत्व
- यह Hacker News के 19 वर्षों में संचित कम्युनिटी ज्ञान को संरक्षित करने वाले एक डिजिटल आर्काइव की भूमिका निभाता है
- यह open data की accessibility बढ़ाता है, जिससे तकनीकी इतिहास शोध और कम्युनिटी विश्लेषण में इसका उपयोग हो सकता है
- “All the HN Belong to You” स्लोगन की तरह, कम्युनिटी के पूरे रिकॉर्ड को किसी के लिए भी खोजने योग्य बनाकर सार्वजनिक किया गया है
1 टिप्पणियां
Hacker News की राय
इस प्रोजेक्ट की सबसे बड़ी बात यह है कि यह पूरी तरह ब्राउज़र के अंदर चलता है, सर्वर पर नहीं
SQLite को WASM में compile करके इस्तेमाल किया गया है, और पूरी 22GB DB डाउनलोड करने के बजाय पेज के लिए ज़रूरी shard-स्तर का डेटा ही लाया जाता है
Network panel में
shard_1636.sqlite.gz,shard_1635.sqlite.gzजैसी फाइलें क्रम से लोड होती दिखींयह पुराने SQLite.js HTTPVFS ट्रिक की याद दिलाता है, लेकिन इस बार range header की जगह sharded files का इस्तेमाल किया गया है
Interactive SQL query interface में आप सीधे चुन सकते हैं कि किस shard पर query चलानी है (कुल 1636)
इस तरह का read-only VFS सही API हो तो बहुत आसानी से implement किया जा सकता है
मैंने बनाया हुआ VFS उदाहरण यहाँ है
range request इस्तेमाल करने का उदाहरण इस लिंक में देखें
Zstandard-compressed SQLite DB support करने के लिए बस यह library जोड़नी होगी
जिज्ञासा है कि क्या इस तरह के HTTP range-आधारित विचार के production-grade implementation के और उदाहरण हैं। इसमें काफी संभावना दिखती है
VFS support सच में चौंकाने वाला है
अच्छा होगा अगर इसे Kiwix में integrate किया जा सके
मैं आजकल offline-only phone इस्तेमाल कर रहा हूँ, इसलिए Wikipedia, Wiktionary, और 100rabbits साइट सब कुछ offline देखता हूँ
सोच रहा हूँ कि और compression करने पर यह कितना छोटा हो सकता है
“मुझे यह वेबसाइट पसंद नहीं क्योंकि यह scrollbar hijack करती है” जैसे comments शायद कुछ bits में भी encode हो सकते हैं
मैंने
select * from items limit 10चलाया, लेकिन यह shard एक-एक करके scan करता रहा इसलिए result वापस नहीं आयायह 60 shard तक गया और फिर रुक गया। अगर सिर्फ एक shard चुनें तो result तुरंत आ जाता है
DuckDB parquet file के सिर्फ ज़रूरी हिस्से HTTP से पढ़ सकता है, इसलिए शायद ज़्यादा तेज़ होगा
usersऔरuser_domainstable की error shard filter को user stats shard पर बदलने से ठीक हो जाती हैSingle-page application (SPA) की तरह, शायद Single-table application (STA) जैसा idea भी आ सकता है
अगर table को कई keys से shard करके static files की तरह serve किया जाए, तो public data को static HTML की तरह deploy किया जा सकता है
repository 404 होकर गायब हो गई
कम से कम कुछ data का internal structure देखना चाहता था, अफसोस हुआ
मुझे भी 404 error मिल रही है
सोच रहा हूँ क्या DuckDB जैसे columnar store और SQLite के बीच trade-off पर विचार किया गया था
इससे फिर महसूस हुआ कि text, video से कहीं ज़्यादा efficient है
यही ज्ञान अगर video में रखा जाए तो वह कितना बड़ा होगा, कल्पना भी नहीं कर सकता
22GB text को video में बदलें तो लगभग 1PB (1000TB) हो जाएगा
board game या programming videos के लिए तो बस text summary पढ़ लेना बेहतर है
अच्छा होगा अगर इसे .zim file में बनाकर Kiwix जैसे offline browser में देखा जा सके
मैं कभी-कभी “offline-only day” रखता हूँ और अपनी पढ़ाई को organize करता हूँ, तब Kiwix से Wikipedia या StackOverflow देखता हूँ
Kiwix library परिचय
मैंने भी कुछ ऐसा ही किया है
Reddit के Project Arctic Shift dump को SQLite में import करने वाला एक tool Rust में बनाया था
FTS5 index बनाए बिना और WAL के बिना
--unsafe-modeमें import करें तो सारे comments और posts लगभग 24 घंटे में आ जाते हैं और करीब 10TB DB बनती हैSQLite की JSON functionality बढ़िया है, लेकिन मैंने load के समय सिर्फ एक बार parse करके normalize करने का रास्ता चुना
DB build तेज़ है, लेकिन VACUUM तुरंत चलाने पर query speed काफी बढ़ जाती है। हाँ, VACUUM में कई दिन लगते हैं
Pushshift Importer / Arctic Shift dump लिंक