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