搜索引擎google、baidu数据存储方式
本主题由 pps 创建于 2009-10-24 15:05:58全球第一牛站google,能够如此快速的对搜索的关键字做出反映,让人赞不绝口,在看google earth,goole map等大量的图形数据。这些数据如何存储的呢?一直让人感觉很神秘。相传,google最牛的技术,就是让一大批普通机器,配置成大型的集群,来应对 google的海量存储。
但,具体如何存储呢?
google的存储为GFS(Google file system)分布式存储文件系统,多读少写的数据如大索引文件,google map地图文件, 静态网页等采用bigtable来存储,bigtable是一种弱关系型存储系统,建立在GFS之上,字段并不满足关系数据库范式中的原子性等,而是可根 据时间戳来存储单个数据的多版本,列分为列簇(column family),可把一系列相关的列定义为一个列簇。GFS的数据存储是分块(block) 存储的,一个文件被分成64M/block的若干块,可同时往多个数据服务器插入,而下载时,可同时从多个数据服务器拿一个文件的不同部分,这就提高了数 据的吞吐效率。此外GFS的文件采用分段压缩机制,即若干block作为一个压缩单元进行压缩,而非整个文件进行全压缩,这样可以在读取文件时边读边解压 缩。bigtable中也可以建立列的索引,理想情况下一次I/O预先加载索引,然后再一次I/O定位磁盘中的数据,然后作顺序读来载入数据。这样比一般 关系数据库的载入速度要快,如果我没有记错的话,一般关系数据库定位数据至少需要4次左右的磁盘I/O。
GFS适合海量数据存储,而bigtable适合弱关系型数据的存储。
至于百度,百度在数据操作上,网站方面用的mysql,但百度在mysql的源码基础上做了一些特定的优化。
在数据存储介质上,百度有些地方用的是SD卡,但SD卡同样只适合于多读少写的应用场合,否则SD卡寿命很快耗尽,这样比物理操作的磁盘要高效很多。
任何东西要看具体应用来讲,关系型数据库适合于逻辑,业务复杂的企业级系统。对稳定性,可扩展性,安全性,容错性,事务性要求比较高的场合采用oracle,sqlserver等绝对没错。
放心注册,GeeKaa不会虚耗你半点时间,你只会发现更多乐趣。 | 立即注册 |