【发布时间】:2019-08-16 14:44:45
【问题描述】:
在他们最初的Google Paper Sergey Brin 和 Lawrence Page 解释说,他们没有将抓取网页的 HTML 内容直接保存在存储库中,因为他们想节省一些硬盘空间。这是那段:
4.2.2 存储库
存储库包含每个网页的完整 HTML。每个页面都使用 zlib 压缩(参见 RFC1950)。的选择 压缩技术是速度和压缩之间的权衡 比率。我们选择 zlib 的速度而不是显着的改进 bzip 提供的压缩。 bzip的压缩率是 与 zlib 的 3 比 1 相比,存储库上大约 4 比 1 压缩。在存储库中,文档存储在一个之后 其他并以 docID、长度和 URL 为前缀,如 图 2. 存储库不需要使用其他数据结构 为了访问它。这有助于数据一致性并使 开发更容易;我们可以重建所有其他数据结构 仅来自存储库和列出爬虫错误的文件。
显然,他们使用压缩算法(在他们的例子中是 zlib)首先压缩数据,然后将其保存在存储库中。压缩数据实际上是可以直接保存在文件系统上的二进制数据。元数据(页面标题、页面大小、链接等)可以通过文件系统上二进制文件的链接保存在 DB 中。这听起来是个好主意,但如果我们谈论的是抓取数十亿页面的搜索引擎,那么这种保存数据的方式可能会有一些缺点。
今天最好的方法是什么?如果你想建立一个可以处理数百万网站内容的大型搜索引擎,你会在哪里以及如何保存爬取页面的 HTML 内容?
【问题讨论】:
标签: web-crawler bigdata cluster-computing search-engine data-storage