Tablestore HBase Client支持的功能

使用表格存储时,表格存储会为您屏蔽数据表分裂、Dump、Compact、Region Server等底层相关的细节,您只需要关心数据的使用。虽然TablestoreHBase在数据模型及功能上相近,但是Tablestore HBase Client与原生的HBase API存在一些区别。本文为您介绍Tablestore HBase Client支持的功能和操作。

功能支持情况

CreateTable

表格存储不支持列族(ColumnFamily),所有的数据可以理解为在同一个ColumnFamily内,所以表格存储TTLMax Versions都是数据表级别的,支持的功能请参见下表。

功能

支持情况

family max version

支持表级别max version,默认为1

family min version

不支持

family ttl

支持表级别TTL

is/set ReadOnly

通过RAM用户支持

预分区

不支持

blockcache

不支持

blocksize

不支持

BloomFilter

不支持

column max version

不支持

cell ttl

不支持

控制参数

不支持

Put

功能

支持情况

一次写入多列数据

支持

指定一个时间戳

支持

如果不写时间戳,默认用系统时间

支持

单行ACL

不支持

ttl

不支持

Cell Visibility

不支持

tag

不支持

Get

表格存储能保证数据的强一致性,在数据写入API收到HTTP 200状态码(OK)的回复时,数据即被持久化到所有的备份上,这些数据能够立即被Get读取到。

功能

支持情况

读取一行数据

支持

读取一个列族里面的所有列

支持

读取特定列的数据

支持

读取特定时间戳的数据

支持

读取特定个数版本的数据

支持

TimeRange

支持

ColumnfamilyTimeRange

不支持

RowOffsetPerColumnFamily

支持

MaxResultsPerColumnFamily

不支持

checkExistenceOnly

不支持

closestRowBefore

支持

attribute

不支持

cacheblock:true

支持

cacheblock:false

不支持

IsolationLevel:READ_COMMITTED

支持

IsolationLevel:READ_UNCOMMITTED

不支持

IsolationLevel:STRONG

支持

IsolationLevel:TIMELINE

不支持

Scan

表格存储能保证数据的强一致性,在数据写入API收到HTTP 200状态码(OK)的回复时,数据即被持久化到所有的备份上,这些数据能够立即被Scan读取到。

功能

支持情况

指定start、stop确定扫描范围

支持

如果不指定扫描范围,默认扫描全局

支持

prefix filter

支持

读取逻辑同Get

支持

逆序读

支持

caching

支持

batch

不支持

maxResultSize,返回数据量大小的限制

不支持

small

不支持

cacheblock:true

支持

cacheblock:false

不支持

IsolationLevel:READ_COMMITTED

支持

IsolationLevel:READ_UNCOMMITTED

不支持

IsolationLevel:STRONG

支持

IsolationLevel:TIMELINE

不支持

allowPartialResults

不支持

Batch

功能

支持情况

Get

支持

Put

支持

Delete

支持

batchCallback

不支持

Delete

功能

支持情况

删除整行

支持

删除特定列的所有版本

支持

删除特定列的特定版本

支持

删除特定列族

不支持

指定时间戳时,deleteColumn会删除等于这个时间戳的版本

支持

指定时间戳时,deleteFamilydeleteColumns会删除小于等于该时间戳的所有版本

不支持

不指定时间戳时,deleteColumn会删除最近的版本

不支持

不指定时间戳时,deleteFamilydeleteColumns会删除当前系统时间的版本

不支持

addDeleteMarker

不支持

checkAndXXX

功能

支持情况

CheckAndPut

支持

checkAndMutate

支持

CheckAndDelete

支持

检查列的值是否满足条件,满足则删除

支持

如果不指定值,则表示缺省

支持

跨行,检查A行,执行B

不支持

exist

功能

支持情况

判断一行或多行是否存在,不返回内容

支持

Filter

功能

支持情况

ColumnPaginationFilter

不支持columnOffsetcount

ColumnRangeFilter

支持

FilterList

支持FilterList中包含ColumnRangeFilter、ColumnValueFilterColumnPaginationFilter的组合与嵌套。

SingleColumnValueFilter

  • 支持LongComparator、BinaryComparator、ByteArrayComparable

  • 不支持RegexStringComparator、SubstringComparator、BitComparator

不支持的方法

各功能模块不支持的方法说明请参见下表。

功能模块

不支持的方法说明

Table

不支持多列族,只支持单列族。

RowCell

  • 不支持设置ACL。

  • 不支持设置Cell Visibility。

  • 不支持设置Tag。

GET

表格存储只支持单列族,因此不支持列族相关的接口。

  • setColumnFamilyTimeRange(byte[] cf, long minStamp, long maxStamp)

  • setMaxResultsPerColumnFamily(int limit)

  • setRowOffsetPerColumnFamily(int offset)

SCAN

类似于GET,由于不支持列族相关接口,因此也不能设置优化类部分接口。不支持的优化类部分接口如下:

  • setBatch(int batch)

  • setMaxResultSize(long maxResultSize)

  • setAllowPartialResults(boolean allowPartialResults)

  • setLoadColumnFamiliesOnDemand(boolean value)

  • setSmall(boolean small)

