Hadoop 和关系型数据库的比较
问题:为什么不用基于很多磁盘的数据库来做大型数据存储和数据分析?在有关系型数据库存在的前提下,hadoop存在的意义是什么?
一个事实
磁盘设备的发展趋势,seek的速度没有 transfer的速度提升的快,seek对应着磁盘操作的时延,transfer对应着磁盘带宽
这就是说,如果seek的是对于数据集的小部分数据,基于B-Tree的关系型数据库可以work well。但是当seek总是对于数据集中的大部分数据时,RDBMS的效率就会低于hadoop的MapReduce(sort/merge).
MapReduce等其他Hadoop处理模型,随着数据的size线性scale。数据是分布式存储的,方法是并行的。如果intput数据量变成二倍,一个job就会慢两倍,但是如果同时集群规模也扩成两倍,那么job计算时间跟以前一样。。。这不废话么。
两种系统比较
- RDBMS更适用于更新数据,查询部分数据。hadoop更适用于“一次写入,多次读取”的数据
- hadoop操作的是半结构化数据或者是非结构化数据,RDBMS操作的是结构化数据
- RDBMS通常可以在维持自身数据的完整性的同时,去掉冗余数据
RDBMS VS HADOOP
项目 | RDBMS | MapReduce |
---|---|---|
data size | G | P |
access | 交互式和批处理 | 批处理 |
update | 读写多次 | 一次写入,多次读取 |
transactions | ACID | none |
structure | ||
integrity | high | low |
scaling | 非线性 | 线性 |
目录
用 [TOC]
来生成目录: