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限制項。