本文主要為您介紹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。