传统关系型数据库和MapReduce的比较

传统关系型数据库和MapReduce的比较

传统关系型数据库 MapReduce
数据量级 GB PB
数据存取 交互式和批处理 批处理
数据更新 多次读写 一次写入,多次读取
结构 静态 动态
完整性
事务 ACID
横向扩展 非线性 线性

MapReduce其实是关系型数据库的补充。MapReduce适用于批量更新大的数据集,而传统关系型数据库适用于点查询和更新。对于小的数据集,传统关系型数据库依靠索引可以进行低延迟的检索,同时也能应付更新操作。但是一旦数据量级上升,(由于数据访问受限于磁道寻址)关系型数据库的B树结构执行更新操作的效率远远小于MapReduce。

结构:静态指定是结构化,动态指的是半结构化或非结构化。RDBMS是在数据库阶段安照具体数据类型处理数据,MapReduce是由用户对数据进行处理。

结构 描述
结构化数据 是有具体格式的数据
半结构化数据 结构松散,可能有一定的格式
非结构化数据 没有特定格式,比如纯文本或图像

完整性:关系型数据库往往是规范的,以保持其数据的完整性且不含冗余的数据。但是MapReduce不需要这样的规范,比如典型的Web服务器日志,每次记录都需要记录客户端的主机名,那么数据中就会多次重复出现这个主机名,也就不满足关系型数据库的规范性,依靠这样的非规范性,MapReduce才可以进行高速流读写操作。

横向扩展:对于MapReduce,程序员需要写map函数和reduce函数,每个函数定义从一个键值对到另一个键值对的映射。这些函数不关注数据集以及其所用集群的大小,可以应用于不同规模的数据集。如果输入的数量级是原先的两倍,那么执行时间也是原先的两倍。SQL查询一般没有此特性。

你可能感兴趣的:(笔记,hadoop)