Tablestore HBase Client 的使用方式與 HBase 類似,但存在一些區別。本節內容介紹 Tablestore HBase Client 的特點。

Table

不支援多列族,只支援單列族。

Row和Cell

  • 不支援設定 ACL
  • 不支援設定 Cell Visibility
  • 不支援設定 Tag

GET

Tablestore只支援單列族,所以不支援列族相關的介面,包括:

  • 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 在Tablestore中是不需要的。

由於Tablestore是雲端服務,營運、管控類的操作都會被自動執行,使用者不需要關注。其他一些少量介面,目前暫不支援。

  • CreateTable

    Tablestore只支援單列族,在建立表時只允許設定一個列族,列族中支援 MaxVersion 和 TimeToLive 兩個參數。

  • Maintenance task

    在Tablestore中,下列的任務維護相關介面都會被自動處理:

    • 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

    在Tablestore中,執行個體名稱類似於 HBase 中的 Namespaces,因此不支援 Namespaces 相關的介面,包括:

    • createNamespace(NamespaceDescriptor descriptor)
    • modifyNamespace(NamespaceDescriptor descriptor)
    • getNamespaceDescriptor(String name)
    • listNamespaceDescriptors()
    • listTableDescriptorsByNamespace(String name)
    • listTableNamesByNamespace(String name)
    • deleteNamespace(String name)
  • Region

    Tablestore中會自動處理 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

Tablestore自動執行 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)

限制項

Tablestore是雲端服務,為了整體效能最優,對部分參數做了限制,且不支援使用者通過配置修改,具體限制項請參見Tablestore限制項