このトピックでは、PolarDB for MySQLのインメモリ列インデックス (IMCI) 機能について説明します。
背景情報
PolarDB for MySQLは、大量のデータを生成するオンラインビジネスを含むオンライントランザクション処理 (OLTP) シナリオを対象としています。 ただし、行ストアベースのPolarDB for MySQLは、すべてのシナリオのクエリパフォーマンス要件を簡単に満たすことはできません。 ほとんどの場合、複雑な分析クエリを実行するには、PolarDB for MySQLからデータをエクスポートし、分析とクエリのためにオンライン分析処理 (OLAP) システムにデータをインポートする必要があります。 これには2つのデータベースシステムが必要であり、コスト、アーキテクチャの複雑さ、およびO&M負荷が増加します。
PolarDB for MySQLは、大量のデータに対する複雑なクエリを伴うOLAPシナリオにIMCI機能を提供します。 IMCI機能により、PolarDB for MySQLは、リアルタイムトランザクション処理とリアルタイムデータ分析を統合した、ワンストップのハイブリッドトランザクション /分析処理 (HTAP) ソリューションを提供できます。 その結果、1つのデータベースシステムのみでOLTPおよびOLAPシナリオの要件を満たすことができます。
サポートされているバージョン
クラスターはEnterprise Editionクラスターで、次のいずれかの要件を満たしている必要があります。
リビジョンバージョンが8.0.1.1.22以降のPolarDB for MySQL 8.0.1のクラスター。
リビジョンバージョンが8.0.2.2.12以降のPolarDB for MySQL 8.0.2のクラスター。
実装
IMCIは、OLAPサービスとOLTPサービスの間でコンピューティングリソースを分離するために、読み取り専用ノードでのみ実装できます。 つまり、OLAPクエリ要求は、プライマリノードではなく、読み取り専用ノードにのみ送信されます。 リクエスト配布ルールを設定して、OLAPクエリリクエストを読み取り専用の行ストアノードに送信するか、読み取り専用の列ストアノードに送信するかを指定できます。 詳細については、「行ストアおよび列ストアノード間のHTAPベースのリクエスト分散の概要」をご参照ください。
料金
IMCI機能は無料で提供されます。 ただし、読み取り専用列ストアノードに対しては、一般的な計算ノードの料金に基づいて課金されます。 詳細については、「従量課金計算ノードの課金ルール」および「サブスクリプション計算ノードの課金ルール」をご参照ください。 IMCIも請求可能なストレージスペースを占有します。 詳細については、「ストレージ料金」をご参照ください。
注意事項
インメモリ列インデックス (IMCI) 機能は、グローバルデータベースネットワーク (GDN) をサポートしていません。
IMCIは、次の条件でのみ、フェールオーバーwithホットレプリカ機能の投票ディスクサービス (VDS) モジュールと一緒に使用できます。
リビジョンバージョンが8.0.1.1.42以降または8.0.2.2.23以降のクラスターの場合:
ホットレプリカ機能を使用したフェールオーバーが有効になっている読み取り専用ノードがクラスターに含まれている場合、読み取り専用列ストアノードをクラスターに追加できます。
読み取り専用列ストアノードがすでにクラスターに存在する場合、クラスター内の読み取り専用ノードに対してホットスタンバイ機能を有効にすることはできません。
リビジョンバージョンが8.0.1.1.42より前または8.0.2.2.23より前のクラスターの場合、IMCI機能とホットレプリカ機能のフェールオーバーを併用することはできません。
ホットレプリカ機能を使用したフェールオーバーが有効になっている読み取り専用ノードがクラスターに含まれている場合、読み取り専用列ストアノードをクラスターに追加することはできません。
説明読み取り専用列ストアノードをクラスターに追加する場合は、テクニカルサポートに問い合わせてVDSを無効にしてください。 VDSを無効にすると、クラスター内のすべてのノードが自動的に再起動されます。
読み取り専用列ストアノードがすでにクラスターに存在する場合、クラスター内の読み取り専用ノードに対してホットスタンバイ機能を有効にすることはできません。
制御ポリシー機能の動作
次の図は、PolarDB for MySQLでのIMCI機能の仕組みを示しています。
ストレージエンジン、演算子、オプティマイザの3つのレイヤーが含まれます。
ストレージエンジン層: リアルタイムのトランザクションの一貫性を保証するハイブリッド行と列ストレージをサポートします。
演算子層: 列ストアに向けられたベクトル化された並列演算子を使用します。 単一テーブルクエリとマルチテーブルクエリは、最小限の遅延で実装できます。
SQLパーサーとオプティマイザー層: ハイブリッド行と列ストレージ向けのコストベースのオプティマイザー (CBO) を使用します。 オプティマイザは、コストしきい値に基づいて行ストアまたは列ストアを自動的に選択し、クエリ要求を実行します。
このアーキテクチャは、PolarDB for MySQLがMySQLプロトコルと完全に互換性がありながら、PolarDB for MySQLがクエリを数桁高速化するのに役立ちます。
メリット
IMCI機能を搭載したPolarDB for MySQLには、次の利点があります。
MySQLとの完全な互換性: システムは列ストアに提供されます。 このシステムは、ローストアに提供されるシステムと一致し、柔軟なタイプの変換をサポートします。
究極のHTAPパフォーマンス: PolarDBは、OLTPに関して究極のパフォーマンスを提供します。 IMCI機能は、OLAPシステムによって提供される性能と同等の性能をOLAPに提供します。
ハイブリッド行-列ストレージ: 行ストアと列ストアの両方がサポートされているため、コストが節約されます。 さらに、行ストアおよび列ストアに対してトランザクションの一貫性が保証されます。 コラムストアはまた、低コストの利点を有します。
シナリオ
PolarDB for MySQLのIMCI機能は、さまざまなビジネスシナリオで使用できるワンストップHTAPエクスペリエンスを提供します。
リアルタイムレポートなど、オンラインデータのリアルタイム分析が必要なシナリオ。
PolarDBの大容量データストレージ容量に依存して複数のアップストリームデータソースを集約し、PolarDBを専用データウェアハウスとして使用するデータウェアハウスシナリオ。
抽出、変換、負荷 (ETL) に対応した、PolarDBが提供するIMCIの強力で柔軟なコンピューティング機能に依存して、SQL構文を使用してETL機能を実装する高速データコンピューティングシナリオ。
パフォーマンス向上
IMCI機能は、SQLステートメントを使用して実行されるクエリを最大100倍高速化します。 次のセクションでは、アクセラレーション効果を検証するためのクエリテストについて説明します。 この例では、標準TPC-Hベンチマークに含まれるデータテーブルとSQL文が使用されています。
テスト方法TPC-Hは、データベースの分析クエリ機能を評価するために、Transaction Processing Performance Council (TPC) によって開発およびリリースされる一般的に使用されるベンチマークです。 TPC-Hベンチマークには、8つのテーブルと22の複雑なSQL文が含まれます。 ほとんどのクエリには、複数のテーブル、サブクエリ、およびGROUP BY句のJOIN句が含まれています。
この例では、TPC-Hベンチマークに基づくテストが実装されていますが、TPC-Hベンチマークテストのすべての要件を満たしているわけではありません。 したがって、テスト結果は、TPC-Hのベンチマークテストの公開結果と比較することはできません。
データサイズ: 100 GB。
テスト結果:
IMCIが有効なシナリオとIMCIが無効なシナリオの比較
次の図は、TPC-Hベンチマークの22の複雑なSQL文が実行された場合の、IMCIが有効なシナリオとIMCIが無効なシナリオの応答時間の差を示しています。
ClickHouseとIMCI対応PolarDB for MySQLの比較
次の図は、TPC-Hベンチマークの21の複雑なSQL文が実行された場合のClickHouseとIMCI対応PolarDB for MySQLの応答時間の差を示しています。 2つのデータベースには、同じ量のデータと同じデータスキーマがあります。 ClickHouseはクエリステートメント21をサポートしていないため、クエリステートメント21は実行されません。
結論:
IMCI機能は、最も複雑なクエリを最大100倍まで加速します。
従来のOLAPデータベースサービスClickHouseとIMCI対応のPolarDB for MySQLにはそれぞれ独自の利点があります。 IMCI対応のPolarDB for MySQLは、テーブルに対するSCANおよびAGGREGATE操作、JOIN操作などのシナリオで優れています。 将来的には、PolarDB for MySQLのIMCI機能は継続的に調整され、集約アクセラレーションとウィンドウ関数の面でブレークスルーを行います。