このトピックでは、PolarDB X-Engine エディションのメリット、アーキテクチャ、およびシナリオについて説明します。
既存データのアーカイブに関する課題と要件
課題
ほとんどの場合、新しいデータは既存データよりも頻繁に読み取られたり更新されたりします。 1 年前に生成されたメッセージや注文などの既存データにはめったにアクセスされません。 ビジネスの進展に伴い、データベースシステムには、アクセス頻度が低い、またはまったくアクセスされない大量のデータが保存されます。 これにより、次の問題が発生する可能性があります。
既存データと新しいデータが同じデータベースシステムに保存されます。 これにより、ディスク容量が不足する可能性があります。
大量のデータが、データベースシステムのメモリ、キャッシュ領域、およびディスク IOPS リソースを共有します。 これにより、データベースのパフォーマンスが低下する可能性があります。
大量のデータをバックアップする操作には長い時間がかかり、失敗する可能性があります。 操作が成功した場合でも、バックアップファイルの保存は解決すべき問題です。
これらの問題は、既存データをアーカイブすることで解決できます。 既存データは、Object Storage Service(OSS)やDatabase Backup(DBS)などの低コストのストレージサービスを使用してファイルとして保存できます。 実際のビジネスシナリオでは、既存データは完全に静的ではありません。 数か月または数年前に生成された既存データは、リアルタイムまたは随時クエリまたは更新される場合があります。 たとえば、淘宝網や天猫の過去の注文、DingTalk の過去のメッセージ、菜鳥の過去の物流注文などの既存データは、Alibaba グループ内でクエリできます。
要件
既存データの読み取りと更新に関連する問題を解決するために、X-Engine エディションをアーカイブデータのみを保存する別のデータベースとして使用できます。 X-Engine エディションは、次の要件を満たす必要があります。
継続的に生成されるオンラインデータを保存するために、大容量ストレージを提供する必要があります。 これにより、ストレージ容量について心配する必要がなくなります。
X-Engine エディションは、オンラインデータベースと同じインターフェイスを提供する必要があります。 たとえば、アーカイブデータベースは、オンラインデータベースと同じ方法で MySQL プロトコルをサポートする必要があります。 これにより、アプリケーションはオンラインデータベースと X-Engine エディションにアクセスでき、コードを変更する必要がなくなります。
費用対効果が高い必要があります。 たとえば、データを圧縮して消費されるディスク容量を削減し、低コストのストレージメディアを使用して大量のデータを保存できます。
低頻度の読み取りと書き込みの要件を満たす読み取りおよび書き込み機能を提供する必要があります。
MySQL は、世界で最も広く使用されているオープンソースデータベースシステムですが、上記のすべての要件を満たすソリューションを提供できていません。 TokuDB や MyRocks などのエンジンは高いデータ圧縮率を提供します。 ただし、これらのエンジンのいずれかを使用して保存できるデータ量は、各物理マシンのディスク容量によって制限されます。
ソリューション: PolarDB X-Engine エディション
前述の課題に対処し、アーカイブデータの保存要件を満たすために、PolarDB X-Engine エディションは、次の技術革新とブレークスルーに基づいて開発された機能を提供します。
X-Engine エディションは、ログ構造マージツリー(LSM ツリー)アーキテクチャに基づいて Alibaba Cloud によって開発されました。 X-Engine エディションは強力なデータ圧縮機能を提供し、低コストでアーカイブデータベースを使用できます。 X-Engine エディションは、LSM ツリーと Zstandard(ZSTD)データ圧縮アルゴリズムを使用してデータ圧縮率を高めます。 InnoDB と比較して、X-Engine エディションはストレージ使用量を最大 70% 削減できます。 X-Engine エディションの詳細については、「X-Engine の概要」をご参照ください。 X-Engine エディションには制限があり、特に MySQL との互換性に関して制限があります。 詳細については、「使用上の注意」をご参照ください。
PolarDB は、共有分散ストレージに基づくストレージ容量のオンライン拡張をサポートしています。 PolarDB は、高速ネットワークを介してコンピューティングリソースとストレージリソースを接続し、リモートダイレクトメモリアクセス(RDMA)プロトコルを使用してデータを送信します。 これにより、I/O パフォーマンスのボトルネックが解消されます。 PolarDB に統合された X-Engine エディションは、これらのメリットを提供します。
X-Engine エディションは、次の技術革新を使用して PolarDB に統合されています。 これにより、PolarDB をデュアルエンジンアーキテクチャで実行できます。
X-Engine エディションの先行書き込みログ(WAL)ログストリームは、InnoDB の REDO ログストリームと結合されます。 これにより、同じログストリームと伝送チャネルを使用して、InnoDB と X-Engine エディションがサポートされます。 管理ロジックと共有ストレージとの相互作用のロジックは変更されません。 このアーキテクチャは、後で導入される他のエンジンで再利用できます。
X-Engine エディションの I/O モジュールは、PolarDB InnoDB の Polar File System(PFS)に適合しています。 これにより、InnoDB と X-Engine エディションは同じ分散ストレージを使用します。 バックアップは、基盤となる分散ストレージに基づいて高速化されます。
X-Engine エディションの計算ノードアーキテクチャ
X-Engine エディションクラスタは、1 つのプライマリノードと複数の読み取り専用ノードで構成されます。 プライマリノードは、読み取りおよび書き込みリクエストを処理します。 クラスタは、専用および汎用の仕様をサポートしています。
X-Engine エディションのマルチノードアーキテクチャにより、PolarDB クラスタの高可用性が確保されます。 クラスタ内のプライマリノードに障害が発生した場合、クラスタは自動的に読み取り専用ノードにフェイルオーバーできます。 その後、読み取り専用ノードが新しいプライマリノードとして機能します。 これにより、サービスの可用性は少なくとも 99.99% になります。 次の図は、X-Engine エディションのマルチノードアーキテクチャを示しています。
メリット
X-Engine エディションは大容量ストレージを提供します。 200 TB のストレージ容量と圧縮機能に基づいて、X-Engine エディションは 500 TB を超える生データを保存できます。 X-Engine エディションはサーバーレスアーキテクチャを使用しているため、データ量の増加に伴ってストレージ容量が自動的に増加します。 これにより、PolarDB クラスタを購入する際にストレージ容量を指定する必要がなくなります。 使用した実際のストレージ容量に対して課金されます。
PolarDB X-Engine エディションは、公式の MySQL プロトコルをサポートしています。 既存データを HBase などの NoSQL サービスにバックアップする他のソリューションと比較して、X-Engine エディションでは、コードを変更することなく、アプリケーションがオンラインデータベースと X-Engine エディションにアクセスできます。
X-Engine エディションは、PolarDB の基盤となる分散ストレージによって提供されるバックアップ機能を使用して、短時間で大量のデータをバックアップします。 バックアップファイルは、OSS などの低コストのストレージサービスにアップロードして永続的に保存できます。
X-Engine エディションのマルチノードアーキテクチャは、強力なデータ圧縮機能を提供してストレージコストを削減し、クラスタの高可用性を確保します。 クラスタ内のプライマリノードに障害が発生した場合、クラスタは自動的に読み取り専用ノードにフェイルオーバーできます。 その後、読み取り専用ノードが新しいプライマリノードとして機能します。 これにより、サービスの可用性は少なくとも 99.99% になります。
sysbench のテスト結果によると、このデュアルエンジンストレージモードでは、シングルエンジンモードと比較してパフォーマンスの低下はわずか 20% です。 クラスタに数百 GB や TB などの大量のデータがある場合は、X-Engine エディションを有効にすることで、クラスタのパフォーマンスをわずかに低下させる代わりに、コストを大幅に削減できます。
シナリオ
PolarDB X-Engine エディションは大容量のストレージ容量を提供し、複数のサービスの既存データを保存するために使用できます。 これにより、すべての既存データの集中ストレージと管理が保証されます。 X-Engine エディションは、次のシナリオに適しています。
PolarDB X-Engine エディションは、自己管理データベースのコールドデータをオフラインで保存するために使用されます。 自己管理データベースは、MySQL、TiDB、PostgreSQL、SQL Server、またはその他のリレーショナルデータベースにすることができます。
PolarDB X-Engine エディションは、ApsaraDB RDS for MySQL または PolarDB for MySQL のアーカイブデータを保存するために使用されます。 アクセス頻度の低い既存データを PolarDB for MySQL X-Engine エディションに移行できます。 これにより、オンラインデータベースのストレージ容量が解放され、コストを削減し、パフォーマンスを向上させることができます。
PolarDB X-Engine エディションは、大容量のストレージ容量を提供するリレーショナルデータベースサービスとして使用されます。 これは、監視ログなど、大量のデータを書き込む必要があるが、データへのアクセス頻度が低いシナリオに適用できます。
Data Transmission Service(DTS)を使用して、オンラインデータベースから PolarDB X-Engine エディションにデータをリアルタイムで継続的に移行できます。 また、Data Management(DMS)を使用して、オンラインデータを PolarDB X-Engine エディションに定期的にインポートすることもできます。 DTS と DMS の詳細については、「DTS とは」および「DMS とは」をご参照ください。
サポートされているバージョン
クラスタの カーネルバージョンは、次のいずれかの要件を満たしています。
リビジョンバージョンが 8.0.1.1.31 以降の MySQL 8.0.1
リビジョンバージョンが 8.0.2.2.12 以降の MySQL 8.0.2
ノードの仕様と料金
X-Engine エディションは、汎用 および 専用 の仕様をサポートしています。 詳細については、「PolarDB for MySQL Enterprise Edition の計算ノードの仕様」をご参照ください。
X-Engine Edition の料金の詳細については、「従量課金制の計算ノードの価格」をご参照ください。