GOOGLE“在垃圾中寻找黄金”——Page Rank
1.Google的低成本之道
- ○不使用超级计算机,不使用存储(淘宝的去i,去e,去o之路)
- ○大量使用普通的PC服务器(去掉机箱,外设,硬盘),提供有冗余的集群服务
- ○全世界多个数据中心,有些附带发电厂
- ○运营商向Google倒付费
2.Google面对的数据和计算难题
- 大量的网页如何存储?
Google的爬虫每天在全世界各个服务器里面爬到的很多网页,这些网页肯定不是百万千万这个级别的。这么大量的数据如何存储呢?如果是传统的企业来说是买一个很大的存储空间,里面有成千上万的硬盘,把数据放到里面去。但是性能跟价格的曲线是指数级上升的。所以Google根本不会考虑这个方案。一般说Google会把网页分散到各个PC服务器里进行存储。一般来说Google的服务器是根本没有硬盘的,它的所有的网页的资讯都是放在内存里面来加快它的检索速度。这时候要是内存损坏岂不是损失很大?对此Google采用冗余的方式,把数据写到文件系统里面,并不是只写一个节点,使得某一个节点损坏也损失不大。(GFS(Google File System),即把网页分散到各个节点存储,并提供冗余,防止节点失败)
- 搜索算法
在Oracle中搜索关键字,如在某字段中检索关键字,但这种查询是不能利用索引的,那么在没有索引的情况下就必须对全表扫描,这个速度是很慢的。对于Google来说,如果所有表格是放在一个大表里面,那么这个量就不是多少百万行的问题,而是多少亿行的问题。这种全表扫描速度是很慢的,而Google只用不到一秒。(倒排索引技术)
- Page-Rank计算问题
在关键字检索出来的结果是很多的,那么该向用户推荐哪些呢?如果推荐广告等用户其实并不想看到的信息,那么这个用户体验是很糟糕的。其实在Google刚创立就发明了一种方法,它可以对网页的价值进行排名——就是Page-Rank。
3.倒排索引
在一个表面上看起来是需要全表扫描的情况下,我们可以对全文进行索引,但这个关键词或者说keyword并不是这个文章内容的全体,而是首先对这个文章进行分词。这样就可以快速进行关键词索引的检索。但汉语分词是个难区,这一点研究Google未必比百度做得好。
4.Page-Rank
这是Google最核心的算法,用于给每个网页价值评分,是Google“在垃圾中找黄金”的关键算法,这个算法成就了今天的Google
根据链接关系来判断这个页面的价值,如果一个页面被指向得越多越重要。另外如果一个Page-Rank价值比较高的页面指向你,和一个Page-Rank价值比较低的页面指向你,这个价值也是不同的。但是好几万亿个元素的矩阵乘法任何一台计算机都是不能够算的。要是多台电脑就可以解决这个问题,这就是Map-reduce。