Lindorm使用容量型雲端儲存作為冷資料存放區介質。開通冷儲存功能後,需要設定資料庫中的表或者列簇,本文介紹配置冷儲存的方法。
背景資訊
冷儲存功能僅支援Lindorm引擎版本為2.1.8及以上。Lindorm支援在表層級設定儲存屬性,可以將整個表或某個列簇的Storage設為冷儲存。如果設定為冷儲存,那麼這個表或某個列簇的資料都會儲存在容量型雲端儲存中,並不會佔用該執行個體的預設儲存空間。
容量型雲端儲存的效能說明,請參見容量型雲端儲存讀取效能說明。
配置冷儲存
設定資料庫中的表或者列簇為冷儲存的方法有兩種:
通過HBase Shell設定冷儲存。在設定前,需要已下載和配置Shell,具體操作請參見通過Lindorm Shell訪問寬表引擎。
建立表格時執行以下語句設定冷儲存。
create 'coldTable', {NAME => 'f', STORAGE_POLICY => 'COLD'}
如果表格已經建立,可以通過修改表中列簇的屬性來設定冷儲存的列簇。
重要如果這個列簇中已經有資料,那麼只有在major compaction之後,資料才會進入到冷儲存。
alter 'coldTable', {NAME=>'f', STORAGE_POLICY => 'COLD'}
如果您需要將表重新設定為熱儲存請執行以下語句。
alter 'coldTable', {NAME=>'f', STORAGE_POLICY => 'DEFAULT'}
通過HBase Java API設定冷儲存。在設定前,需要已安裝和配置SDK,具體操作請參見基於HBase Java API的應用開發。
建立表格時執行以下語句設定冷儲存。
Admin admin = connection.getAdmin(); HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf("coldTable")); HColumnDescriptor cf = new HColumnDescriptor("f"); cf.setValue("STORAGE_POLICY", AliHBaseConstants.STORAGETYPE_COLD); descriptor.addFamily(cf); admin.createTable(descriptor);
如果表格已經建立,可以通過修改表中列簇的屬性來設定冷儲存的列簇。
重要如果這個列簇中已經有資料,那麼只有在major compaction之後,資料才會進入到冷儲存。
Admin admin = connection.getAdmin(); TableName tableName = TableName.valueOf("coldTable"); HTableDescriptor descriptor = admin.getTableDescriptor(tableName); HColumnDescriptor cf = descriptor.getFamily("f".getBytes()); // 設定表的儲存類型為冷儲存 cf.setValue("STORAGE_POLICY", AliHBaseConstants.STORAGETYPE_COLD); admin.modifyTable(tableName, descriptor);
如果您需要將表重新設定為熱儲存請執行以下語句。
Admin admin = connection.getAdmin(); TableName tableName = TableName.valueOf("coldTable"); HTableDescriptor descriptor = admin.getTableDescriptor(tableName); HColumnDescriptor cf = descriptor.getFamily("f".getBytes()); // 設定表的儲存類型為預設儲存,預設儲存為熱儲存 cf.setValue("STORAGE_POLICY", AliHBaseConstants.STORAGETYPE_DEFAULT); admin.modifyTable(tableName, descriptor);