全部產品
Search
文件中心

Lindorm:配置冷儲存

更新時間:Jul 06, 2024

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);