大型搜索引擎使用哪些数据库技术?

rko*_*egi 32 database-design full-text-search

有谁知道谷歌或雅虎如何针对非常非常大量的数据执行关键字搜索?他们为此使用了什么样的数据库或技术?

这需要几毫秒的时间,但它们有超过 10 亿页被索引。

ype*_*eᵀᴹ 34

鸽子

Google 搜索技术的核心是PigeonRank™,这是一个由 Google 创始人 Larry Page 和斯坦福大学的 Sergey Brin 开发的网页排名系统:

在此处输入图片说明

基于 BF Skinner 的突破性工作,Page 和 Brin 推断,低成本的鸽子集群 (PC)可以比人工编辑器或基于机器的算法更快地计算网页的相对价值。虽然 Google 有数十名工程师每天致力于改进我们服务的各个方面,但 PigeonRank 继续为我们所有的网络搜索工具提供基础。

为什么 Google 的专利 PigeonRank™ 效果如此之好

PigeonRank的成功主要依赖于国内的鸽子的优越训练能力(科伦巴利维娅)识别物体的出众能力,无论空间取向。常见的灰鸽可以轻松区分仅显示最细微差异的项目,这种能力使其能够从数千个相似页面中选择相关网站。

通过在密集的集群中收集成群的鸽子,谷歌能够以优于传统搜索引擎的速度处理搜索查询,传统搜索引擎通常依靠猛禽、育雏母鸡或缓慢移动的水禽来进行相关性排名。

搜索查询提交给 Google 时,它​​会被路由到数据合作社,在那里以极快的速度监控 Flash 结果页面。当集群中的一只鸽子观察到相关结果时,它会用它的喙撞击一根涂有橡胶的钢棒,这会将页面的 PigeonRank 值指定为 1。每啄食一次,PigeonRank 就会增加。那些接收最多啄食的页面将返回到用户结果页面的顶部,其他结果按啄食顺序显示。

  • 注意:此页面发布于愚人节 - 2002 (6认同)

Aar*_*and 21

我相信有一些事情的组合:

  • 严肃的硬件
  • 很多 - 数据分布和复制到许多节点和不同的数据中心

    • (实际上在 Google 的情况下,至少我相信他们有成千上万台真正的低端服务器)
  • 许多常见查询的结果都被缓存了,注意它们如何预先填充潜在的搜索你知道你以前从未搜索过的东西;他们正在预测您可能会搜索的内容,并希望他们已经预先计算并缓存了您的结果。在很多情况下,他们确实这样做了 - 今天您可以在 Google 上提出的许多搜索都没有在您之前的某个人询问过。当他们确实得到一个新的搜索短语时,他们可能会使用类似自由文本搜索的东西——我希望在第一次抓取页面时从语义上提取关键字,而不是在您搜索它们后尝试在文档中查找关键字. 当然,他们必须定期使这些缓存失效,重新计算页面排名,


JNK*_*JNK 19

重要的是要记住关于谷歌的几件事:

  • 他们的数据库是专有的BigTable——它是由 GOOGLE定制设计的,完全满足他们的需求

  • 他们的专有数据库建立在他们专有的文件系统——谷歌文件系统之上——这也是由 GOOGLE设计的,可以使用普通的商品硬件轻松扩展。正如 Aaron 在他的回答中提到的,他们拥有大量的普通服务器,而不是少数非常强大的服务器。

他们在多台机器上存储单独的表,作为一种加快访问速度的方式——他们的软件知道哪些数据在哪台机器上,而不是通过磁盘来定位它,可以直接将相关信息发送到服务器。


Nim*_*sky 11

Google 不使用传统的关系数据库技术。它开发了自己的技术,大表和地图减少。原始研究论文在这里:Big TableMap/Reduce。同样令人感兴趣的是SSTable,排序字符串表

类似的技术现在用于hadoopNoSQL 数据库


Tod*_*ett 9

阅读 Steven Levy 的“ In The Plex:Google 如何思考、工作和塑造我们的生活”。这本书是关于谷歌所有事物的引人入胜的读物,并且确实在高层次上讨论了搜索背后的一些技术和工程。Aaron 在他的回答中总结得非常好,Levy 的书将为您提供有关他们如何做的更多细节。