MapReduce和关系型数据库的对比以及如何理解规范性数据需要非本地操作

原创 2011年01月24日 12:06:00

根据Hadoop权威指南一书,总结了

MapReduce  与 关系型数据库的区别:

 

1 数据访问模式受限于磁盘寻址,磁盘寻址时间提高速度远远小于数据传输速率提高速度。对于超大规模数据(以PB为单位)必须考虑使用其他方式。关系型数据库使用B树结构进行数据的更新查询操作,对于最大到GB的数据量,一般相对数据量较小,效果很好。但是大数据量时,B树使用排序/合并方式重建数据库以更新数据的效率远远低于MapReduce。

 

2 MapReduce是关系型数据库的补充。MapReduce更适合批量更新大批量的数据集,一次写入多次读取。RDBMS更适合点查询和更新,这时的数据集已经被索引以提供低延迟的检索和短时间的少量数据更新,适合多次读写。

 

3 数据结构不同。关系型数据使用的是结构化数据,在数据库阶段按具体类型处理数据。MapReduce数据模式半结构化或非结构化,数据处理是在Map reduce操作中由用户实现。

  关系型数据的规范性非常重要,保持数据的完整性,一致性。这样的规范限制了数据必须在非本地操作。而MapReduce最终要是让数据在靠近数据的地方处理。

 

4 伸缩性。关系型数据库 对数据处理是非线性。MapReduce线性。

 

 

其中有一句话难以理解,涉及到了关系型数据和MapReduce处理数据方式不同的根本原因。

 

原文:

   Relational data is often normalized to retain its integrity, and remove redundancy.

Normalization poses problems for MapReduce, since it makes reading a record a nonlocal

operation, and one of the central assumptions that MapReduce makes is that it

is possible to perform (high-speed) streaming reads and writes

 

翻译后:

 

  关系型数据往往是规范的,以保持其完整性和删除冗余。规范化为MapReduce带来

问题,因为它使读取记录成为一个非本地操作,并且MapReduce的核心假设之一就是,

它可以进行(高速)流的读写。

 

这段话难以理解是在 为什么规范化使得读取操作必须是非本地操作。这句话怎么理解呢?

 

我的理解:

这个本地操作 应该是指的 数据传输 还是算法传输, mapreduce是将算法传输到hdfs datanode上以便数据在本地执行。而关系型数据库必须要通过 connection 将数据传输到算法所在容器执行。而这个的根本原因是数据规范性。

数据规范性,为了保证约束(完整性、一致性)正常,数据就需要传输到数据库容器外执行,数据处理逻辑完成后,由事务提交到数据库,从而严格保证数据的规范。

 

 

请教各位大牛,这样理解是否正确?

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【NOSQL】非关系型数据库MongoDB ( 通过samus驱动实现基本数据操作 )

传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由(database)、集合(collection)、文档对象(documen...

【NOSQL】非关系型数据库MongoDB ( 在MVC模式下通过Jqgrid表格操作MongoDB数据 ) .

看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作。表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关系型的数据库MongoDB。nosql虽然概念新颖,但是...

sqoop操作 关系和非关系型数据库之间数据迁移

最近在学sqoop 于是自己看了网上的一个小案例 ,自己也动手尝试了一下,感觉案例不错,就转载了。 Extraction-Transformation-Loading的缩写,中文名称为数据提...

【NOSQL】非关系型数据库MongoDB ( MongoDB文件存取操作 )

由于MongoDB的文档结构为BJSON格式(BJSON全称:Binary JSON),而BJSON格式本身就支持保存二进制格式的数据,因此可以把文件的二进制格式的数据直接保存到MongoDB的文档结...

使用Python 2.7 CURD 操作非关系型数据库MongoDB

在进行数据库的操作过程中,有些数据的格式没有关系,也即它是非关系型的时候,我们会用到非关系型数据库, 而MongoDB是一个由C++写的分布式非关系型数据库,目前应用比较成熟,稳定,API操作比较简...

MapReduce 与 关系型数据库的区别

MapReduce 与 关系型数据库的区别: 1 数据访问模式受限于磁盘寻址 磁盘寻址时间提高速度远远小于数据传输速率提高速度。对于超大规模数据(以PB为单位)必须考虑使用其他方式。关系型数据库使...

MapReduce 与 关系型数据库的区别

MapReduce 与 关系型数据库的区别: 1 数据访问模式受限于磁盘寻址 磁盘寻址时间提高速度远远小于数据传输速率提高速度。对于超大规模数据(以PB为单位)必须考虑使用其他方式。关系型数据库使用...

非关系型数据库redis(三):Redis数据类型

概述Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 http://redis.readthed...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)