HBase note. Data model
2015-04-01 21:01
197 查看
名词概念.
Table: 一个Table由众多rows组成, 需要在建表时就决定
Row: 一个row包含row key还有一个或多个columns. Rows以row key按字母从小到大排序, 跟hdfs存储模型一致.
Column: 一个column包含一个column family和一个qualifier, 用:隔开
Column Family: 一个columns的集合和其对应的value值. 与此同时, 每个column family都会有一堆跟存储相关的属性值. 例如值是否需要存储到cache中, 数据如何压缩, row keys如何编码等. 每个row都有相同的column family, 但是有可能该family是空的.
Column Qualifier: column qualifer可以理解为对column family的索引. 但是column family需要再创建table时确定. 而qualifier可以在有需要的时候动态添加. 所以每个的column qualifier可以有很大差别.
由于HBase并不提供记录column信息的meta table, 所以使用者必须自己管理和记住使用过的column的信息.
Cell: 一个完整的cell是由row, column family和column qualifier和value和timestamp组合而成, 代表了cell的其中一个版本.
Timestamp: timestamp陪同value在写入时被添加. 默认情况下, timestamp都是唯一的. 它的实际意义是, 这个data的写入时间. 不过也可以人为设定timestamp
Namespace: 可以理解为对table进行分组管理的这么一个用途. 这是为了后续版本添加新功能而准备的一个新概念. 具体在hbase shell中的使用方式如下:
在使用者不定义任何namespace的情况下, hbase有两种预先准备好的namespace:
1. hbase-system namespace, 是用来存放HBase的内部tables, 例如meta table
2. default-table namespace, 就是使用者没人指定namespace下的默认table.
作为例子, 设计一个table, 记录学生的基本信息, 还有班级信息, 例如学号和所在年级.
设计如下:
1. table名字
2. 每个学生的名字作为row key
3. 基本信息和班级信息分别column family, 各自为"Info"和"Class"
4. 而具体的基本信息和班级信息作为qualifier, 根据需要的时候添加. 而这里, 基本信息的qualifer, 设计成性别和年龄; 班级信息的qualifier, 设计成学号和年级
最后, 结构上如下图:
而实际的物理存储模型应该是:
rowkey先按照字母升序排序, 然后column family升序排序, 然后qualifier升序排序, 然后timestamp降序排序. value不参与排序
所以会有以上物理存储的模型,
一个cell有很多个version的话, 会出现rowkey, column family和qualifier相同, 但是timestamp不同的情况,
Table: 一个Table由众多rows组成, 需要在建表时就决定
Row: 一个row包含row key还有一个或多个columns. Rows以row key按字母从小到大排序, 跟hdfs存储模型一致.
Column: 一个column包含一个column family和一个qualifier, 用:隔开
Column Family: 一个columns的集合和其对应的value值. 与此同时, 每个column family都会有一堆跟存储相关的属性值. 例如值是否需要存储到cache中, 数据如何压缩, row keys如何编码等. 每个row都有相同的column family, 但是有可能该family是空的.
Column Qualifier: column qualifer可以理解为对column family的索引. 但是column family需要再创建table时确定. 而qualifier可以在有需要的时候动态添加. 所以每个的column qualifier可以有很大差别.
由于HBase并不提供记录column信息的meta table, 所以使用者必须自己管理和记住使用过的column的信息.
Cell: 一个完整的cell是由row, column family和column qualifier和value和timestamp组合而成, 代表了cell的其中一个版本.
Timestamp: timestamp陪同value在写入时被添加. 默认情况下, timestamp都是唯一的. 它的实际意义是, 这个data的写入时间. 不过也可以人为设定timestamp
Namespace: 可以理解为对table进行分组管理的这么一个用途. 这是为了后续版本添加新功能而准备的一个新概念. 具体在hbase shell中的使用方式如下:
#Create a namespace create_namespace 'my_ns' #create my_table in my_ns namespace create 'my_ns:my_table', 'fam' #drop namespace drop_namespace 'my_ns' #alter namespace alter_namespace 'my_ns', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}
在使用者不定义任何namespace的情况下, hbase有两种预先准备好的namespace:
1. hbase-system namespace, 是用来存放HBase的内部tables, 例如meta table
2. default-table namespace, 就是使用者没人指定namespace下的默认table.
作为例子, 设计一个table, 记录学生的基本信息, 还有班级信息, 例如学号和所在年级.
设计如下:
1. table名字
2. 每个学生的名字作为row key
3. 基本信息和班级信息分别column family, 各自为"Info"和"Class"
4. 而具体的基本信息和班级信息作为qualifier, 根据需要的时候添加. 而这里, 基本信息的qualifer, 设计成性别和年龄; 班级信息的qualifier, 设计成学号和年级
最后, 结构上如下图:
而实际的物理存储模型应该是:
rowkey先按照字母升序排序, 然后column family升序排序, 然后qualifier升序排序, 然后timestamp降序排序. value不参与排序
所以会有以上物理存储的模型,
一个cell有很多个version的话, 会出现rowkey, column family和qualifier相同, 但是timestamp不同的情况,
相关文章推荐
- 【Hadoop】HBase 数据模型(Data Model)
- HBase 数据模型(Data Model)
- HBase 数据模型(Data Model)
- Note for video Machine Learning and Data Mining——Linear Model
- Note for video Machine Learning and Data Mining——Linear Model
- CMS Note -- Data Model pre release
- HBase note. Data Operations and Versions
- HBase之数据模型(DataModel)
- Main-Accounts-and-Financial-Dimensions-Data-Model_thumb
- EF & Model Validation & WinForm UI DataBinding
- 【C#】 Xml文件序列化和反序列化,自动生成DataModel的.cs文件。
- Philips Economy Audio Codec Data Sheet Note(UDA1341TS)
- MVC到底使用哪种方式传递Model,在ViewData、ViewBag、PartialView、TempData、ViewModel、Tuple之间取舍
- QAbstractTableModel中的data()到底执行几遍???
- #Paper Reading# Online Knowledge-Based Model for Big Data Topic Extraction
- openGL note 1 : Command Suffixes and Argument Data Types
- HelloData之:数据库model的生成。
- LINQ to SQL (Part 2 - Defining our Data Model Classes)
- hbase-model-versions
- sqoop import data from database to hbase遇到的若干问题