hadoop和传统rdbms的比较(翻译)

翻译自:hadoop权威指南;

 

和RDBMS的比较:

          为什么我们不能在许多磁盘上运用数据库机型大规模批量分析?为什么MapReduce是不可或缺的?

          问题的答案来自于另一个磁盘的发展趋势:寻道时间的提高远不如传输速率的提高。寻道是磁盘头移动到指定位置的过程,并在其读写数据。它使磁盘操作具有延迟效应,而传输速率仅受限于磁盘带宽。

          如果数据的访问模式主要是由查询而构成的,它将在大部分的数据集的读写上花上相当长的时间,相比于流式读写(工作效率取决于传输速率),另一方面,如果是更新数据集的一小部分记录,传统的B-Tree(传统的关系性数据库的组织结构)表现的很好,但如果是更新一数据库的大部分数据,B-Tree的效率就远不如MapReduce,后者通过排序/合并来重建数据库。

          从许多方面来讲,MapReuce似乎是RDBMS的补充。在需要分析整个数据集,批量查询,特别是即时指定分析的这些问题上,MapReduce的是很适合的,RDBMS适用于在那些为了提供低延迟检索和更新时间而建立索引的数据集上进行点查询和更新。而MapReduce的应用场景是那些数据一次写入,多次读取的应用程序,不同的是关系型数据库适用于数据集的不断更新。

          MapReduce和RDBMS的另一个不同点是在数据集上操作的结构化问题,结构化数据是能被有机整合到定义好的格式实体中的数据,像XML文档或者符合预定义好的模式的数据库表。这是RDBMS的范畴。半结构化数据,另一方面,是松散的,他们虽然有一个模式,但他们常常被忽略,所以仅作为结构化数据的引导:比如,电子表格,由网状单元组成,虽然这些单元是存储数据的地方。非结构化数据没有指定的内部结构:纯文本或者图片;MapReduce在半结构和结构化的数据上表现的性能非常好,因为它被设计在处理的时间内解释数据,换据话讲,键/值对不是数据的固有属性,而是被分析者有机的设计出来的。

          关系型数据经常是标准化,以保证其完整性,并且删除冗余的。而标准化给MapReduce带来的是问题,因为它的读取本就是一个非本地化操作,并且MapReduce的一个核心设想就是使高速流式读取成为可能。

          web服务器日志就是很好的非标准化数据集(比如,客户端每次都被指定完整的主机名,即使同一客户端会出现很多次),这就是为什么所有的日志都很适用于MapReduce进行分析。

          MapReduce是一个线性扩展的变成模型。程序员编写两个函数——一个Map,一个Reduce——它们都是定义了从key到value的映射。这些函数的运行和数据的大小及经营的集群无关,所以它们能不加改变的在小型数据集或大规模数据上运行。更重要的是,如果你的输入扩大至原先的2倍,那么运行时间也会变成原来的两倍,但是如果你同时扩大集群规模同样的大小,那么运行时间就会和原先的一致。这就不是传统RMBMS的查询了。

          然而,随着时间的推移,MapReduce和Rdbms的差别逐渐变得模糊。无论是传统关系型数据库融入了一些MapReduce的想法,还是基于MapReduce的高级查询语言的开发,都使MapReduce接近于传统的数据库。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值