テーブルグループ(Table Group)とは、一連のテーブルをまとめた論理的概念です。デフォルトでは、異なるテーブル間のデータはランダムに分散しており、直接的な関係はありません。テーブルグループを定義することで、物理ストレージ上における一連のテーブルの隣接関係を制御できます。
V3.x系では、パーティションが定義されたテーブルグループがあり、グループに追加するテーブルはグループのパーティショニング方式と完全に一致している必要があり、テーブルの追加に強い制約がありました。V4.2.0以降では、パーティションの概念が廃止され、SHARDINGプロパティを定義するだけで、異なるパーティショニング方式のテーブルを柔軟に追加できるようになりました。他のテーブルの追加を制限したい場合は、テーブルグループのプロパティを変更することで、より柔軟なテーブルグループ管理が可能になりました。
SHARDINGプロパティを持つテーブルグループは、SHARDINGプロパティ値によって、主に以下の2つのカテゴリに分類されます:
SHARDING = NONEのテーブルグループ:この種のテーブルグループ内のすべてのテーブルのすべてのパーティションは同一マシン上に集約され、グループ内のテーブルのパーティションタイプに制限はありません。SHARDINGがNONE以外のテーブルグループ:この種のテーブルグループ内の各テーブルのデータは複数のマシンに分散配置されます。すべてのテーブルのデータ分布を保証するために、グループ内のすべてのテーブルのパーティション定義も一致させる必要があります。これには、パーティションタイプ、パーティション数、パーティション値などが含まれます。システムは、同じパーティション属性を持つパーティションを同一マシン上に集約(アライメント)し、Partition Wise Joinを実現します。SHARDINGがNONE以外のテーブルグループは、さらに以下の2種類に分かれます:SHARDING = PARTITIONのテーブルグループ:グループ内の各テーブルのデータはパーティション単位で分散されます。サブパーティションテーブルの場合、各パーティション内のすべてのサブパーティションが集約されます。パーティション要件:すべてのテーブルのパーティションのパーティション定義が同一であること。サブパーティションテーブルの場合は、パーティションのパーティション定義のみを検証します。したがって、パーティションテーブルとサブパーティションテーブルは同時に存在でき、これらのテーブルのパーティションのパーティション定義が同一であればよいのです。
パーティションアライメントルール:同一のパーティション値を持つパーティションが集約されます。これには、パーティションテーブルのパーティションと、サブパーティションテーブルの対応するパーティション内のすべてのサブパーティションが含まれます。
SHARDING = ADAPTIVEのテーブルグループ:グループ内の各テーブルのデータは適応型方式で分散されます。つまり、グループ内のテーブルがパーティションテーブルの場合はパーティション単位で分散され、サブパーティションテーブルの場合は各パーティション内のサブパーティション単位で分散されます。この種のテーブルグループ内のテーブルのパーティション要件およびパーティションアライメントルールは以下のとおりです:
パーティション要件:グループ内のテーブルはすべてパーティションテーブルまたはすべてサブパーティションテーブルです。パーティションテーブルの場合は、パーティションのパーティション定義が同一であること。サブパーティションテーブルの場合は、パーティションとサブパーティションの両方のパーティション定義が同一であること。
パーティションアライメントルール:グループ内のテーブルがすべてパーティションテーブルの場合は、同一のパーティション値を持つパーティションが集約されます。グループ内のテーブルがすべてサブパーティションテーブルの場合は、パーティション値とサブパーティション値の両方が同一のパーティションが集約されます。