PolarDB implements cloud native to the end

PolarDB がクラウドネイティブを徹底的に追求

今年で PolarDB の誕生から 5 周年を迎える。5 年間の急速な発展を経て、PolarDB は 500,000 以上のオンライン稼働コアを超え、数万の企業にサービスを提供し、逐歩的に成功を収めた商用データベースとなった。

AWS Aurora や Google AlloyDB と同様に、PolarDB は Alibaba Cloud が MySQL および PostgreSQL をベースに開発したアップグレード版クラウドネイティブデータベースである。MySQL および PostgreSQL と完全に互換性があり、MySQL/PostgreSQL とのシームレスなマイグレーションをサポートする。一方で、PolarDB は常にクラウドネイティブデータベースの進化に注力し、アーキテクチャレベルで多くの改善を行ってきた。PolarDB は業界で最も効率的かつ安定した物理レプリケーション機能を備え、クラスター内のノード間での効率的なデータ同期を実現するとともに、高負荷シナリオにおけるグローバル配置されたデータベースデータの秒レベルレプリケーションも実現している。同時に、PolarDB は新しいハードウェアの機能を十分に活用して効率的なコンピューティングストレージ分離アーキテクチャを実現しており、Intel Optane と RDMA を業界で初めて大規模に採用したクラウドデータベースである。近年もクラウドネイティブへの取り組みを続けており、たとえば業界で初めて 3 層分離アーキテクチャを提唱した。コンピューティングとストレージの分離を基盤に、さらに分散メモリプールを開発し、コンピューティング、メモリ、ストレージの 3 層分離を実現した。共有リソースデータベースの柔軟性とリソース利用率を最大化する。PolarDB は業界をリードする多くの機能と研究成果を持ち、毎年データベース分野のトップカンファレンスで論文を発表し、学術界や産業界に向けて研究成果と商用化の成果を共有している。

前述の図は PolarDB の最新アーキテクチャを示している。PolarDB は今後ともインテグレーションとモジュール型の構築を堅持していく。

PolarDB はコンピューティングストレージ分離と物理レプリケーションにおいて非常に成熟しており、逐歩的に新たな段階へ移行している。以前は読み書きノードと読み取り専用ノードをサポートしていたが、過去数年間の継続的な取り組みを経て、今年は HTAP ノード、X-Engine ノード、マルチライトノード、AI ノードなど、複数の新しいコンピューティングノードをリリースした。これらのコンピューティングノードは自由に組み合わせ・切り替えが可能であり、顧客が必要とするアプリケーションシナリオに合わせてノードの自動スペックアップ・スペックダウンも可能である。これらの機能により、PolarDB は水平方向と垂直方向の両方で真のスケーラビリティを実現した。同時に、PolarDB はコンピューティングノードの自由な組み合わせだけでなく、3 層分離アーキテクチャを通じて分散メモリプールと分散ストレージプールもサポートし、究極のリソース共有と柔軟性を提供している。さらに、これらのノードはレゴブロックのように自由に組み合わせることができ、シンプルな構成から豪華な構成まで、さまざまな顧客のニーズに応えることができる。

PolarDB はリソース共有型のクラウドネイティブデータベースであり、リソースハードウェアの能力と進化に密接に関心を寄せている。新しいハードウェアを最大限に活用してソフトウェアとハードウェアの統合を実現し、ハードウェアの恩恵をユーザーに還元している。

今年、PolarDB は 2 つのハードウェアレベルのアップグレードを実現した。1 つは SmartSSD で、SSD ストレージデバイスに FPGA チップを搭載し、これらの専用チップを通じて透過的なデータ圧縮、および SSD 上のデータ配置の効率的なスケジューリングとリソース回収を実現し、スタック全体で 2.0〜3.0 倍の圧縮率を達成している。同時に、前述の図の左下に示すように、強力なハードウェア圧縮機能により、SmartSSD の圧縮操作が全体的な読み書きレイテンシに与える影響は極めて小さく、標準クラウドディスクや高性能クラウドディスクに対する大幅なパフォーマンス優位性を維持し続けている。さらに、PolarDB はデータ圧縮機能によりストレージの価格を 50% 削減でき、ユーザーに利益をもたらしている。今後の進化では、次世代 SmartSSD で効率的なデータの暗号化・復号も実現できる見込みであり、PolarDB はこの機能を活用して SSD 上のデータに完全な暗号化保証を提供する予定である。

