テーブルグループ(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のテーブルグループ:グループ内の各テーブルのデータは適応型方式で分散されます。つまり、グループ内のテーブルがパーティションテーブルの場合はパーティション単位で分散され、サブパーティションテーブルの場合は各パーティション内のサブパーティション単位で分散されます。この種のグループ内のテーブルのパーティション要件およびパーティションアライメントルールは以下の通りです:
パーティション要件:グループ内のテーブルはすべてパーティションテーブルまたはすべてサブパーティションテーブルであること。パーティションテーブルの場合、パーティションのパーティション定義が同一であること。サブパーティションテーブルの場合、パーティションとサブパーティションの両方のパーティション定義が同一であること。
パーティションアライメントルール:グループ内のテーブルがすべてパーティションテーブルの場合、同一のパーティション値を持つパーティションがまとめて集約されます。グループ内のテーブルがすべてサブパーティションテーブルの場合、パーティション値とサブパーティション値の両方が同一のパーティションがまとめて集約されます。