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

PolarDB:透明な分布

最終更新日:Jan 23, 2025

このトピックでは、PolarDB-Xのトランスペアレントな配布と、トランスペアレントな配布の仕組みについて説明します。

背景情報

従来のスタンドアロンMySQLデータベースに基づいて実行されるアプリケーションがリソースまたはパフォーマンスのボトルネックに遭遇すると、ユーザーはビジネス要件を満たすための効果的なソリューションとして、データベースを分散データベースにアップグレードします。

ただし、アップグレード後、ユーザーは分散データベースの使用に次の問題が発生する傾向があります。

  • データはデータベース全体でどのように分散されますか?

  • どのテーブルを水平に分割する必要がありますか? テーブルをどのようにパーティション分割し、どのパーティションキーを使用する必要がありますか? テーブルのパーティションの適切な数は何ですか?

  • データを格納するデータノードはどれですか? リソースの不均衡をどのように処理しますか?

これらの問題を解決するには、分散データベースの仕組みと、分散データベースを使用できるシナリオを理解する必要があります。 分散データベースの適切な利用は容易ではない。

分散データベースの使用とスタンドアロンデータベースからのアップグレードを容易にするために、Alibaba CloudはPolarDB-X 2.0にカーネル内トランスペアレントな配布機能を提供しています。

説明

この機能は、AUTOモードのデータベースのみをサポートします。

透明分布とは何ですか?

PolarDB-X 2.0の透過的な配布機能は、デフォルトのパーティショニングポリシーとデフォルトのデータ配布ポリシーをユーザーに提供し、ユーザーがアプリケーションを変更せずにパフォーマンスを向上させるためにアプリケーションを分散データベースに接続できるようにします。

トランスペアレントな配布のコア機能は、ユーザーがテーブルのパーティショニング方式とPolarDB-Xデータノード (DN) 間のテーブルデータの配布を決定するのに役立つことです。

従来のスタンドアロンMySQLデータベースから分散型PolarDB-Xデータベースに切り替えるユーザーの場合、ビジネステーブルを作成するSQLステートメントは次の2つのカテゴリに分類されます。

  • カテゴリ1: SQL文は、MySQLパーティショニング構文を明示的に使用しません。 これらのSQL文を使用して作成されたテーブルは、非パーティションMySQLテーブルと呼ぶことができます。

  • カテゴリ2: SQL文は、MySQLパーティション分割構文を明示的に使用します。たとえば、Partition By Hashs(id) を運ぶSQL文です。 これらのSQL文を使用して作成されたテーブルは、パーティションMySQLテーブルと呼ぶことができます。

ユーザーがcategory-twoステートメントを使用してテーブルを作成する場合、ユーザーはビジネスのパーティション分割スキームを選択したと見なされます。 その理由は、ステートメントが明示的にMySQLパーティショニング構文を使用しているためです。 これらのテーブルは、PolarDB-Xによって手動でパーティション分割されたテーブルとも見なされます。 これらのテーブルのパーティションは、分散負荷のDNに均等に分散されます。

category-oneステートメントから作成されたテーブルは多数あり、ユーザーがパーティショニングスキームとデータ配布スキームを選択できるようにすることを目的としたPolarDB-Xの透過的な配布の焦点です。

PolarDB-Xの透過的な配布機能は、カテゴリ1ステートメントから作成されたテーブルの3つのパーティション分割およびデータ配布スキームを提供します。

  • 非パーティションテーブル: このスキームでは、MySQLテーブルはPolarDB-Xでパーティション化されず、固定DNをテーブルに割り当てます。 このように、ユーザーは従来のスタンドアロンMySQLテーブルを使用するのと同じ方法でテーブルを使用します。

  • シャードテーブル: このスキームでは、MySQLテーブルはPolarDB-Xでパーティション化されていないままです。 ただし、テーブルは自動的にシャードされ、DNに配布されます。

  • パーティションテーブル: このスキームでは、パーティション分割されていないMySQLテーブルはPolarDB-Xによって自動的にパーティション分割されます。

    • プライマリテーブルは、プライマリキーに基づいて水平方向にHASHパーティション分割されます。

    • グローバルインデックスはデフォルトで使用され、水平パーティショニングはインデックス列に基づいて実行されます。

したがって、透過的な配布機能は、テーブルのパーティション分割とデータ配布スキームに基づいて3つのモードで機能します。

  • テーブルのsharding

  • 自動パーティショニング

  • 手動パーティショニング (デフォルト)

透明な配分の働くモード

アプリケーションを分散データベースに接続するとき、特にアプリケーションをそのようなデータベースに初めて接続するときに、必要なパーティション分割またはデータ配布スキームに基づいて、ビジネス要件に合わせて作業モードを選択できます。

次の表に、作業モードとその長所と短所を示し

働くモード

説明

長所と短所

テーブルのsharding

論理データベース内のすべてのテーブルの場合:

  • 論理テーブルが明示的にMySQLパーティショニング構文を使用しない場合、テーブルはパーティション分割されず、負荷分散のためにPolarDB-XのDNにランダムに分散されます。

  • 論理テーブルが明示的にMySQLパーティショニング構文を使用する場合、テーブルはパーティション分割され、各パーティションはDNに均等に分散されます。

長所:

  • ゼロアプリケーション変更で使いやすい。

  • 最高のSQL互換性。

  • SQLクエリのパフォーマンスにおけるMySQLへの最大の近さ。

短所:

  • テーブルアクセス頻度とスキャン行の変動によるDN間の負荷の不均衡。

自動パーティショニング

論理データベース内のテーブルが明示的にMySQLパーティショニング構文を使用しない場合:

  • テーブルは、プライマリキーに基づいて自動的に水平方向にパーティション分割されます。

  • グローバルインデックスは自動的に使用され、水平パーティショニングはインデックス列に基づいて実行されます。

長所:

  • ほぼゼロのアプリケーション変更で使いやすい。

  • 水平スケーラビリティ。

短所:

  • 複数のグローバルインデックスを維持する必要があるため、書き込みスループットが低下しました。

  • グローバルインデックスのホットスポットの違いによるDN間の負荷の不均衡とスケーラビリティの低さ。

手動パーティショニング (デフォルト)

論理データベース内のすべてのテーブルの場合:

  • 論理テーブルが明示的にMySQL分割構文を使用しない場合、テーブルは非分割テーブルと見なされ、同じDNに割り当てられます。

  • 論理テーブルが明示的にMySQLパーティショニング構文を使用する場合、テーブルはパーティション分割され、各パーティションはDNに均等に分散されます。

長所:

  • さまざまなビジネスシナリオへの適応性。

  • 最適なパフォーマンス、負荷分散、線形スケーラビリティを提供します。

短所:

  • 理解して使用するのがより難しい。

  • アプリケーションの変更が必要です。

説明

3つの作業モードを組み合わせて使用できます。 たとえば、手動パーティション分割とテーブルシャーディングまたは自動パーティション分割を組み合わせて使用して、複数の要件を満たすことができます。

モードの適切なシナリオの詳細については、「ベストプラクティス」をご参照ください。