もう 1 つのハードウェアアップグレードは、PolarDB への 100G RDMA ネットワークの導入である。PolarDB にとって、RDMA ネットワークはノード間を結合する重要な要素であり、レゴブロックにおけるノード結合の接点でもある。これまで 25G RDMA を使用してきたが、より大きな帯域幅を持つ 100G RDMA にアップグレードすることで、高速ネットワーク経由でより多くの情報を他のノードに直接伝送できるようになる。具体的な例として、PolarDB の高性能グローバル強整合性機能がある。AWS Aurora をはじめとするほとんどのクラウドデータベースは、クロスノードクエリの結果整合性のみをサポートしており、書き込み後読み取り整合性をサポートしていない。つまり、ユーザーがこれらのデータベースを使用する際、読み書きプライマリノード (RW) にデータを書き込んだ直後にセカンダリノード (RO) から読み取ると、レプリケーションの遅延により読み取りノードが最新のデータを読み取れない場合がある。グローバル整合性を実現するには、まずデータレプリケーションの高速化を確保し、その上でプライマリノードとセカンダリノード間でより多くのトランザクション情報とタイムスタンプ情報の同期を確保する必要がある。

PolarDB はこれまで PolarStore 共有ストレージ経由でログを同期していたが、より大きな帯域幅を持つ RDMA ネットワークにより、ログ情報を RDMA ネットワーク経由で直接同期できるようになり、データレプリケーションの遅延を大幅に削減した。さらに、PolarDB は細粒度のトランザクション追跡システムと RDMA を活用して、ノード間で大量のトランザクション情報とタイムスタンプ情報を高速に同期する。最小限の情報同期量で、PolarDB はセカンダリノードの書き込み後読み取り整合性を保証し、読み取り専用ノードの利用率を大幅に向上させ、グローバル一貫読み取りのパフォーマンスを大幅に改善し、ユーザーにより豊富で信頼性の高いユースケースを提供している。

今年の PolarDB の最重要リリースの 1 つが HTAP 機能である。IMCI (In Memory Column Index) を通じて、PolarDB は列指向データ形式と軽量な分析機能をサポートし始めた。PolarDB は行ストレージログと並行して選択された列の列ストレージログを生成し、効率的な物理レプリケーションにより HTAP ノード内の列ストレージデータをリカバリする。これにより、HTAP ノードに組み込まれた高性能な列ストレージ実行エンジンが複雑な分析クエリを効率的に処理できる。他の製品 (MySQL HeatWave など) とは異なり、PolarDB は非常に効率的な物理レプリケーション機能を備え、大量のトランザクション情報を保持し、ノード間遅延が極めて低いため、真のリアルタイムクエリを実現している。さらに、競合製品の多くは binlog による同期が必要であり、これがプライマリノードのパフォーマンスに直接的な影響を与える (最大 20〜40%) のに対し、PolarDB の物理レプリケーションはプライマリノードのパフォーマンスに直接的な影響を与えない。同時に、PolarDB の列ストレージデータにはトランザクション情報も含まれており、列ストレージの一貫性クエリをサポートできる。ユーザーは通常の MySQL と同じ感覚で高速な列指向データクエリの恩恵を受け、OLTP と OLAP の両方の要件をワンストップで満たすことができる。

注目すべきは、PolarDB IMCI のパフォーマンスも非常に優れていることである。TPC-H 100 GB のベンチマークでは、Aurora の約 100 倍、OceanBase の約 25 倍、TiDB/TiFlash の約 3 倍のパフォーマンスを達成している。

分析クエリの分野では、PolarDB は列ストレージだけでなく、行ストレージクエリの高速化でも大きな進歩を遂げている。PolarDB のシングルノードパラレルクエリは、AWS Aurora をはじめとする競合製品を既に大きくリードしていた。今年はさらに次のレベルへと引き上げ、クロスノードエラスティック並列クエリ機能 (ePQ) をリリースした。ePQ のリリースにより、パフォーマンスの水平スケーラビリティがさらに向上し、他の MySQL 系製品との分析能力の差をさらに広げた。

左の図は 4 台の 32 コアノードによる ePQ の並列クエリ結果を示している。結果によると、全体的な実行パフォーマンスは MySQL の 60 倍以上、単一クエリでは最大 150 倍の性能向上を達成している。右の図は ePQ の TPC-H 1 TB マルチノードクエリに対するパフォーマンスが線形な向上を実現していることを示している。もう 1 つの例として、60 億行を超える大規模テーブルの GROUP BY 集計がある。ePQ により、シングルスレッドで 8 時間かかっていた実行時間が 60 秒未満に短縮された (16 ノード 16 x 16 = 256 並列)。

今年の PolarDB for MySQL のもう 1 つの重要な商用リリースは、データベース・テーブルレベルのマルチライト機能である。

