本文主要為您介紹Tablestore HBase Client 支援的功能和操作。
Tablestore與 HBase 的 API 區別
作為 NoSQL 資料庫服務,Tablestore為您屏蔽了資料表分裂、Dump、Compact、Region Server 等底層相關的細節,您只需要關心資料的使用。因此,雖然與HBase在資料模型及功能上相近,Tablestore HBase Client 與原生的 HBase API 仍然有一些區別。
支援的功能
- CreateTable
Tablestore不支援列族(ColumnFamily),所有的資料可以認為是在同一個 ColumnFamily 之內,所以Tablestore的 TTL 及 Max 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
Tablestore保證資料的強一致性,在資料寫入 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
Tablestore保證資料的強一致性,在資料寫入 API 收到 HTTP 200 狀態代碼(OK)的回複時,資料即被持久化到所有的備份上,這些資料能夠馬上被 Scan 讀到。
功能 支援情況 指定 start、stop 確定掃描範圍 支援 如果不指定掃描範圍,預設掃描全域 支援 prefix filter 支援 讀取邏輯同 Get 支援 逆序讀 支援 caching 支援 batch 不支援 maxResultSize,返回資料量大小的限制 不支援 small 不支援 batch 不支援 cacheblock:true 支援 cacheblock:false 不支援 IsolationLevel:READ_COMMITTED 支援 IsolationLevel:READ_UNCOMMITTED 不支援 IsolationLevel:STRONG 支援 IsolationLevel:TIMELINE 不支援 allowPartialResults 不支援 - Batch
功能 支援情況 Get 支援 Put 支援 Delete 支援 batchCallback 不支援 - Delete
功能 支援情況 刪除整行 支援 刪除特定列的所有版本 支援 刪除特定列的特定版本 支援 刪除特定列族 不支援 指定時間戳記時,deleteColumn 會刪除等於這個時間戳記的版本 支援 指定時間戳記時,deleteFamily 和 deleteColumns 會刪除小於等於這個時間戳記的所有版本 不支援 不指定時間戳記時,deleteColumn 會刪除最近的版本 不支援 不指定時間戳記時,deleteFamily 和 deleteColumns 會刪除當前系統時間的版本 不支援 addDeleteMarker 不支援 - checkAndXXX
功能 支援情況 CheckAndPut 支援 checkAndMutate 支援 CheckAndDelete 支援 檢查列的值是否滿足條件,滿足則刪除 支援 如果不指定值,則表示預設 支援 跨行,檢查 A 行,執行 B 行 不支援 - exist
功能 支援情況 判斷一行或多行是否存在,不返回內容 支援 - Filter
功能 支援情況 ColumnPaginationFilter 不支援 columnOffset 和 count SingleColumnValueFilter 支援:LongComparator,BinaryComparator,ByteArrayComparable
不支援: RegexStringComparator,SubstringComparator,BitComparator
不支援的方法
- Namespaces
Tablestore上使用__執行個體__對資料表進行管理。執行個體是Tablestore最小的計費單元,使用者可以在Tablestore控制台上進行執行個體的管理,所以不再支援如下 Namespaces 相關的操作:
- createNamespace(NamespaceDescriptor descriptor)
- deleteNamespace(String name)
- getNamespaceDescriptor(String name)
- listNamespaceDescriptors()
- listTableDescriptorsByNamespace(String name)
- listTableNamesByNamespace(String name)
- modifyNamespace(NamespaceDescriptor descriptor)
- Region 管理
Tablestore中資料存放區和管理的基本單位為,Tablestore會自動地根據資料分區的資料大小、訪問情況進行分裂或者合并,所以不支援 HBase 中 Region 管理相關的方法。
- Snapshots
Tablestore目前不支援 Snapshots,所以暫時不支援 Snapshots 相關的方法。
- Table 管理
Tablestore會自動對 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
Tablestore暫時不支援副處理器,所以不支援如下方法:
- coprocessorService()
- coprocessorService(ServerName serverName)
- getMasterCoprocessors()
- Distributed procedures
Tablestore不支援 Distributed procedures,所以不支援如下方法:
- execProcedure(String signature, String instance, Map props)
- execProcedureWithRet(String signature, String instance, Map props)
- isProcedureFinished(String signature, String instance, Map props)
-
Increment 與 Append
暫不支援原子增減和原子 Append。