HBase Client支援的功能

更新時間:
Copy as MD

使用Tablestore時,Tablestore會自動處理資料表分裂、Dump、Compact、Region Server等底層營運細節,您只需關注資料的讀寫操作。TablestoreHBase在資料模型和功能上相近,但Tablestore HBase Client與原生HBase API存在一些差異。本文介紹Tablestore HBase Client支援的功能和操作。

功能支援情況

CreateTable

Tablestore不支援列族(ColumnFamily),所有資料屬於同一個列族,因此TablestoreTTL(time to live,存留時間)和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讀取。

功能

支援情況

指定startstop確定掃描範圍

支援

不指定掃描範圍時,預設全表掃描

支援

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刪除等於該時間戳記的版本

支援

指定時間戳記時,deleteFamilydeleteColumns刪除小於等於該時間戳記的所有版本

不支援

不指定時間戳記時,deleteColumn刪除最新版本

不支援

不指定時間戳記時,deleteFamilydeleteColumns刪除當前系統時間的版本

不支援

addDeleteMarker

不支援

checkAndXXX

功能

支援情況

CheckAndPut

支援

checkAndMutate

支援

CheckAndDelete

支援

檢查列值是否滿足條件,滿足則刪除

支援

不指定值時,使用預設值

支援

跨行操作(檢查A行,執行B行)

不支援

exist

功能

支援情況

判斷一行或多行是否存在(不返回內容)

支援

Filter

功能

支援情況

ColumnPaginationFilter

部分支援——不支援columnOffsetcount

ColumnRangeFilter

支援

FilterList

支援——FilterList中可組合和嵌套ColumnRangeFilter、ColumnValueFilterColumnPaginationFilter。

SingleColumnValueFilter

  • 支援:LongComparator、BinaryComparator、ByteArrayComparable

  • 不支援:RegexStringComparator、SubstringComparator、BitComparator

不支援的方法

作為雲端服務,Table Store會自動處理Compaction、Region管理、Replication等底層營運操作,因此這部分HBase方法不可用。各模組不支援的方法詳見下表。

功能模組

不支援的方法說明

Table

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

RowCell

  • 不支援設定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。

MutationsDeletions

  • 不支援刪除特定列族。

  • 不支援刪除最新時間戳記的版本。

  • 不支援刪除早於指定時間戳記的所有版本。

IncrementAppend

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

Optimization

以下HBase參數涉及訪問和儲存最佳化,目前在內部統一管理,不對外開放修改:

  • blockcache:固定為true,不可修改。

  • blocksize:固定為64 KB,不可修改。

  • IsolationLevel:固定為READ_COMMITTED,不可修改。

  • Consistency:固定為STRONG,不可修改。

Admin

HBaseorg.apache.hadoop.hbase.client.Admin的大部分介面用於基礎設施管理,這些操作在Tablestore中不需要。

Tablestore作為雲端服務,會自動執行營運和管控類操作。以下Admin操作不支援:

  • CreateTable

    Tablestore僅支援單列族,建立表時只允許設定一個列族,列族支援MaxVersionsTimeToLive兩個參數。

  • 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控制台進行管理。以下Namespace方法不支援:

    • 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及相關方法。

Replication

Tablestore不支援Replication及相關方法。

Table管理

Tablestore會自動對錶下的分區進行分裂、合并和Compact,以下Table管理方法不支援:

  • 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作為雲端服務,為保證整體效能最優,對部分參數設定了固定值且不支援修改。具體限制項請參見使用限制