Hbase 数据模型笔记(1)
发布于 8 17, 2020 by ThinkCat.
<<<<<<< HEAD
Table of Contents
- 基础
- 表
- 行
- 列族
- Cells
- 操作 ======= <<<<<<< HEAD
- 应用程序是以表的方式在HBase存储数据的
- 表是由行和列构成的,所有的列是从属于某一个列族的
- 行和列的交叉点称之为cell,cell是版本化的。cell的内容是不可分割的字节数组
- HBase的表是按key排序的,排序方式之针对字节的。所有的表都必须要有主键-key
- 在HBase是列族一些列的集合。一个列族所有列成员是有着相同的前缀。
- 列族必须在表建立的时候声明。column就不需要了,随时可以新建。
- 在物理上,一个的列族成员在文件系统上都是存储在一起。
- Get: 返回特定行的属性,通过 HTable.get 执行
- Put: 向表新增行(key如果不存在),或者是更新行(key已经存在),通过 HTable.put (writeBuffer) 或 HTable.batch (non-writeBuffer)执行
- Delete: 从表中删除一行,通过HTable.delete 执行
Scan: 允许多行特定属性迭代
HTable htable = ... // instantiate HTable Scan scan = new Scan(); scan.addColumn(Bytes.toBytes("cf"),Bytes.toBytes("attr")); scan.setStartRow( Bytes.toBytes("row")); // start key is inclusive scan.setStopRow( Bytes.toBytes("row" + (char)0)); // stop key is exclusive ResultScanner rs = htable.getScanner(scan); try { for (Result r = rs.next(); r != null; r = rs.next()) { // process result... } finally { rs.close(); // always close the ResultScanner! }
Hbase 没有修改数据的合适方法,通过创建名为墓碑(tombstones)的新标志进行处理。这些墓碑和死去的值,在主紧缩时清除。
基础
=======
<<<<<<< HEAD
基础
>>>>>>> 24b6b53 ( 【init】)
表
=======
<<<<<<< HEAD
表
>>>>>>> 24b6b53 ( 【init】)
表是在schema声明的时候定义的。
行
=======
<<<<<<< HEAD
行
>>>>>>> 24b6b53 ( 【init】)
行键是不可分割的字节数组。行是按字典排序由低到高存储在表中的。一个空的数组是用来标识表空间的起始或者结尾。
列族
=======
<<<<<<< HEAD
列族
>>>>>>> 24b6b53 ( 【init】)
Cells
=======
<<<<<<< HEAD
Cells
>>>>>>> 24b6b53 ( 【init】)
A {row, column, version} 元组就是一个HBase中的一个 cell。Cell的内容是不可分割的字节数组。
操作
=======
操作
>>>>>>> 24b6b53 ( 【init】)
操作有四种: