

277 人赞同了该回答
网络上有篇deck,题目为 NoSQL and Big Data Processing - Hbase, Hive and Pig (cs.kent.edu/~jin/Cloud12Spring/HbaseHivePig.pptx),从 关系型开始,到 NoSQL, 到 CAP 原理,再到 HBase 和 Hive,基本表述了整个数据传输的演变路线及其成因。
以下是我个人对这篇deck的整理,和deck的结构基本相似。虽然不能直接提问题主的疑问,但坚信读完这个deck之后,这个难题一定可以迎刃而解。
1. RDBMS
让数据集保持在一台单一的机器上是RDBMS提供ACID特性跟丰富查询模型的最好方式。但数据集变大时,垂直扩展(scaling up)带来很多限制。企业逐渐看到,通过降低多节点的服务器进行纵向扩展(scaling out)是一种更经济跟更可行的方法。DBA们对RDBMS采用的纵向扩展的方式主要有主从复制(Master-slave)、分片(Sharding)。
横向扩展RDBMS – Master/Slave
横向扩展RDBMS - Sharding
- 垂直分区(Vertical Partitioning):将不需要进行联合查询的数据表分散到不同的服务器上。
- 水平分区(sharding/分表) 将同一个表的记录拆分到不同的表或者是服务器上,这通常必须一个稳定的算法来确保读取时可恰当从不同的服务器上获得数据。比如,将ZIP codes小于50000的用户存储在CustomersEast,将ZIP codes大于或等于50000的用户存储在CustomersWest。CustomersEast和CustomersWest就变成两个分区表。方法有 Range-Based Partitioning, Key or Hash-Based partitioning等。
- 对读取跟写入都有很高的扩展
- 不透明,应用必须做到能识别分区

- 不再有跨分区的关系/joins
- 跨片参照完整性损失
其他RDBMS扩展方法
2. NoSQL
NoSQL现在被理解为 Not Only SQL 的缩写,是对非关系型的管理平台的统称(正由于此,人们往往理解 NoSQL 是 anti-RDBMS)。
NoSQL 与 RDBMS 存在许多不同点,
- 最重要的是NoSQL不使用SQL作为查询语言。
- NoSQL 不需要固定的表方式(table schema),也常常会导致使用SQL的JOIN操作,一般有能水平扩展的特点。
- NoSQL产品会放宽一个或多个 ACID 属性(CAP定理)
CAP 理论
CAP理论是数据平台设计的基本理论,目前几乎所有的数据平台的设计都遵循了这个理论。CAP理论强调,分布式平台只能满足下述三项中的两项而不可能满足全部三项,
一致性有两种类别:

- strong consistency – ACID(Atomicity Consistency Isolation Durability):对于关系型,要求升级过的数据可被后续所有的访问都发现,这是强一致性。
- weak consistency – BASE(Basically Available Soft-state Eventual consistency )
-- Basically Available - system seems to work all the time (基本可用)
-- Soft State - it doesn't have to be consistent all the time (不规定所有时间都一致)
-- Eventually Consistent - becomes consistent at some later time (最终一致性)
对于分布式数据平台(scale out),分区容忍性是基本要求,否则就丧失了价值。因此没法在一致性和可用性上做抉择,如何处理这些利弊正是目前NoSQL的核心焦点。几乎所有的状况都是牺牲一致性而换取高可用性。当然,牺牲一致性hive与hbase的区别,只是不再要求关系中的强一致性hive与hbase的区别,而是即使系统可超过最后一致性即可。考虑到客户体验,这个最后一致的时间窗口,要尽可能的对客户透明,也就是需要保障“用户感知到的一致性”。通常是借助数据的多份异步复制来推动平台的高可用跟数据的最后一致性的。
3. HBase
HBase is an open-source, distributed, column-oriented database built on top of HDFS (or KFS) based on BigTable!
按照CAP理论,HBase属于C+P类别的平台。HBase是强一致性的(仅支持单行事务)。每一行由单个区域服务器(region server)host,行锁(row locks)和多版本并发控制(multiversion concurrency control)的组合被用来确保行的一致性。
There are three types of lookups:
Access or manipulate
- Programmatic access via Java, REST, or Thrift APIs.
- Scripting via JRuby.
HBase benefits than RDBMS
- No real indexes
- Automatic partitioning
- Scale linearly and automatically with new nodes
- Commodity hardware
- Fault tolerance
- Batch processing
4. Hive
- Provide higher-level language (HQL, like SQL) to facilitate large-data processing
- Higher-level language “compiles down” to Hadoop Map/Reduce jobs
5. Hive + HBase

Reasons to use Hive on HBase:
References
1. Hbase, Hive and Pig: cs.kent.edu/~jin/Cloud12Spring/HbaseHivePig.pptx
2. Slashdot效应
3. RDBMS vs. NoSQL:反派为什么会得以存活并发展壮大-CSDN.NET
4. Partition (database)
5. Multi-master replication
6. 内存的基本原理与应用
7. NoSQL
8. CAP定理
9. 如何“打败”CAP定理
10. Eventual consistency
11. HBase -Apache HBase Home
12. hbase介绍 - 阿里数据系统 alidata.org
13. 细数Google HBase与BigTable区别在哪里?
编辑于 2014-02-12
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-138109-1.html
郑秀晶的鼻子