このトピックでは、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
自動パーティショニング
手動パーティショニング (デフォルト)
透明な配分の働くモード
アプリケーションを分散データベースに接続するとき、特にアプリケーションをそのようなデータベースに初めて接続するときに、必要なパーティション分割またはデータ配布スキームに基づいて、ビジネス要件に合わせて作業モードを選択できます。
次の表に、作業モードとその長所と短所を示し。
働くモード | 説明 | 長所と短所 |
論理データベース内のすべてのテーブルの場合:
| 長所:
短所:
| |
論理データベース内のテーブルが明示的にMySQLパーティショニング構文を使用しない場合:
| 長所:
短所:
| |
手動パーティショニング (デフォルト) | 論理データベース内のすべてのテーブルの場合:
| 長所:
短所:
|
3つの作業モードを組み合わせて使用できます。 たとえば、手動パーティション分割とテーブルシャーディングまたは自動パーティション分割を組み合わせて使用して、複数の要件を満たすことができます。
モードの適切なシナリオの詳細については、「ベストプラクティス」をご参照ください。