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