すべてのプロダクト
Search
ドキュメントセンター

PolarDB:特徴

最終更新日:Jun 03, 2024

このトピックでは、PolarDB-Xの主な機能について説明します。

分散線形スケーラビリティ

PolarDB-Xは、テーブル内のデータを複数のデータノードに水平に分割します。 データは、分割関数を使用して分割される。 PolarDB-Xは、ハッシュ分割や範囲分割などの一般的な分割関数をサポートしています。

次の例に示すように、店舗データベースの注文テーブルは、各行のID属性のハッシュ値に基づいて、orders_00からorders_11までの12のパーティションに分散されます。 パーティションは、4つのデータノードにわたって均等に分散される。 ユーザーは、特定のデータ分布について心配する必要はありません。 PolarDB-Xの分散SQLレイヤーは、クエリを正しいノードに自動的にルーティングし、異なるパーティションとノードからの結果を集計します。

分布式线性扩展

スケールアウトと移行

ビジネスが成長すると、データ量が増加します。 ほとんどの場合、増加したデータ量を処理するためにデータノードを追加する必要があります。 インスタンスに新しいデータノードを追加すると、PolarDB-Xは自動的にスケールアウトタスクを実行してデータのバランスを取ります。

次の例では、注文テーブルのデータは元々4つのデータノードに分散されています。 インスタンスのデータノード数が4から6に増加すると、PolarDB-Xは自動的にスケールアウトタスクを実行し、一部のパーティションを既存のノードから新しいノードに移行します。 移行プロセスは、アイドルリソースを使用してバックグラウンドで完了し、オンラインビジネスには影響しません。

扩容迁移

高可用性とディザスタリカバリ

ほとんどの場合、データベースインスタンスが本番環境にデプロイされると、インスタンスの高可用性とデータ耐久性を確保するために複数のレプリカが作成されます。 現代のデータベースは、レプリカ間の強力な一貫性を確保するために、Paxosなどの多数派コンセンサスレプリケーションプロトコルを使用することがよくあります。 プロトコルは、インスタンス内に少なくとも3つのノードが存在することを必要とし、各書き込み操作は、ノードの半分以上によって確認される。 これにより、ノードの1つがダウンしていても、インスタンスは期待どおりにサービスを提供できます。 PolarDB-Xは、Alibabaが開発したX-Paxosレプリケーションプロトコルを採用しています。 X-Paxosは、機能とパフォーマンスの面で広範な最適化を提供するPaxosの拡張バージョンです。 このプロトコルは、ダブル11ショッピングフェスティバルを10年以上連続して確実にサポートしており、その安定性と信頼性を示しています。

Paxosレプリケーションプロトコルを使用すると、複数のデータセンターにPolarDB-Xインスタンスをデプロイし、データセンターレベルのディザスタリカバリを保証できます。 一般的な展開方法には、同じゾーンに3つのデータセンターがあり、2つのゾーンにまたがる3つのデータセンターがあります。 2番目の方法は、ハイブリッドクラウド展開シナリオで使用されます。 ほとんどの場合、Paxosプロトコルの特性により、3つのデータセンターのうちの1つがプライマリデータセンターとして機能します。 プライマリデータセンターは、外部サービスの提供を担当します。

分散トランザクション

PolarDB-Xは分散トランザクションをネイティブにサポートし、トランザクションの原子性、一貫性、分離、および耐久性 (ACID) を保証できます。

PolarDB-Xは、タイムスタンプOracle (TSO) とマルチバージョン同時実行制御 (MVCC) を使用して、読み取られるスナップショットの一貫性を確保します。 このようにして、送金取引などの分散取引の中間状態は読み取られない。 次の図は、計算ノードがトランザクションをコミットすると、計算ノードがトランザクションを実行し、TSOからタイムスタンプを取得することを示しています。 次いで、計算ノードは、タイムスタンプおよびデータを、データノードによって実行されるマルチバージョン記憶エンジンにコミットする。 読み取りプロセス中に、クエリに複数のパーティションに保存されたデータが含まれる場合、PolarDB-Xは読み取り操作のバージョン番号として使用するグローバルタイムスタンプを取得します。 次に、PolarDB-Xは各行のバージョンの可視性を評価して、PolarDB-Xがグローバルタイムスタンプの前にコミットされたトランザクションによって書き込まれたデータのみを読み取るようにします。

分散トランザクションは、分散システムにおける基本的な特徴である。 たとえば、読み取り /書き込み分割ソリューションでは、トランザクション内の複数のバージョンのデータが学習者レプリカに同期され、同期遅延のために読み取り専用インスタンスが古いデータを読み取らないようにします。 グローバルデータの変更を記録するログファイルでは、分散トランザクションはタイムスタンプでソートされます。 PolarDB-Xがポイントインタイムリカバリ (PITR) を実行するとき、PolarDB-Xは分散トランザクションのタイムスタンプを使用して、対応する時点でデータのグローバルに一貫したバージョンを正確に識別します。

統合集中分散アーキテクチャ

PolarDB-Xは、統合集中分散アーキテクチャをサポートします。

PolarDB-Xは、統合された集中型分散アーキテクチャを使用することにより、分散データベースのスケーラビリティと弾力性を、集中データベースの集中管理機能とパフォーマンスと組み合わせます。 集中モードと分散モードをシームレスに切り替えることができます。 統合集中分散データベースでは、データノードは集中的に独立して動作し、単一ノードのデータベースモデルと完全に互換性があります。 ビジネスが成長し、分散システムへのアップグレードが必要になると、アーキテクチャを分散モデルにシームレスに移行できます。 アップグレード中、分散コンポーネントは既存のDNとシームレスに統合され、データの移行やアプリケーションの変更は必要ありません。

統合集中型分散アーキテクチャとの統合を容易にするために、PolarDB-Xインスタンスは、Standard Edition (集中型) およびEnterprise Edition (分散型) のエディションで利用できます。

HTAP

PolarDB-Xは、ハイブリッドトランザクション /分析処理 (HTAP) をサポートしています。 これにより、PolarDB-Xは、高同時リクエスト、トランザクションリクエスト、および複雑な分析クエリをサポートできます。 分析クエリは、大量のデータに対して実行され、複雑な計算を必要とする。 たとえば、分析クエリを実行して、特定の期間内のデータを集計できます。 一般的な単純なクエリと比較して、分析クエリは実行に長い時間を必要とし、より多くのコンピューティングリソースを消費します。 分析クエリを実行するには、数秒または数分が必要です。

複雑な分析クエリのパフォーマンスを向上させるために、PolarDB-XはIMCIテクノロジーを導入しました。 ベクトル化演算子と組み合わせると、このテクノロジーは分析処理能力を大幅に向上させます。

MySQLエコシステムとの互換性

PolarDB-Xは、MySQLエコシステムとの完全な互換性を確保するために開発されました。 このセクションでは、SQL構文、トランザクションの動作、データのインポートとエクスポートに関するPolarDB-XとMySQLの互換性について説明します。 詳細については、「MySQLとの互換性」をご参照ください。

PolarDB-XはMySQLプロトコルと互換性があります。PolarDB-Xインスタンスは、Java Database Connectivity (JDBC) ドライバー、Open Database Connectivity (ODBC) ドライバー、Goドライバーなどのドライバーを使用して、一般的なMySQLクライアントと通信できます。 PolarDB-Xは、SSL、準備されたステートメントプロトコル、Loadなどのプロトコルを使用してMySQLクライアントに接続できます。

PolarDB-Xは、MySQLのDML、データアクセス言語 (DAL) 、およびDDLステートメントと互換性があります。

  • JSON、暗号化、および復号化関数を含むほとんどのMySQL関数

  • MySQL 8.0のビュー、共通テーブル式 (CTE) 、ウィンドウ関数、および分析関数

  • TIMESTAMPやDECIMALなど、MySQLのさまざまなデータ型。

  • MySQLの一般的な文字列、文字セット、照合順序

  • ほとんどのinformation_schemaビュー

PolarDB-XはMySQL binlogレプリケーションプロトコルと互換性があります。 PolarDB-Xクラスターを通常のMySQLノードとして扱い、別のMySQLノードをPolarDB-Xクラスターの同期元または同期先として使用できます。 PolarDB-Xのバイナリログ形式はMySQLのバイナリログ形式と同じであるため、PolarDB-Xは変更データキャプチャ (CDC) メカニズムを使用するシナリオでも使用できます。 たとえば、Canalを使用して、PolarDB-Xのデータを他のストレージソリューションに同期できます。