AnalyticDB for MySQL の Enterprise Edition、Basic Edition、Data Lakehouse Edition および Data Warehouse Edition はすべて、DMS のタスクオーケストレーション機能をサポートしており、AnalyticDB for MySQL タスクのオーケストレーション、スケジューリング、管理、モニタリングが可能です。このトピックでは、DMS を使用したタスク開発とスケジューリングの方法について説明します。
背景情報
-
課題:イベントスケジューリング
MySQL Event Scheduler などの従来のデータベースイベントスケジューリングは強力ですが、いくつかの制限があります:
-
参入障壁が高い:ユーザーはイベント定義のための特別な SQL 構文 (
CREATE EVENTおよびALTER EVENT) を習得する必要があり、シンプルなインターフェイスでイベントを設定することはできません。 -
データベースカーネルへの強い依存:カーネルがイベントスケジューラをサポートし、有効にする必要があります。
-
単一データベースへの限定:スケジューリングは単一のデータベースに対してのみ実行でき、他のデータベースやツールと連携することはできません。
-
追跡が困難:ユーザーはスケジュールされたイベントの実行ステータス、実行履歴、またはランタイムを閲覧できません。
-
メンテナンスが困難:ユーザーはイベントを一時停止または再実行できず、失敗したイベントは復旧できません。
-
通知機能の欠如:イベントの実行ステータス (成功または失敗) は、SMS、Eメール、またはその他のチャネルを介してユーザーに能動的に通知されません。
-
-
ソリューション:DMS タスクオーケストレーション
DMS のタスクオーケストレーション機能は、前述の問題を解決します。これは、データベースカーネルのイベントスケジューリング機能に依存せず、独立した外部のタスクオーケストレーションおよびスケジューリングシステムです。主な機能は次のとおりです:
-
複数のデータベースエンジン (MySQL、Oracle、PostgreSQL、SQL Server など) とさまざまなエコシステムツール (データ移行、バックアップ、クロスデータベース分析など) をサポートし、クロスデータベースおよびクロスプロダクトのワークフローを実現します。
-
ドラッグアンドドロップ操作と簡単な設定でスケジューリングタスクを作成できる、ビジュアル編集インターフェイスを提供します。
-
DingTalk、SMS、Eメールなど、複数の通知メカニズムをサポートします。
-
一時停止、終了、再実行など、さまざまな運用保守操作をサポートします。
-
サンプルデータ
この例では、データベース名は adb_test です。このデータベースには、orders、finish_orders、large_finish_orders の 3 つのテーブルを作成します。
create database adb_test;
create table orders(
order_id bigint not null comment'注文 ID',
order_status varchar not null comment'注文ステータス',
total_price decimal(15,2) not null comment'合計金額',
order_date date not null comment'注文日',
PRIMARY KEY (order_id)
);
create table finish_orders(
order_id bigint not null comment'注文 ID',
total_price decimal(15,2) not null comment'注文ステータス',
order_date date not null comment'注文日',
PRIMARY KEY (order_id)
);
create table large_finish_orders(
order_id bigint not null comment'注文 ID',
total_price decimal(15,2) not null comment'注文ステータス',
order_date date not null comment'注文日',
PRIMARY KEY (order_id)
);
概要
このトピックでは、AnalyticDB for MySQL Data Warehouse Edition クラスターを例として、タスクスケジューリングプロセスについて説明します。DMS のタスクオーケストレーション機能を使用して、AnalyticDB for MySQL データベースの orders テーブルから、注文金額が 10,000 USD を超える完了済み注文をフィルタリングします。
|
ステップ |
説明 |
|
タスクフローを作成します。 |
|
|
このステップでは、対象のタスクフローに次の 2 つのタスクノードを作成します:
|
|
|
対象のタスクを有効にし、定期的に実行するように設定します。 |
ステップ 1:タスクフローの作成
-
AnalyticDB for MySQL コンソールにログインします。左上隅で、クラスターのあるリージョンを選択します。左側のナビゲーションペインで、[Clusters] をクリックします。ターゲットクラスターを見つけて、クラスター ID をクリックします。
-
左側のナビゲーションペインで、 を選択します。
説明-
DMS (新バージョン) を介して AnalyticDB for MySQL クラスターデータベースに初めてログインし、データアセット管理機能を使用する場合、まずデータベースのログイン情報を入力する必要があります。詳細については、「データベースへのログイン」をご参照ください。
-
以前に AnalyticDB for MySQL クラスターデータベースにログインしたことがあり、クラスターのコントロールモードが [柔軟管理] または [安定変更] に設定されているものの、データベースのログイン情報を入力する際に [Remember Password] を選択しなかった場合、DMS コンソールに移動した後、表示されるダイアログボックスにターゲットデータベースアカウントのパスワードを入力しないと続行できません。コントロールモードの詳細については、「コントロールモード」をご参照ください。
-
統合データ管理機能は、インドネシア (ジャカルタ) リージョンの AnalyticDB for MySQL クラスターではサポートされていません。
-
-
上部メニューで、[Integration & Development (DTS)] を選択します。
-
左側のナビゲーションペインで、 を選択します。
-
新しいタスクフローを作成します。この例では、タスクフローに「Order Filtering」という名前を付けます。
-
[Create Task Flow] をクリックします。
-
[New Task Flow] ダイアログボックスで、[Task Flow Name] と [Description] を入力し、[OK] をクリックします。
-
ステップ 2:タスクノードの作成
-
[Order Filtering] のタスクオーケストレーションページで、次の 2 つのタスクノードを作成し、設定します:
-
Order Cleansing
-
左側のペインで [Single Instance SQL] を選択し、右側の空のキャンバスにドラッグします。
-
新しく追加されたタスクノードを選択し、
アイコンをクリックして、名前を Order Cleansingに変更します。 -
タスクノードをダブルクリックするか、
アイコンをクリックしてタスクノードを編集します。 -
データベースのドロップダウンリストからターゲットデータベースを選択します。
-
ターゲットデータベースの下のダイアログボックスに SQL ステートメントを入力し、[Save] をクリックします。ステートメントは次のとおりです:
insert into finish_orders select order_id,total_price,order_date from orders where order_status = 'F';説明[Auto Save] が選択されている場合、SQL ステートメントは入力後に自動的に保存されます。
-
-
Large Order Generation
-
左側のペインで [Single Instance SQL] を選択し、右側の空のキャンバスにドラッグします。
-
新しく追加されたタスクノードを選択し、
アイコンをクリックして、名前を Large Order Generationに変更します。 -
タスクノードをダブルクリックするか、
アイコンをクリックしてタスクノードを編集します。 -
データベースのドロップダウンリストからターゲットデータベースを選択します。
-
ターゲットデータベースの下のダイアログボックスに SQL ステートメントを入力し、[Save] をクリックします。ステートメントは次のとおりです:
insert into large_finish_orders select order_id,total_price,order_date from finish_orders where total_price > 10000;説明[Auto Save] が選択されている場合、SQL ステートメントは入力後に自動的に保存されます。
-
-
-
タスクフローキャンバスで、
Order Cleansingノードにカーソルを合わせます。ノードの右側にある小さな円をクリックし、接続線をLarge Order Generationノードにドラッグして、2 つのタスクノード間の依存関係を作成します。
ステップ 3:タスクフローのスケジューリング設定
-
タスクフローキャンバスの下にある [スケジュール設定] セクションで、[Enable Scheduling] スイッチをオンにし、関連パラメータを設定します。
説明この例では、スケジューリングタスクは 2023-02-01 から 2023-02-28 まで毎日 01:00 に実行されるように設定されています。ビジネスニーズに基づいてスケジューリングタスクをカスタマイズすることもできます。スケジューリング設定パラメータの詳細については、「スケジューリングの設定」をご参照ください。
-
タスクフローを公開します。
-
キャンバスの左上隅にある [Publish] をクリックします。
-
[Publish] ダイアログボックスで、[Remarks] に備考を入力し、[OK] をクリックしてタスクフローを公開します。
-
-
公開ステータスを確認します。
-
キャンバスの上にある [Go to O&M] をクリックします。
-
ページの右側で、タスクフローの [公開ステータス]を確認します。
-
[Published]:タスクフローは公開済みです。
-
[Unpublished]:タスクフローは未公開です。
-
-