三、 数据模型概念

摘要:
1逻辑模型HBase中最基本的单元是列。一列或多列构成一行。行键是唯一的。HBase中的表有几行,每行有很多列,列中的值有多个版本。每个版本的值称为一个单元格,每个单元格在不同的时间存储列的值。HBase可以理解为结构Map的无限嵌套版本。2物理模型尽管在逻辑模型中,表可以被视为一组稀疏的行。然而,在物理上,它意味着按列族单独存储。HBase的列为
1 逻辑模型 
HBase 中最基本的单位是列,一列或者多列构成了行,行有行键(Rowkey),并且是唯一的。
HBase 中的一个表有若干行,每行有很多列,列中的值有多个版本,每个版本的值称为一个单元格,每个单元存储的是不同时刻该列的值。
 
HBase 可以理解为 Map 这种结构的无限嵌套版本。
 
 
2 物理模型
 
虽然在逻辑模型中,表可以被看成一个稀疏的行的集合。但在物理上,表示按列族分开存储的。
 
HBase 的列是按列族分组的,HFile是面向列的,存放行的不同列的物理文件,一个列族的数据存放在多个 HFile 中,最重要的是一个列族的数据会被同一个Regioin管理,物理上存放在一起。
 
Region 是管理 HFile 的一种机制。
 
HBase 的表被设计成可以不禁用表而随时加入新的列,因此可以将新列直接加入一个列族而无需声明。

 
 
 
3 数据模型的重要概念
 
表 
        在Hbase中数据以表的形式存储。表名作为HDFS存储路径的一部分来使用,因此必须要符合文件名规范,所以构成表名的字符是有限制的。可以直接查看底层存储系统,在HDFS中可以看到每个表的表名都作为独立的目录结构,在某些情况下,用户可能需要查看这部分信息。
因为一个列族将会单独产生一个HFile, 所以多列族其实是不可取的。  因为每次存/删数据时候  需要刷新两个HFile  远不如将列族定义在不同的表中。 尽可能靠相关联的列来扩大HBase表中的列。展现其性能。因此HBase中的表远远少于RDBMS的表。
 
    HBase创建表只需要指定 表名 和 至少一个列族列族影响标的物理存储结构, 创建表后列族还可以更改,但是比较麻烦。 
HBase的表没有列定义,没有类型,这就是 HBase 被称为无模式数据库的原因。
    访问 HBase 不需要用户名和密码,没有 Schema将hbase-site.xml 配置文件复制一份到自己的工程中,HBaseAPI会读取配置文件完成对 HBase 的连接。 创建连接是一项非常消耗资源的工作,HBase为我们提供一个连接池,可以更好的管理资源重用。
 
 
行键
        行键,即 Rowkey。 行键是按字典排序由低到高存储在表中的,以一个空的数组来标识表空间的起始或结尾。 
行键排序规则如下图, 数据按照二进制字节从左至右逐一对比形成最终的次序。
 
 
三、 数据模型概念第1张
        在 HBase 中行键是唯一的索引,不过在新版本的 HBase 中考虑了对辅助索引的支持。 
        为了高效检索数据,应该仔细设计 Rowkey 以获得最高的查询性能: 首先 Rowkey 被冗余存储,所以长度不宜过长,过长的 Rowkey 将会占用大量的空间同事会降低检索效率;其次 Rowkey 应该是分布均匀,这样不会产生热点现象最后是 Rowkey 唯一原则,必须在设计上保证其唯一性
 
 列族
    HBase 中的列族是一些列的集合。一个列族成员都有相同的 前缀 : 限定符 组成。  前缀(列族名必须由可打印的字符, 限定符则可以乱搞。可以由任意字节数组组成。
    修改列族时候需要先停用表。应该讲经常一起查询的列放在一个列族中,合理划分列族将减少查询时加载到缓存的数据。
 
单元格
    HBase 中的单元格由行键、列族、列、时间戳唯一确定单元格的内容是不可分割的字节数组每个单元格都保存着一份数据的多个版本,不同时间版本的数据按照时间倒序排序,最新时间的数据排在最前面,时间戳是 64 位的整数, 可以由客户端在写入数据时赋值, 也可以由 RegionServer 自动赋值。
 
 
 
 
                                                                                                                                                                                rocky_24
 
 
 
 
 
 
 
 
 
 



来自为知笔记(Wiz)



免责声明:文章转载自《三、 数据模型概念》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java ---Listener监听器分布式应用运行时Dapr下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PyQt5单元格操作大全

1、显示二维列表数据(QTableView)控件 '''显示二维列表数据(QTableView)控件数据源model需要创建一个QTableView实例和一个数据源model,然后将其两者关联MVC模式 model viewer controller 前后端关联MVC的目的是将后端的数据和前端页面的耦合度降低'''from PyQt5.QtWidgets...

JMeter测试HBase

在网上找了关于jmeter连接hbase的方式,主要分为两种:通过导入jar包连接(Java Request)和通过BeanShell远程连接,由于刚接触jmeter没多久,对BeanShell还不熟,所以打算通过eclipse用Java编写连接hbase的程序并打包成jar包,导入到jmeter的方式连接hbase。 HBase本地远程连接HBase是测...

Xceed WinForm数据表格控件Xceed Grid For .NET控件详细介绍及下载地址

Xceed Grid For .NET是一款高级的,多功能的、扩展性极强的数据表格控件,具有分组、主从表、多种主题外观、固定列和行、Excel导出、支持Vista风格,交互的外观样式,内嵌报表功能,支持导出为PDF、HTML、TIFF、JPEG,以及打印报表等多种功能,是现在业界最强大的表格控件。 特殊功能: 控件使用Cell UI虚拟化,大大提高...

QT QTableWidget 用法总结(转)

QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC、C#中的DataGrid。说到QTableWidget,就必须讲一下它跟QTabelView的区别了。QTableWidget是QTableView的子类,主要的区别是QTableView可以使用自定义的数据模型来显示内容(也就是先要通过setModel来绑定数据源),而QTabl...

Hbase之批量数据写入

/** * Created by similarface on 16/8/16. */ import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import...

WPF如何获得ListView内各单元格控件

------------------首先不推荐这种模式ItemsSource 已经绑定了源. Items 集合的数量变化很随机, 每个单元格的控件取决於  默认的DataTemplate(设置 DisplayMemberBinding 时) 或者  CellTemplate 定义的控件, 或者  CellTemplateSelector 指定的 Templ...