AnalyticDB for MySQL はレイクストレージ機能を導入しました。この機能は、データレイクの構築とストレージ管理を簡素化し、タスクを最適化し、Iceberg や Paimon などのフォーマットの構造化テーブルデータと、非構造化ファイルオブジェクトをサポートします。主にオフラインのバッチ処理とリアルタイム分析の両方を必要とするシナリオ向けに設計されています。このトピックでは、レイクストレージの作成と変更方法、およびレイクストレージ内のデータ量を確認する方法について説明します。
レイクストレージ機能は招待テスト段階にあります。この機能を有効にするには、チケットを送信してテクニカルサポートにお問い合わせください。
前提条件
AnalyticDB for MySQL Enterprise Edition、Basic Edition、または Data Lakehouse Edition のクラスターが作成されていること。
機能紹介
AnalyticDB for MySQL のレイクストレージは、Iceberg や Paimon などのフォーマットの構造化テーブルデータと、非構造化ファイルオブジェクトを格納できます。フルマネージドアーキテクチャを通じて、レイクストレージはデータレイクの構築、メタデータ管理、ストレージの最適化などの複雑なタスクを自動的に処理し、ストレージコストを削減しながらクエリパフォーマンスを向上させます。統一されたメタデータ管理とサービス指向のリソーススケジューリングにより、基盤となるインフラストラクチャを維持することなく、データインジェスト、ストレージの最適化、およびマルチエンジン協調コンピューティングプロセスを迅速に完了できます。
課金
レイクストレージを作成した後、AnalyticDB for MySQL は、レイクストレージ内のデータ量と使用期間に基づいて、従量課金方式で課金します。課金の詳細については、「Enterprise Edition と Basic Edition の料金」および「Data Lakehouse Edition の料金」をご参照ください。
レイクストレージでデータを読み書きする際に、PUT リクエスト料金や GET リクエスト料金などのリクエスト料金が発生します。課金の詳細については、「Enterprise Edition と Basic Edition の料金」および「Data Lakehouse Edition の料金」をご参照ください。
注意事項
1 つの Alibaba Cloud アカウントで、同じリージョンに最大 5 つのレイクストレージインスタンスを作成できます。
レイクストレージインスタンスのストレージ使用量はリアルタイムで更新されません。データ書き込み直後にデータサイズを表示することはできません。
レイクストレージを削除する際は、レイクストレージ内のすべてのデータが削除されていることを確認する必要があります。そうでない場合、削除操作は失敗します。
レイクストレージを作成すると、AnalyticDB for MySQL は、そのサービスアカウントの下の OSS に、レイクストレージと同じ名前で、AnalyticDB for MySQL クラスターと同じリージョンにバケットを自動的に作成します。このバケットは、お気に入りのパスを追加することで、ご自身の Alibaba Cloud アカウントの OSS で表示できます。
AnalyticDB for MySQL のバックアップおよび回復機能は、レイクストレージ内のデータをサポートしていません。
レイクストレージの作成
AnalyticDB for MySQL コンソールにログインします。コンソールの左上隅でリージョンを選択します。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。管理するクラスターを見つけて、クラスター ID をクリックします。
左側のナビゲーションウィンドウで、 をクリックします。
ページの右上隅にある [レイクストレージの作成] をクリックします。
表示された [レイクストレージの作成] ダイアログボックスで、[OK] をクリックします。
重要レイクストレージ名は、
adb-lake-region-ID-random-stringの形式でシステムによって自動的に生成されます。レイクストレージ名はグローバルに一意であり、作成後に変更することはできません。(オプション) レイクストレージの説明を変更します。
レイクストレージ名はシステムによって自動的に生成され、変更することはできません。異なるビジネスシナリオのレイクストレージインスタンスを区別するために、レイクストレージの説明を変更することをお勧めします。
対象のレイクストレージの[レイクストレージの説明] 列にある
ボタンをクリックします。表示された [レイクストレージの説明を編集] ダイアログボックスで、説明情報を入力し、[OK] をクリックします。
レイクストレージの使用
レイクストレージテーブルは、AnalyticDB for MySQL レイクストレージが提供するフルマネージドのレイクフォーマットテーブルであり、Iceberg および Paimon データ形式をサポートしています。レイクストレージテーブルを作成すると、システムはレイクストレージテーブルに一意の UUID を自動的に生成します。デフォルトのフォーマットは oss://<lake-storage-name>/lakehouse/default/tables/<table_uuid> です。たとえば、レイクストレージテーブル test_iceberg_tbl が adb-lake-cn-shanghai-6gml**** に格納されている場合、生成される UUID は oss://adb-lake-cn-shanghai-6gml****/lakehouse/default/tables/b22cd225-528d-421c-a2**** です。XIHE エンジンと Spark エンジンを介してレイクストレージテーブルを作成、読み取り、書き込みでき、通常の内部テーブルと同様にレイクストレージテーブルの権限とライフサイクルを管理できます。レイクストレージテーブルを読み書きする手順は次のとおりです。
Spark SQL を介したレイクストレージテーブルの読み書き
前提条件
クラスターのカーネルバージョンが 3.2.3.0 以降である必要があります。
AnalyticDB for MySQL クラスターのマイナーバージョンを表示および更新するには、AnalyticDB for MySQL コンソールにログインし、クラスター情報 ページの 構成情報 セクションに移動します。
手順
Data Studio ページに移動します。
AnalyticDB for MySQL コンソールにログインします。コンソールの左上隅でリージョンを選択します。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。管理するクラスターを見つけて、クラスター ID をクリックします。
左側のナビゲーションウィンドウで、 を選択します。
[SQLConsole] ウィンドウで、XIHE エンジンとインタラクティブタイプのリソースグループを選択します。
外部データベースと Iceberg レイクストレージテーブルを作成します。
データベースを作成します。
CREATE DATABASE adb_external_db_iceberg WITH DBPROPERTIES ('adb_lake_bucket' = 'adb-lake-cn-shanghai-6gml****');次の表にパラメーターを示します。
パラメーター
説明
adb_lake_bucket
Data Lake Storage テーブルデータのストレージ場所を指定します。
データベース作成文で Data Lake Storage を指定した場合、データベース内のすべてのテーブルが Data Lake Storage に格納されます。データベース内のすべてのテーブルを Data Lake Storage に格納したくない場合は、テーブル作成時にこのパラメーターを設定できます。
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
Data Lake Storage テーブルデータのストレージ場所を指定します。
データベース作成時に Data Lake Storage を指定した場合、データベース内のすべてのテーブルは Data Lake Storage に格納されます。テーブル作成時にこのパラメーターを再度指定する必要はありません。
データベース作成時に Data Lake Storage を指定しなかった場合、テーブル作成時にこのパラメーターを明示的に指定する必要があります。そうしないと、エラーが発生します。このパラメーターを指定すると、テーブルのデータは指定された Data Lake Storage に格納されます。
データベースとテーブルの両方の作成時に Data Lake Storage を明示的に指定した場合、テーブルのデータはテーブル作成時に指定された Data Lake Storage に格納されます。データベース内の他のテーブルは、データベース作成時に指定された Data Lake Storage に格納されます。
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 内の Iceberg 外部テーブルと OSS 内の Iceberg 外部テーブルデータの両方が削除されます。
SET spark.adb.lakehouse.enabled=true; DROP TABLE adb_external_db_iceberg.test_iceberg_tbl;
XIHE SQL を介したレイクストレージテーブルの読み書き
前提条件
クラスターのカーネルバージョンが 3.2.5.3 以降である必要があります。
AnalyticDB for MySQL クラスターのマイナーバージョンを表示および更新するには、AnalyticDB for MySQL コンソールにログインし、クラスター情報 ページの 構成情報 セクションに移動します。
注意事項
DELETE 文を使用してレイクストレージテーブルから個々のレコードを削除することはサポートされていません。テーブル全体の削除のみがサポートされています。
手順
Data Studio ページに移動します。
AnalyticDB for MySQL コンソールにログインします。コンソールの左上隅でリージョンを選択します。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。管理するクラスターを見つけて、クラスター ID をクリックします。
左側のナビゲーションウィンドウで、 を選択します。
[SQLConsole] ウィンドウで、XIHE エンジンと対話型リソースグループを選択します。
外部データベースと Iceberg 外部テーブルを作成します。
外部データベースを作成します。
CREATE EXTERNAL DATABASE test_db WITH DBPROPERTIES ('adb_lake_bucket' = 'adb-lake-cn-shanghai-6gml****');パラメーター
パラメーター
説明
adb_lake_bucket
レイクストレージテーブルデータのストレージ場所を指定します。
データベース作成文でレイクストレージを指定した後、データベース内のすべてのテーブルはそのレイクストレージに格納されます。データベース内のすべてのテーブルをレイクストレージに格納したくない場合は、テーブル作成時にこのパラメーターを設定できます。
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_db1.test_iceberg_tbl select 1, 'anna', 10; INSERT INTO test_db1.test_iceberg_tbl select 2, 'jams', 20;Iceberg 外部テーブルデータをクエリします。
SELECT * FROM adb_external_db_iceberg.test_iceberg_tbl;戻り値:
+---+----+---+ |id |name|age| +---+----+---+ |1 |anna|10 | |2 |jams|20 | +---+----+---+(オプション) Iceberg 外部テーブルを削除します。
次のステートメントを実行すると、AnalyticDB for MySQL 内の Iceberg 外部テーブルと OSS 内の Iceberg 外部テーブルデータの両方が削除されます。
SET spark.adb.lakehouse.enabled=true; DROP TABLE adb_external_db_iceberg.test_iceberg_tbl;
レイクストレージのデータ量のクエリ
左側のナビゲーションウィンドウで、 をクリックします。
対象のレイクストレージのストレージ使用量でデータ量を確認します。
重要レイクストレージのストレージ使用量の表示には遅延があるため、データ書き込み直後にデータ量を確認することはできません。
レイクストレージの削除
左側のナビゲーションウィンドウで、 をクリックします。
対象のレイクストレージの [アクション] 列にある [削除] をクリックします。
表示された [削除] ダイアログボックスで、[OK] をクリックします。
重要レイクストレージを削除する際は、レイクストレージ内のすべてのデータが削除されていることを確認する必要があります。そうでない場合、削除操作は失敗します。
ボタンをクリックします。