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