レイクストレージは、AnalyticDB for MySQL のフルマネージドストレージレイヤーであり、データレイクの構築、メタデータガバナンス、ストレージの最適化を自動的に処理します。基盤となるインフラストラクチャを管理することなく、オフラインバッチ処理とリアルタイム分析の両方をサポートする単一のレイヤーが必要な場合に使用します。
レイクストレージを使用すると、次のことが可能になります。
構造化テーブルデータをオープンフォーマット (Iceberg、Paimon) で、非構造化ファイルオブジェクトとともに単一のレイヤーに保存できます。
XIHE エンジンと Spark エンジンからレイクストレージテーブルを作成、クエリ、管理できます。
内部テーブルと同じ権限およびライフサイクルコントロールをレイクストレージテーブルに適用できます。
ストレージインフラストラクチャをプロビジョニングまたは維持することなく、データを取り込み、マルチエンジンクエリを実行できます。
前提条件
開始する前に、AnalyticDB for MySQL Enterprise Edition、Basic Edition、または Data Lakehouse Edition のクラスターがあることを確認してください。
課金
レイクストレージの料金は、データ量と使用期間に基づいた従量課金制です。レイクストレージへの読み書きでは、PUT および GET リクエスト数に応じたリクエスト料金も発生します。
料金の詳細については、「Enterprise Edition および Basic Edition の料金」および「Data Lakehouse Edition の料金」をご参照ください。
制限事項
制限 | 詳細 |
リージョンあたりのレイクストレージ数 | Alibaba Cloud アカウントごとに最大 5 つ。 |
レイクストレージ名 | フォーマット |
ストレージ使用量の表示 | 表示には遅延があります。データ書き込み後、データ量はすぐには表示されません。 |
バックアップと復元 | AnalyticDB for MySQL のバックアップと復元機能は、レイクストレージ内のデータをサポートしていません。 |
削除条件 | レイクストレージを削除する前に、その中のすべてのデータを削除する必要があります。 |
レイクストレージの作成
AnalyticDB for MySQL コンソールにログインします。左上の隅でリージョンを選択します。左側のナビゲーションウィンドウで、[クラスター] をクリックします。対象のクラスターを見つけて、クラスター ID をクリックします。
左側のナビゲーションウィンドウで、[Data Management] > [Lake Storages] を選択します。
右上隅にある [レイクストレージの作成] をクリックします。
[レイクストレージの作成] ダイアログボックスで、[OK] をクリックします。システムは、
adb-lake-RegionID-RandomStringのフォーマットでレイクストレージ名を自動生成します。名前は作成後に変更できません。(任意) さまざまなビジネスシナリオで使用されるレイクストレージを区別するために、説明を追加します。
[レイクストレージの説明] 列で、
アイコンをクリックします。[レイクストレージの説明の変更] ダイアログボックスで、説明を入力し、[OK] をクリックします。
レイクストレージが作成されると、AnalyticDB for MySQL は同じリージョンにレイクストレージと同じ名前の OSS バケットを自動的に作成します。このバケットを OSS コンソールで表示するには、次の手順を実行します。
OSS コンソールにログインします。
左側のナビゲーションウィンドウで、[お気に入りのパス] の横にある
アイコンをクリックします。[お気に入りパスの追加] ダイアログボックスで、次の設定を行い、[OK] をクリックします。
[追加方法]: [他の承認済みバケットから追加] を選択します。
[リージョン]: AnalyticDB for MySQL クラスターが存在するリージョン。
[バケット]: レイクストレージ名を入力します。
レイクストレージの使用
レイクストレージテーブルは、Iceberg または Paimon 形式のフルマネージドテーブルです。作成後、システムはテーブルに一意のパスを割り当てます: oss://<LakeStorageName>/lakehouse/default/tables/<table_uuid>。
たとえば、test_iceberg_tbl という名前のテーブルは oss://adb-lake-cn-shanghai-6gml****/lakehouse/default/tables/b22cd225-528d-421c-a2**** に保存されます。
XIHE エンジンと Spark エンジンの両方が、レイクストレージテーブルへの読み書きをサポートしています。adb_lake_bucket パラメーターは、テーブルがどのレイクストレージを使用するかを制御します。
| 効果 |
| データベース内のすべてのテーブルがそのレイクストレージを使用します。テーブルレベルで再度指定する必要はありません。 |
| そのテーブルは指定されたレイクストレージを使用します。この指定は必須であり、省略するとエラーが発生します。 |
| テーブルは |
Spark SQL を使用したレイクストレージテーブルの読み書き
前提条件
クラスターのカーネルバージョンが 3.2.3.0 以降である必要があります。
クラスターバージョンを表示および更新するには、AnalyticDB for MySQL コンソールにログインし、[クラスター情報] ページの [設定情報] セクションに移動します。詳細については、「クラスターのマイナーバージョンを表示および更新する」をご参照ください。
操作手順
データ開発に移動します。
AnalyticDB for MySQL コンソールにログインします。左上の隅でリージョンを選択します。左側のナビゲーションウィンドウで、[クラスター] をクリックします。対象のクラスターを見つけて、クラスター ID をクリックします。
左側のナビゲーションウィンドウで、[ジョブ開発] > [SQL 開発] を選択します。
[SQLConsole] タブで、Spark エンジンとリソースグループ (ジョブリソースグループまたは Spark を使用するインタラクティブリソースグループ) を選択します。
データベースと Iceberg テーブルを作成します。
データベースを作成します。
CREATE DATABASE adb_external_db_iceberg WITH DBPROPERTIES ('adb_lake_bucket' = 'adb-lake-cn-shanghai-6gml****');レイクストレージを有効にして、Iceberg テーブルを作成します。
SET spark.adb.lakehouse.enabled=true; CREATE TABLE adb_external_db_iceberg.test_iceberg_tbl ( id int, name string, age int ) USING iceberg PARTITIONED BY (age) TBLPROPERTIES ('adb_lake_bucket' = 'adb-lake-cn-shanghai-6gml****' );adb_lake_bucketのスコープの動作については、上記のパラメーターテーブルをご参照ください。
Iceberg テーブルにデータを書き込みます。
SET spark.adb.lakehouse.enabled=true; INSERT INTO adb_external_db_iceberg.test_iceberg_tbl VALUES (1, 'lisa', 10), (2, 'jams', 10);(任意) Iceberg テーブルから行を削除します。
SET spark.adb.lakehouse.enabled=true; DELETE FROM adb_external_db_iceberg.test_iceberg_tbl WHERE id = 1; DELETE FROM adb_external_db_iceberg.test_iceberg_tbl WHERE age = 20;Iceberg テーブルからデータをクエリします。
SET spark.adb.lakehouse.enabled=true; SELECT * FROM adb_external_db_iceberg.test_iceberg_tbl;期待される出力:
+---+----+---+ |id |name|age| +---+----+---+ |1 |anna|10 | |2 |jams|20 | +---+----+---+(任意) Iceberg テーブルを削除します。次の文は、AnalyticDB for MySQL からテーブルを削除し、OSS からそのデータを削除します。
SET spark.adb.lakehouse.enabled=true; DROP TABLE adb_external_db_iceberg.test_iceberg_tbl;
XIHE SQL を使用したレイクストレージテーブルの読み書き
前提条件
クラスターのカーネルバージョンが 3.2.5.3 以降である必要があります。
クラスターバージョンを表示および更新するには、AnalyticDB for MySQL コンソールにログインし、[クラスター情報] ページの [設定情報] セクションに移動します。詳細については、「クラスターのマイナーバージョンを表示および更新する」をご参照ください。
DELETE 文では、XIHE レイクストレージテーブルから個々の行を削除することはできません。データを削除するには、テーブル全体を削除してください。
操作手順
データ開発に移動します。
AnalyticDB for MySQL コンソールにログインします。左上の隅でリージョンを選択します。左側のナビゲーションウィンドウで、[クラスター] をクリックします。対象のクラスターを見つけて、クラスター ID をクリックします。
左側のナビゲーションウィンドウで、[ジョブ開発] > [SQL 開発] を選択します。
[SQLConsole] ウィンドウで、XIHE エンジンとインタラクティブリソースグループを選択します。
外部データベースと Iceberg 外部テーブルを作成します。
外部データベースを作成します。
CREATE EXTERNAL DATABASE test_db WITH DBPROPERTIES ('adb_lake_bucket' = 'adb-lake-cn-shanghai-6gml****');
Iceberg 外部テーブルを作成します。
CREATE TABLE test_db.test_iceberg_tbl ( id int, name string ) PARTITIONED BY (age int) STORED AS ICEBERG TBLPROPERTIES ( 'catalog_type' = 'ADB', 'adb_lake_bucket' = 'adb-lake-cn-shanghai-6gml****' );次の表にパラメーターを説明します。
パラメーター
説明
catalog_typeカタログタイプ。
ADBに設定します。adb_lake_bucketこのテーブルのレイクストレージ。スコープの動作については、上記のパラメーターテーブルをご参照ください。
Iceberg テーブルにデータを書き込みます。
INSERT INTO test_db.test_iceberg_tbl SELECT 1, 'anna', 10; INSERT INTO test_db.test_iceberg_tbl SELECT 2, 'jams', 20;Iceberg テーブルからデータをクエリします。
SELECT * FROM test_db.test_iceberg_tbl;期待される出力:
+---+----+---+ |id |name|age| +---+----+---+ |1 |anna|10 | |2 |jams|20 | +---+----+---+(任意) Iceberg 外部テーブルを削除します。次の文は、AnalyticDB for MySQL からテーブルを削除し、OSS からそのデータを削除します。
DROP TABLE test_db.test_iceberg_tbl;
データ量のクエリ
左側のナビゲーションウィンドウで、[Data Management] > [Lake Storages] を選択します。
[ストレージサイズ] 列で、対象のレイクストレージのデータ量を確認します。
ストレージ使用量の表示には遅延があります。データ書き込み後、データ量はすぐには表示されません。
レイクストレージの削除
続行する前に、レイクストレージ内のすべてのデータを削除してください。データが残っている場合、削除は失敗します。
左側のナビゲーションウィンドウで、[Data Management] > [Lake Storages] を選択します。
対象のレイクストレージの [アクション] 列で、[削除] をクリックします。
[削除] ダイアログボックスで、[OK] をクリックします。