一、HBase中的<K,V>

在HBase中我们可以把<行键,列.列族1,列.列族2列.列族3>看作是一个<K,V>类型,如下所示:



[“2015001”,“info1”,“email1”]

www.da.com

[“2015002”,“info2”,“email2”]

www.sad.com

二、概念视图

HBase中的概念视图,一个表可以视为一个稀疏、多维的映射关系。如下所示,HBase表是一个稀疏的映射关系,里面存在很多的空的单元格。

描述hbase的数据模型 hbase数据模型描述错误的是_数据

三、面向列的存储

  • 行式数据库使用NSM(N-ary Strorage Model)存储模型,如果每一行只有少量的数据,会浪费很多磁盘空间和内存带宽。
  • 列式数据库使用DSM(Decomposition Storage Model)存储模型,缺点是执行连接操作消耗很大的元组重构代价,因为一个元组的不同属性分散到了不同的磁盘页中,当需要一个完整的元组时,就要从多个磁盘页中读取相应的字段组合起来得到一个元组。

四、NOSQL数据的产生

  • 海量数据的查询效率问题:NOSQL远远快于传统的关系型数据库
  • 高并发效率NOSQL更优秀
  • NOSQL数据库可以通过横向扩展迅速提高读写速率,应对突发的瞬间IO读写提升
  • 不要求严格的事务处理,如果一个微博用户填写了错误的信息,只需要删除原来的数据即可,不需要向传统的数据库一样进行回滚操作
  • 需要求严格的实时性,比如微博增加几个粉丝,可以过几分钟更新数据。以前web1.0时代,到银行存钱希望存储以后马上可以显示出来
  • 不需要大量的jion操作,用一个单表查询就行

五、CAP:C、A、P只能取其二

C(consistency):一致性。它是指任何一个读操作总是能够读到之前完成的写操作的结果,也就是在分布中,不同服务器中的数据一致。

A(Availability):可用性。他是指快速获取数据,可以确定的时间内返回操作结果。

P(Tolerance of Network Partition):分区容忍性。它是指当网络中出现分区的情况时(A服务器无法与其他服务器通信),分离的系统也能正常的进行。

描述hbase的数据模型 hbase数据模型描述错误的是_元组_02


(1)CA(放弃分区容忍性):最简单的做法就是把所有的事务关系的内容都放在同一个机器上。传统的DBMS就是这样做的。

(2)CP(放弃可用性):当网络出现分区时,收到数据一致性影响,等待期间无法对外提供服务,Neo4J、BigTable、HBase等Nosql都采用了CP设计原则。

(3)AP(放弃一致性):用户发布数据能够及时被看到不重要,重要的是能够立刻被发出去。网站一般都是朝着AP的方向发展。Dynamo,Riak等数据库采用AP原则。

六、NoSQL到NewSQL

支持事务的可扩展数据库,spanner作为代表,实现全球一致性,有一个基于GPS和原子钟实现的时间API。