<<<<<<< HEAD Hbase 数据模型笔记(1) ======= Hbase 数据模型笔记(1) >>>>>>> 24b6b53 ( 【init】) <<<<<<< HEAD
UP | HOME
<<<<<<< HEAD
=======
>>>>>>> 24b6b53 ( 【init】)

Hbase 数据模型笔记(1)
发布于 8 17, 2020 by ThinkCat.

<<<<<<< HEAD

Table of Contents

  • 基础
  • 列族
  • Cells
  • 操作
  • =======

    Table of Contents

    <<<<<<< HEAD

    基础

    =======

    基础

    >>>>>>> 24b6b53 ( 【init】)
    1. 应用程序是以表的方式在HBase存储数据的
    2. 表是由行和列构成的,所有的列是从属于某一个列族的
    3. 行和列的交叉点称之为cell,cell是版本化的。cell的内容是不可分割的字节数组
    4. HBase的表是按key排序的,排序方式之针对字节的。所有的表都必须要有主键-key
    <<<<<<< HEAD

    =======

    >>>>>>> 24b6b53 ( 【init】)

    表是在schema声明的时候定义的。

    <<<<<<< HEAD

    =======

    >>>>>>> 24b6b53 ( 【init】)

    行键是不可分割的字节数组。行是按字典排序由低到高存储在表中的。一个空的数组是用来标识表空间的起始或者结尾。

    <<<<<<< HEAD

    列族

    =======

    列族

    >>>>>>> 24b6b53 ( 【init】)
    1. 在HBase是列族一些列的集合。一个列族所有列成员是有着相同的前缀。
    2. 列族必须在表建立的时候声明。column就不需要了,随时可以新建。
    3. 在物理上,一个的列族成员在文件系统上都是存储在一起。
    <<<<<<< HEAD

    Cells

    =======

    Cells

    >>>>>>> 24b6b53 ( 【init】)

    A {row, column, version} 元组就是一个HBase中的一个 cell。Cell的内容是不可分割的字节数组。

    <<<<<<< HEAD

    操作

    =======

    操作

    >>>>>>> 24b6b53 ( 【init】)

    操作有四种:

    1. Get: 返回特定行的属性,通过 HTable.get 执行
    2. Put: 向表新增行(key如果不存在),或者是更新行(key已经存在),通过 HTable.put (writeBuffer) 或 HTable.batch (non-writeBuffer)执行
    3. Delete: 从表中删除一行,通过HTable.delete 执行
    4. 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)的新标志进行处理。这些墓碑和死去的值,在主紧缩时清除。