Table Store HBase Client 的使用方式与 HBase 类似,但存在一些区别。本节内容介绍 Table Store 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)

限制项

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