Batch

暂时不支持BatchCallback。

MutationsDeletions

  • 不支持删除特定列族。

  • 不支持删除最新时间戳的版本。

  • 不支持删除小于某个时间戳的所有版本。

IncrementAppend

暂不支持原子增减和原子Append。

Optimization

HBase的部分接口涉及到访问、存储优化等,这类接口目前未开放。具体接口信息如下:

  • blockcache:默认为true,不允许更改。

  • blocksize:默认为64K,不允许更改。

  • IsolationLevel:默认为READ_COMMITTED,不允许更改。

  • Consistency:默认为STRONG,不允许更改。

Admin

HBase中的接口org.apache.hadoop.hbase.client.Admin主要是指管控类的API,而其中大部分API表格存储中是不需要的。

由于表格存储是云服务,运维、管控类的操作都会被自动执行,用户无需关注。其他一些少量接口,目前暂不支持。

  • CreateTable

    表格存储只支持单列族,在创建表时只允许设置一个列族,列族中支持MaxVersionTimeToLive两个参数。

  • Maintenance task

    表格存储中下列的任务维护相关接口都会被自动处理。

    • abort(String why, Throwable e)

    • balancer()

    • enableCatalogJanitor(boolean enable)

    • getMasterInfoPort()

    • isCatalogJanitorEnabled()

    • rollWALWriter(ServerName serverName) -runCatalogScan()

    • setBalancerRunning(boolean on, boolean synchronous)

    • updateConfiguration(ServerName serverName)

    • updateConfiguration()

    • stopMaster()

    • shutdown()

  • Namespaces

    表格存储中使用实例对数据表进行管理。实例是表格存储最小的计费单元,您可以在表格存储控制台上进行实例的管理。所以不支持如下的方法:

    • createNamespace(NamespaceDescriptor descriptor)

    • deleteNamespace(String name)

    • getNamespaceDescriptor(String name)

    • listNamespaceDescriptors()

    • listTableDescriptorsByNamespace(String name)

    • listTableNamesByNamespace(String name)

    • modifyNamespace(NamespaceDescriptor descriptor)

  • Region管理

    表格存储中数据存储和管理的基本单位为分区,表格存储会自动根据数据分区的数据大小、访问情况进行分区的分裂或者合并,所以不支持Region管理相关的方法。

    • assign(byte[] regionName)

    • closeRegion(byte[] regionname, String serverName)

    • closeRegion(ServerName sn, HRegionInfo hri)

    • closeRegion(String regionname, String serverName)

    • closeRegionWithEncodedRegionName(String encodedRegionName, String serverName)

    • compactRegion(byte[] regionName)

    • compactRegion(byte[] regionName, byte[] columnFamily)

    • compactRegionServer(ServerName sn, boolean major)

    • flushRegion(byte[] regionName)

    • getAlterStatus(byte[] tableName)

    • getAlterStatus(TableName tableName)

    • getCompactionStateForRegion(byte[] regionName)

    • getOnlineRegions(ServerName sn)

    • majorCompactRegion(byte[] regionName)

    • majorCompactRegion(byte[] regionName, byte[] columnFamily)

    • mergeRegions(byte[] encodedNameOfRegionA, byte[] encodedNameOfRegionB, boolean forcible)

    • move(byte[] encodedRegionName, byte[] destServerName)

    • offline(byte[] regionName)

    • splitRegion(byte[] regionName)

    • splitRegion(byte[] regionName, byte[] splitPoint)

    • stopRegionServer(String hostnamePort)

    • unassign(byte[] regionName, boolean force)

Snapshots

表格存储目前不支持Snapshots,所以暂时不支持Snapshots相关的方法。

Replication

表格存储目前不支持Replication,所以暂时不支持Replication相关的方法。

Table管理

表格存储会自动对Table下的数据分区进行分裂、合并及Compact等操作,所以不支持如下方法:

  • getTableDescriptor(TableName tableName)

  • compact(TableName tableName)

  • compact(TableName tableName, byte[] columnFamily)

  • flush(TableName tableName)

  • getCompactionState(TableName tableName)

  • majorCompact(TableName tableName)

  • majorCompact(TableName tableName, byte[] columnFamily)

  • modifyTable(TableName tableName, HTableDescriptor htd)

  • split(TableName tableName)

  • split(TableName tableName, byte[] splitPoint)

Coprocessors

表格存储暂时不支持协处理器,所以不支持如下方法:

  • coprocessorService()

  • coprocessorService(ServerName serverName)

  • getMasterCoprocessors()

Distributed procedures

表格存储不支持Distributed procedures,所以不支持如下方法:

  • execProcedure(String signature, String instance, Map props)

  • execProcedureWithRet(String signature, String instance, Map props)

  • isProcedureFinished(String signature, String instance, Map props)

限制项

表格存储是云服务,为了整体性能最优,对部分参数做了限制且不支持用户通过配置进行修改。具体限制项请参见通用限制