説明
このチュートリアルは、OB Cloudコンソールにもインタラクティブチュートリアルとして同時に公開されています。本物のOB Cloud環境でチュートリアルに沿ってインタラクティブに体験することも可能です。OB Cloudコンソール にログインし、左側のナビゲーションバーの 実践チュートリアル をクリックすると、公開されているすべてのインタラクティブチュートリアルを見ることができます。
背景
このチュートリアルでは、OceanBaseを使用してモバイル注文アプリを構築し、OceanBaseのHTAP性能を体験します。ここで構築するモバイル注文アプリは、PC端末からの直接注文操作をサポートするだけでなく、複数人がスマートフォンでQRコードをスキャンする機能も革新的に取り入れており、リアルタイムのオンライン注文を実現しています。これにより、ユーザーエクスペリエンスとインタラクションの柔軟性が向上しています。アプリ内の注文データはOBのTPデータベースに書き込まれ、Flink CDCを通じてOBのAPデータベースにリアルタイムで同期され、最新データはAPデータベースから取得します。この同期メカニズムは、APデータベースから最先端の注文データを取得するための強力なサポートを提供します。
前提条件
ご自身が現在のインスタンスのインスタンス管理者およびデータ読み取り権限を保有していること。権限がない場合は、組織管理者に連絡して追加してもらえます。
利用可能な分析型(MySQL)クラスタインスタンスをお持ちであること。テナントの作成については、テナントの作成をご参照ください。利用可能なインスタンスがない場合は、OB Cloudクラウドデータベースの無料トライアルインスタンスを開始することができます。詳細については、無料トライアルのルールと開始方法に関するドキュメントをご覧ください。
ご利用のデータベースカーネルバージョンが4.3.0以上であり、ソース側でBinlogサービスが有効になっていること。
組織管理者権限を保有し、クラスタインスタンスを作成済みであること。詳細については、クラスタインスタンスの作成に関するドキュメントをご参照ください。
プロジェクト管理者またはインスタンス管理者として、プロジェクト内のインスタンスを操作できる権限を保有していること。権限がない場合は、組織管理者に連絡して権限の追加を依頼してください。
Flink CDCをデプロイ済みであること。
前提条件
アカウントの作成
- tutorial_tenantテナントを選択します。
- **テナントコンソール**ページに移動します。
- **アカウントを作成**をクリックします。
- ポップアップウィンドウで、**アカウント名**に
tutorial_userと入力します。テナントのアカウント名は自由に設定できます。 - アカウントの種類: 普通アカウントを選択します。
- アイコンをクリックしてデータベースを選択し、default_databaseを権限付与します。
説明
OB Cloudは、空のdefault_databaseデータベースを自動的に作成しています。実際の使用状況に応じて、他のデータベースを選択または作成することもできます。詳細については、データベースの作成に関するドキュメントをご参照ください。
アイコンをクリックして、現在のアカウントに読み取りと書き込みの権限を付与します。
クリックしてランダムに生成されたパスワードを使用します。システムが自動的にパスワードを生成するため、コピーして大切に保管してください。また、パスワードは10~32文字で、大文字英字2文字、小文字英字2文字、数字2文字、特殊文字2文字を含むようにカスタマイズすることもできます。サポートされている特殊文字は以下のとおりです:
~ ! @ # % ^ & * _ - + = \| ( ) { } [ ] : ; , . ? / |。**作成する**をクリックします。
データベースの作成とテーブルの作成
**テナントコンソール**ページに移動します。
**データベースを作成**をクリックし、ポップアップウィンドウでデータベース名にtptestと入力します。文字セットを選択し、TPデータベースとして使用します。
**作成**をクリックします。
ステップ1~3を繰り返して、APデータベースとしてaptestデータベースを作成します。
TPデータベースとAPデータベースにそれぞれテーブルを作成します。
**SQLコンソール**ページに移動します。
tutorial_userアカウントを選択し、パスワードを入力してログインします。**OK**をクリックします。左側の
tptestデータベースをダブルクリックして、新しいSQLウィンドウを開きます。以下のSQLを実行します。create table tp_car_orders( order_id bigint primary key NOT NULL AUTO_INCREMENT, -- order_time のデフォルト値はデータベースが自動生成します order_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, customer_name varchar(25) COLLATE utf8mb4_bin NOT NULL, sale_nation varchar(25) COLLATE utf8mb4_bin NOT NULL, sale_region varchar(25) COLLATE utf8mb4_bin NOT NULL, car_color varchar(25) COLLATE utf8mb4_bin NOT NULL, car_price decimal(15,2) NOT NULL );アイコンをクリックしてSQLステートメントを実行します。**実行記録**タブには、作成されたテーブル情報が表示されます。
左側の
aptestデータベースをダブルクリックし、新しいSQLウィンドウを開きます。以下のSQLを実行します。create table ap_car_orders( order_id bigint primary key NOT NULL AUTO_INCREMENT, -- order_time は tp_car_orders テーブルから同期されます order_time timestamp NOT NULL, customer_name varchar(25) COLLATE utf8mb4_bin NOT NULL, sale_nation varchar(25) COLLATE utf8mb4_bin NOT NULL, sale_region varchar(25) COLLATE utf8mb4_bin NOT NULL, car_color varchar(25) COLLATE utf8mb4_bin NOT NULL, car_price decimal(15,2) NOT NULL ) WITH COLUMN GROUP (each column);アイコンをクリックしてSQLステートメントを実行します。**実行記録**タブには、作成されたテーブル情報が表示されます。
左側の
tptestデータベースをダブルクリックし、新しいSQLウィンドウを開きます。以下のSQLを実行して、
tptestデータベースの3つのテーブルにいくつかのデータを挿入します。INSERT INTO `tp_car_orders` (`car_price`,`car_color`,`sale_region`,`sale_nation`,`customer_name`) VALUES (299900,'blue','Washington','America','Lucy'); INSERT INTO `tp_car_orders` (`car_price`,`car_color`,`sale_region`,`sale_nation`,`customer_name`) VALUES (299900,'blue','Washington','America','Lily'); INSERT INTO `tp_car_orders` (`car_price`,`car_color`,`sale_region`,`sale_nation`,`customer_name`) VALUES (299900,'blue','Washington','America','Tina'); INSERT INTO `tp_car_orders` (`car_price`,`car_color`,`sale_region`,`sale_nation`,`customer_name`) VALUES (299900,'blue','Washington','America','Amy'); INSERT INTO `tp_car_orders` (`car_price`,`car_color`,`sale_region`,`sale_nation`,`customer_name`) VALUES (299900,'blue','Washington','America','小张'); INSERT INTO `tp_car_orders` (`car_price`,`car_color`,`sale_region`,`sale_nation`,`customer_name`) VALUES (299900,'blue','Washington','America','小李'); INSERT INTO `tp_car_orders` (`car_price`,`car_color`,`sale_region`,`sale_nation`,`customer_name`) VALUES (299900,'blue','Washington','America','小孙');アイコンをクリックしてSQLステートメントを実行します。**実行履歴**タブに関連情報が表示されます。
Flink同期リンクの構築
Flink CDCを起動した後、Flinkファイルのデプロイメントフォルダに移動し、./bin/sql-client.sh コマンドを実行してFlink SQLインターフェースを開きます。以下のSQLを順番に実行します。
```sql
CREATE TEMPORARY TABLE tp_car_orders_cdc (
order_id bigint primary key NOT ENFORCED,
order_time timestamp NOT NULL,
customer_name varchar(25) NOT NULL,
sale_nation varchar(25) NOT NULL,
sale_region varchar(25) NOT NULL,
car_color varchar(25) NOT NULL,
car_price decimal(15,2) NOT NULL
) WITH (
'connector' = 'mysql-cdc',
'hostname' = '******.huawei-cn-southwest-2.oceanbase.cloud',
'port' = '3306',
'username' = 'wktest',
'password' = '******',
'database-name' = 'tptest',
'server-time-zone'='Asia/Shanghai',
'table-name' = 'tp_car_orders',
'server-id' = '100-200'
);
CREATE TEMPORARY TABLE ap_car_orders_cdc (
order_id bigint primary key NOT ENFORCED,
order_time timestamp NOT NULL,
customer_name varchar(25) NOT NULL,
sale_nation varchar(25) NOT NULL,
sale_region varchar(25) NOT NULL,
car_color varchar(25) NOT NULL,
car_price decimal(15,2) NOT NULL
) WITH (
'connector' = 'jdbc',
'url' = 'jdbc:mysql://******.huawei-cn-southwest-2.oceanbase.cloud:3306/aptest',
'username' = 'wktest',
'password' = '******',
'table-name' = 'ap_car_orders'
);
INSERT INTO ap_car_orders_cdc SELECT * FROM tp_car_orders_cdc;
```
上記のFlink CDC同期リンクを作成すると、データはリアルタイムでtptestデータベースからaptestデータベースに同期されます。SQLコンソールで対応するテーブルデータを確認できます。
アプリケーションの設定
以下のコマンドを実行してアプリケーションコードを取得します。
git clone https://github.com/dengfuping/oceanbase-playground.gitcd oceanbase-playgroundを実行して、プロジェクトフォルダに移動します。pnpm iを実行して、プロジェクトの依存関係をインストールします。wk.envファイルを新規作成し、TPおよびAPライブラリのデータベース接続文字列を設定します。内容の例は以下のとおりです。OLTP_DATABASE_URL="mysql://wktest:******@******.huawei-cn-southwest-2.oceanbase.cloud:3306/tptest" OLAP_DATABASE_URL="mysql://wktest:******@******.huawei-cn-southwest-2.oceanbase.cloud:3306/aptest"pnpm run devを実行して、アプリケーションを起動します。起動したアプリケーションの接続にアクセスします。
npm run seedを実行して、テストデータをインポートします(オプション)。
上記の手順で操作を実行すると、Webページで実行結果を確認できます。