Lindorm は、コールドデータの記憶媒体として容量型クラウドストレージを使用します。コールドストレージ機能を有効にした後、データベース内のテーブルまたはカラムファミリーを設定する必要があります。このトピックでは、コールドストレージの設定方法について説明します。
背景情報
コールドストレージ機能は、バージョン 2.1.8 以降のLindorm エンジンでのみサポートされています。Lindorm では、テーブルレベルでストレージ属性を設定できます。テーブル全体または特定のカラムファミリーのストレージタイプをコールドストレージに設定できます。テーブルまたはカラムファミリーがコールドストレージとして設定されると、データは容量型クラウドストレージに保存され、インスタンスのデフォルトストレージ容量を消費しません。
容量型クラウドストレージのパフォーマンスについては、容量型クラウドストレージの概要をご参照ください。
コールドストレージの設定
データベース内のテーブルまたはカラムファミリーをコールドストレージとして設定するには、次のいずれかの方法を使用します。
HBase シェルを使用してコールドストレージを設定します。開始する前に、シェルをダウンロードして設定してください。詳細については、「Lindorm シェルで LindormTable に接続する」をご参照ください。
テーブルを作成するときに、次のステートメントを実行してコールドストレージを設定します。
create 'coldTable', {NAME => 'f', STORAGE_POLICY => 'COLD'}テーブルがすでに作成されている場合は、カラムファミリーのプロパティを変更することで、カラムファミリーをコールドストレージに設定できます。
重要カラムファミリーにすでにデータが含まれている場合、メジャーコンパクションが完了して初めて、データがコールドストレージに移動されます。
alter 'coldTable', {NAME=>'f', STORAGE_POLICY => 'COLD'}テーブルをホットストレージにリセットするには、次のステートメントを実行します。
alter 'coldTable', {NAME=>'f', STORAGE_POLICY => 'DEFAULT'}
HBase Java API を使用してコールドストレージを設定します。開始する前に、SDK をインストールして設定してください。詳細については、「ApsaraDB for HBase API for Java を使用してアプリケーションを開発する」をご参照ください。
テーブルを作成するときに、次のステートメントを実行してコールドストレージを設定します。
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);テーブルがすでに作成されている場合は、カラムファミリーのプロパティを変更することで、カラムファミリーをコールドストレージに設定できます。
重要カラムファミリーにすでにデータが含まれている場合、メジャーコンパクションが完了して初めて、データがコールドストレージに移動されます。
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);