目前只有四个操作:
get: 拿特定row
put: 插入多行新的rows或者更新已有的rows
scan: 获取指定table的指定attributes的rows
delete: 删除table中的某一行. HBase不会马上delete, 而是会在该行加入tombstones, 而这些rows会在major compaction中才被删除.
四个操作的操作对象都是Table
Versions
HBase中的版本是用timestamp表示, 是一个8个字节的long.
所以当对同一个row做很多次修改后, 会产生很多个rowkey, family, qualifier相同但仅版本号不同的cell.
版本号之间的排序按降序排序
所以每次读取row的值的时候都能保证拿到最新的版本
默认是版本数目不上限, 也可以人工设定保留的最多的版本数量, 也可以设置至少保留的版本数量
关于版本问题的更多有趣的小细节, 建议前往: Bending time in HBase 阅读
Versions and Operations
get, 在默认情况下只会拿最新的versions
但是可以指定, 指定拿最多几个versions, Get.setMaxVersions(), 或者指定区域的versions, Get.setTimeRange()
scan和get一样
put, 在默认情况下, 用当前的currentMilliionSeconds来确定version, 用户也可以自己设定version, 但不建议怎么做, 因为维护起来会有困难, 而且HBase的TimeToLive是根据这个vtimestamp来确定的.
delete: delete有三种版本, 1. delete一个column的某个指定version; 2. delete column, 删除一个column的所有versions; 3. delete family, 删除一个column family的所有columns.
Join
HBase不支持join, 但是不代表不能join, 需要用户自己根据使用需求进行实现