Tablestore HBase Client的使用方式与HBase类似,但存在一些区别。本节内容介绍Tablestore HBase Client的特点。
Table
不支持多列族,只支持单列族。
Row和Cell
不支持设置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。
Mutations和Deletions
不支持删除特定列族。
不支持删除最新时间戳的版本。
不支持删除小于某个时间戳的所有版本。
Increment和Append
暂时不支持。
Filter
支持ColumnPaginationFilter。
支持FilterList。
部分支持SingleColumnValueFilter,比较器仅支持BinaryComparator。
其他Filter暂时都不支持。
Optimization
HBase的部分接口涉及到访问、存储优化等,这类接口目前未开放。具体接口信息如下:
blockcache:默认为true,不允许更改。
blocksize:默认为64K,不允许更改。
IsolationLevel:默认为READ_COMMITTED,不允许更改。
Consistency:默认为STRONG,不允许更改。
Admin
HBase中的接口org.apache.hadoop.hbase.client.Admin
主要是指管控类的API,而其中大部分API在表格存储中是不需要的。
由于表格存储是云服务,运维、管控类的操作都会被自动执行,用户无需关注。其他一些少量接口,目前暂不支持。
CreateTable
表格存储只支持单列族,在创建表时只允许设置一个列族,列族中支持MaxVersion和TimeToLive两个参数。
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
在表格存储中实例名称类似于HBase中的Namespaces,因此不支持Namespaces相关接口,包括:
createNamespace(NamespaceDescriptor descriptor)
modifyNamespace(NamespaceDescriptor descriptor)
getNamespaceDescriptor(String name)
listNamespaceDescriptors()
listTableDescriptorsByNamespace(String name)
listTableNamesByNamespace(String name)
deleteNamespace(String name)
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相关的接口。
Replication
不支持Replication相关的接口。
Coprocessors
不支持Coprocessors相关的接口。
Distributed procedures
不支持Distributed procedures相关的接口。
Table management
表格存储自动执行Table相关的操作,用户无需关注,因此不支持以下接口:
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)
限制项
表格存储是云服务,为了整体性能最优,对部分参数做了限制,且不支持用户通过配置修改,具体限制项请参见表格存储限制项。