全部產品
Search
文件中心

Tablestore:Tablestore HBase Client支援的功能

更新時間:Dec 28, 2024

使用Tablestore時,Tablestore會為您屏蔽資料表分裂、Dump、Compact、Region Server等底層相關的細節,您只需要關心資料的使用。雖然Tablestore與HBase在資料模型及功能上相近,但是Tablestore HBase Client與原生的HBase API存在一些區別。本文為您介紹Tablestore HBase Client支援的功能和操作。

功能支援情況

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

不支援

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

ColumnRangeFilter

支援

FilterList

支援FilterList中包含ColumnRangeFilter、ColumnValueFilter和ColumnPaginationFilter的組合與嵌套。

SingleColumnValueFilter

  • 支援LongComparator、BinaryComparator、ByteArrayComparable

  • 不支援RegexStringComparator、SubstringComparator、BitComparator

不支援的方法

各功能模組不支援的方法說明請參見下表。

功能模組

不支援的方法說明

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

暫不支援原子增減和原子Append。

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中使用執行個體對資料表進行管理。執行個體是Table Store最小的計費單元,您可以在Table Store控制台上進行執行個體的管理。所以不支援如下的方法:

    • createNamespace(NamespaceDescriptor descriptor)

    • deleteNamespace(String name)

    • getNamespaceDescriptor(String name)

    • listNamespaceDescriptors()

    • listTableDescriptorsByNamespace(String name)

    • listTableNamesByNamespace(String name)

    • modifyNamespace(NamespaceDescriptor descriptor)

  • Region管理

    Tablestore中資料存放區和管理的基本單位為分區,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

Tablestore目前不支援Snapshots,所以暫時不支援Snapshots相關的方法。

Replication

Tablestore目前不支援Replication,所以暫時不支援Replication相關的方法。

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)

限制項

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