Alibaba Cloud によるリアルタイム分析: 高性能データウェアハウス

> 本記事は[こちらのブログ](https://www.alibabacloud.com/blog/real-time-analytics-with-alibaba-cloud-high-performance-data-warehousing_602010?spm=a2c65.11461433.0.0.4ee35355dd2EPX)を参考にしています。
> 翻訳にはアリババクラウドの[ModelStudio](https://www.alibabacloud.com/en/product/modelstudio)([Qwen](https://www.alibabacloud.com/en/solutions/generative-ai/qwen))を使用しております。

# デモ: PolarDBとAnalyticDBを使用したリアルタイム分析向けデータウェアハウスの構築

このデモでは、Alibaba CloudのPolarDB、Data Transmission Service (DTS)、およびAnalyticDBを使用して、インテリジェントなホットおよびコールドデータの階層化を特徴とする高性能でコスト効率の高いデータウェアハウスソリューションを作成する方法を紹介します。以下が学習内容です：

- PolarDB for MySQLからAnalyticDB for MySQLへのリアルタイムでのデータ同期方法。
- AnalyticDB for MySQLにおけるホットおよびコールドデータの階層化機能を利用してストレージコストを削減する方法。

では、まずデモンストレーション環境の簡単な概要から始めましょう。  
[デモビデオリンク](https://video-intl.alicdn.com/2025/Blog/Demo_Build%20Online%20Data%20Lakehouse.mp4)

インドネシア（ジャカルタ）リージョンで実行されているPolarDB for MySQL 5.7インスタンスがあります。これを現在の本番環境と考えてください。これはApsaraDB RDS for MySQLでも構いません。  
![1](https://yqintl.alicdn.com/6ab4f5d6871f72f9f594d4d4cceb6c0a231ccd0e.png)

それでは、このデモのために準備されたテストデータを確認するためにPolarDBにログインしましょう。  
![2](https://yqintl.alicdn.com/08db09d3383b395bb9e8245a5c47496ac4490fdb.png)

ここで、`db_1`という1つのデータベースと、`sales_range_columns`という名前のテーブルがあります。  
![3](https://yqintl.alicdn.com/965e43374dd1c0335e398cf81d8bcb239b236fc8.png)

`SHOW CREATE TABLE`コマンドでテーブルスキーマを確認しましょう。ご覧の通り、これはパーティション分割されたテーブルで、主キーを持っています。パーティションキーは`create_date`であり、現在12個のパーティションがあります。  
![4](https://yqintl.alicdn.com/4a67cc743d07fb5375f6f49539226cbc8a1af8b7.png)

レコード数を確認しましょう。このテーブルには100万件のレコードが含まれています。  
![5](https://yqintl.alicdn.com/1e8b98cf8eb08fd56ad775221615c3e208561ff1.png)

次に、既存のすべてのデータと新しいデータをAnalyticDB for MySQLに同期します。PolarDBコンソールに戻り、リアルタイムデータ同期に必要なバイナリログを有効にします。バイナリログを有効にするとインスタンスが再起動されることに注意してください。再起動には約40秒かかりますので、特に本番環境では安全な時期に行うようにしてください。  
![6](https://yqintl.alicdn.com/c2dc4fabdc9dc9dc00037c2a88674b461353095a.png)  
![7](https://yqintl.alicdn.com/c42b40182828719e9f90661cfbf97529606b3f7e.png)

インスタンスが再び稼働したら、AnalyticDB for MySQLコンソールに移動します。PolarDBと同じリージョンに空のAnalyticDB for MySQLインスタンスを設定しました。  
![8](https://yqintl.alicdn.com/851c527742c818ed6a05ff7df01b09e6425a7f30.png)

データベースアカウントとして、作成、選択、削除、変更、更新の権限を持つ`user_1`を作成しました。このアカウントはリアルタイムデータ同期に使用されます。  
![9](https://yqintl.alicdn.com/ee34506fb5a7405b53ca224dd026c04c900e187b.png)

次に、DTSコンソールに移動して、PolarDBからAnalyticDBへのデータ同期タスクを設定します。「タスクの作成」をクリックし、ソースとしてPolarDB for MySQLを選択し、ターゲットとしてAnalyticDB for MySQLを選択します。両方のインスタンスのリージョンを選択し、インスタンスIDとログイン資格情報を入力します。接続性をテストします。  
![10](https://yqintl.alicdn.com/40e413113374148fe6ed1f63c4591d0c598caeb4.png)  
![11](https://yqintl.alicdn.com/ddf68e692eb65e9322583ee7c7b1a000bcecf5ef.png)  
![12](https://yqintl.alicdn.com/2b576904a5304196a57edd8dd434356cfa8c3063.png)

同期対象のオブジェクトを設定します。スキーマ同期、フルデータ同期、増分データ同期のすべての同期タイプが選択されていることを確認してください。DDLおよびDMLの同期設定は必要がない限りデフォルトのままにしておきます。  
![13](https://yqintl.alicdn.com/c14ead1ae4caf244ed7638e4f4f3b88006b20d93.png)

同期するデータベースとテーブルオブジェクトを選択して進みます。  
![14](https://yqintl.alicdn.com/5cd26e3a97515e598294bcf90952c31b0ab60cdd.png)

DTSはデータの一貫性を確保するためのさまざまなデータ検証モードを提供しており、その一部は無料です。これらは設定中またはその後にニーズに基づいて有効にできます。  
![15](https://yqintl.alicdn.com/35b1c679de62d838a868193d5357c8f76a78f45a.png)

次に、テーブルスキーママッピングを設定します。パーティションキーおよびメソッドなどの設定を確認し、ソーステーブルとの一貫性を保つために次のステップに進む前に確認します。  
![16](https://yqintl.alicdn.com/bd56bb1e772465ab9fae0fbbbd9c03b9cbc78e22.png)

テーブルスキーママッピングを設定した後、タスクを保存し、事前チェックを開始します。  
![17](https://yqintl.alicdn.com/b26af400cc1b4a4f5c751794b45fe1c5b8d3586f.png)

現時点ではすべて順調です。次に、継続的なデータ同期を維持するためにDTSインスタンスを購入します。デフォルトでは「DTS Serverless」が表示されますが、必要に応じて従量課金制やサブスクリプションなどの他の課金方法も選択できます。  
![18](https://yqintl.alicdn.com/41a32c115255e02baa47c9645c45c44b96d54cb5.png)  
![19](https://yqintl.alicdn.com/e82de78e94da40eb36d29af0b7386f0f95ed611d.png)

注文を完了すると、DTSタスクが自動的に開始されます。データ同期が進行するにつれて、DTSタスクは
[28](https://yqintl.alicdn.com/6315f5fc0a35d2184a51219420212133b3e30dce.png)  
次に、PolarDBのソーステーブルに列を追加し、自動的に同期されるかどうかを確認しましょう。PolarDB SQLコンソールでテーブルに列を追加するDDL操作を実行します。テーブルスキーマを確認して、変更が適用されたことを確認してください。  
![](https://yqintl.alicdn.com/fc32c4a70b79d4982f745ee68bc3d757536f06fb.png)  
![](https://yqintl.alicdn.com/8d2f0357042b0963cfa5a1ed7d1cd753bf3d07cd.png)  

AnalyticDB SQLコンソールに切り替えて、テーブルスキーマを確認します。新しい列が存在することを確認でき、同期が成功したことが分かります。  
![](https://yqintl.alicdn.com/5c7ac5b5b07fa16a8bfe0aa6664a88de15256837.png)  
![](https://yqintl.alicdn.com/bee576d065efd4e4de43a8d9663bb628491f5086.png)  

これまでのところ、OLTPデータベースであるPolarDBからOLAPデータベースであるAnalyticDBへのリアルタイムデータ同期を確立し、増分データ同期テストを完了しました。次に、AnalyticDBでホット/コールドデータの階層化を開始しましょう。これは迅速かつ簡単です。AnalyticDB SQLコンソールにログインします。テーブルのストレージポリシーを調整して、階層化ストレージを実装し、ホットパーティションの数を定義します。ホットパーティション内のレコードはホットストレージに留まり、それ以外のレコードは自動的にOSSにアーカイブされます。  
![](https://yqintl.alicdn.com/d97b4f61deaf7714b8de4153fe795cfcb872a5e2.png)  
![](https://yqintl.alicdn.com/62afed4a1a2943b2c14eddb770f940eb338462c2.png)  

データアーカイブの進行状況をクエリします。進行状況が100％に達すると、タスクのステータスはINITからRUNNING、そしてFINISHに変わります。完了後、SHOW TABLE SCHEMAを使用してストレージポリシーの違いやホットパーティションの設定を確認できます。また、ホットストレージとコールドストレージのストレージサイズなどの詳細も確認できます。  
![](https://yqintl.alicdn.com/6b2bb3a4abaa92bdf8938d749289b06c98b8eb3e.png)  
![](https://yqintl.alicdn.com/46e1b9ae707ac458784975d2acd930056924e2b8.png)  

データが増え続けると、ホットパーティションは自動的にコールドアーカイブに移動します。この自動階層化ストレージにより、効率が大幅に向上します。最後に気になる点として、階層化ストレージによってパフォーマンスが低下することはないでしょうか？遅くなることはないのでしょうか？デモを終える前に、ホットストレージとコールドストレージ（OSS）の両方から読み取る混合クエリの例を使ってこれを確認しましょう。  
![](https://yqintl.alicdn.com/bf8c5c47bb6ad370eb9588be808e2fb393a60e8b.png)  

ご覧の通り、引き続き高速です。PolarDBとAnalyticDBを使用して効率的なリアルタイム分析ソリューションを作成するデモをご覧いただき、ありがとうございました。