PolarDB は従来から書き込み 1・読み取り複数のアーキテクチャを採用してきた。クラスターには読み書き可能なプライマリノード (RW) が 1 つだけ存在し、1〜15 の読み取りノードを配置できるため、読み取り能力に関して十分な水平スケーラビリティを有していた。ただし、一部のシナリオでは、ユーザーから書き込み能力も水平方向に拡張したいという要望があり、複数の書き込みノードが一定のリソース分離機能を提供することも求められていた。この要件に対応するため、データベース・テーブルレベルでのマルチライトをサポートした。1 つの PolarDB に複数の読み書きプライマリノードを配置でき、各プライマリノードは複数のデータベースとテーブルを管理する。ただし、各テーブルは 1 つのプライマリノードにバインドされ、そのテーブルへのすべての書き込みは PolarDB プロキシによって対応する読み書きプライマリノードにルーティングされる。Shared Nothing 分散データベースと比較して、データベース・テーブルレベルのマルチライトの利点は共有ストレージアーキテクチャにあり、すべてのデータが各ノードから参照可能である。そのため、ノードの増減時にデータをノード間で移行する必要がなく、優れた柔軟性を備えている。ノード構成の変更時でも、データは素早く異なるノードに流通し、重複したデータ移行を必要とせず、秒級の水平スケーリングを実現する。

さらに、アクティブ・アクティブの相互バックアップ機能を実現している。各ノードが他のノードのスタンバイノードとして機能し、スタンバイノードであると同時にプライマリノードでもあるため、ノードの利用率が大幅に向上する。従来のマスター/スレーブアーキテクチャからデータベース・テーブルレベルのマルチライトにアップグレードすることで、データベースコストを大幅に削減できる。

RAC と比較して、データベース・テーブルレベルのマルチライトは依然として粗粒度のマルチライトソリューションである。大量のデータマルチノード一貫性問題に対処する必要があるため、行レベルのマルチライト機能をどのように実現し、水平スケーラビリティを確保するかは、エンジニアリング上の大きな課題であった。PolarDB は 3 層分離アーキテクチャを通じて、グローバルメモリプールや Polar Fusion などのコンポーネントを活用し、行ストレージ環境下でのトランザクション、ロック、キャッシュ情報のグローバルな協調を実現し、複数書き込みノードの行レベル同時書き込みを実現して、シングルポイント書き込みのボトルネックを突破した。

前述の図は Alibaba Cloud PolarDB の行レベルマルチライトと AWS Aurora マルチマスターの性能比較を示している。Aurora マルチマスターは 4 ノードで頻繁にクラッシュが発生し、マルチノード競合書き込みテストを完了できなかった。PolarDB は 4 ノードの競合書き込みにおいて依然として良好なスケーラビリティを維持している。競合なしのシナリオでは、PolarDB の行レベルマルチライトは 16 ノードまでスケールできるのに対し、Aurora マルチマスターは最大 4 ノードまでしかサポートしておらず、水平スケーラビリティに劣る。右の図は 8 ノード時のパフォーマンスを示しており、PolarDB のパフォーマンスは Aurora マルチマスターを大幅にリードしている。

PolarDB のグローバルデータベース機能は 2 年前のリリース以来、多くの企業でクロスリージョンのディザスタリカバリソリューションとして選ばれてきた。同時に、PolarDB グローバルデータベースは独自の並列物理レプリケーション技術を活用しており、そのレプリケーションの安定性と速度は世界トップレベルにある。高負荷シナリオにおいて、任意のデータセンターに書き込まれたデータを、グローバルに配置された他の PolarDB から 2 秒以内に読み取ることができる。そのため、PolarDB はグローバルなデータレプリケーションと近傍読み取りのビジネスニーズを満たすために広く利用されている。現在、PolarDB は少量のグローバル書き込みのみをサポートしており、書き込み SQL はプロキシによりプライマリリージョンのプライマリノードに転送されて実行されるため、一定のクロスリージョン遅延が存在する。しかし、多くのユーザーは PolarDB にさらに強力なグローバル近傍書き込み機能を求めている。データは多方向に同期され、真のクロスリージョンマルチ読み取り・マルチ書き込みを実現する。物理レプリケーション技術に基づく PolarDB テーブルレベルマルチライト技術の研究開発も最終段階に近づいており、今後数ヶ月以内にこの近傍書き込み機能をリリースし、より多くの顧客のグローバルビジネス展開ニーズに応えていく予定である。

PolarDB は今年 1 月に LSM ツリー (Log Structure Merge Tree) アーキテクチャのストレージエンジン、X-Engine をリリースした。B ツリーアーキテクチャベースの従来のエンジン (MySQL InnoDB など) と比較して、LSM ツリーは圧縮ブロックデータを SSTable ファイルにより効率的にパッキングでき、圧縮率も高い。そのため、PolarDB の X-Engine は高圧縮エンジンとして、比較的コールドなデータを保存することでストレージコストの削減に貢献できる。

前述の図は、グループ会社 (Taobao) のビジネスシナリオにおいて、X-Engine 使用後に約 3.5〜7 倍の圧縮率が達成されていることを示している。さらに、PolarDB ネイティブエンジンと比較して、X-Engine のパフォーマンスはわずかに低下するものの同等である。X-Engine は PolarDB が提供するコスト削減と効率化の強力なツールである。PolarDB はデュアルエンジンを同時にオンラインでサポートしており、ユーザーは効率的な PolarDB デフォルトエンジンを使用しながら、比較的コールドでアクセス頻度の低いデータを X-Engine に移行できる。

クラウドデータベースのもう 1 つの重要な機能はリソースプーリングである。ユーザーは PolarDB に柔軟なリソース割り当てと従量課金機能を求めている。PolarDB Serverless 機能のリリース前は、ストレージレイヤの PolarStore がオンデマンド割り当てと従量課金機能を備えていた。ただし、各コンピューティングノードの CPU コア数とメモリ容量は固定であり、ビジネス負荷が増加した際にユーザーが設定をアップグレードできたが、ユーザーによる手動トリガーが必要であった。PolarDB Serverless は自動インテリジェント検出と、より高速な CPU・メモリ設定変更機能を提供し、シングルノードでの秒級検出と無停止での秒級スケールアップ・スケールダウンを実現している。さらに、シングルノードのリソースが占有または不足している場合、PolarDB はリンクメンテナンスやホット BP などの技術により、水平方向のクロスノードスケーリングもサポートでき、ユーザーのニーズに合わせてノードをほぼ意識することなく追加・削除できる。

前述の図に示すように、PolarDB Serverless は負荷 (QPS) の増加に応じて PCU 数を自動的に増やし、負荷が停止すると PCU を逐歩的に減少させる。左下の図は、シングルノードの仕様が上限に達した後、読み取り専用接続ノードを自動的に追加して突発的な負荷に対応し、クラスターのパフォーマンスを向上させることを示している。

PolarDB はリリース以来、パフォーマンスの最適化を継続的に推進してきた。過去 1 年間、クラウドネイティブアーキテクチャ向けのフルパス深層最適化、高性能ストレージエンジンの最適化、高性能インデックス PolarIndex により、シングルマシンのパフォーマンスを大幅に向上させ、他の競合製品との差を広げ続けている。

PolarDB はいくつかの基本機能の面でも進化を続けている。たとえば、並列 DDL は 1 年間のグレーロールアウトを経てオンラインで完全に展開された。高い同時実行性のシナリオにおいて、並列 DDL はインデックス作成速度を 15〜20 倍向上させ、大規模テーブルシナリオにおける複数の顧客の緊急ニーズに対応した。たとえば、ある越境金融顧客の場合、約 5 億行の 3 TB テーブルに対してビジネス負荷のためインデックス作成を行えていなかったが、並列 DDL の使用後、20 分未満で完了した。同時に、Multi Version Dictionary を実装しており、これによりさまざまな Instant DDL (フィールド型の変更やフィールドの追加・削除など) を実現できる。テーブル全体を再構築することなく、Dictionary を変更するだけで秒単位で反映される。

今年はコスト削減と効率化の年である。多くのユーザーが PolarDB によるコスト削減を期待している。このシナリオにおいて、PolarDB は OSS ストレージのサポートを開始した。データを OSS に効率的に転送・管理するため、PolarDB はパーティションテーブル機能に多くの取り組みを行ってきた。たとえば、インターバルレンジパーティションテーブルは時間に基づいて新しいパーティションを自動生成できる。古いパーティションは OSS などの低コストストレージに自動的に移行できる。

今年は PolarDB 誕生 5 周年であり、PolarDB にとって豊作の年である。過去数年間の努力により、PolarDB の多くの重要な機能が実現・実装されてきた。これらの機能により、PolarDB ユーザーにより多くの選択肢を提供し、さまざまなユーザーシナリオに対応できると考えている。PolarDB は継続し MySQL/PG との完全な互換性を維持し、機能のモジュール化を進め、多様な形態のデータベースを統合し、シナリオを精緻化して、さまざまな業界の顧客にサービスを提供していく。PolarDB の高性能と安定性を確保し続け、コスト削減と効率化を推進し、顧客とともにさらなる課題に挑戦し、顧客のクラウドネイティブリレーショナルデータベースの第一選択肢となることを目指していく。

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.