3 シャード・データベースの物理編成

シャード・データベースの物理編成について学習します。

以下の項目では、シャード・データベースの物理編成について説明します。

分散パーティション化としてのシャーディング

シャーディングは、データを複数の独立した物理データベース間に水平にパーティション化するデータベースのスケール・テクニックです。このような構成内の各物理データベースをシャードと呼びます。

シャード・データベース(SDB)はアプリケーションおよびアプリケーション開発者には単一のデータベースのように見えますが、データベース管理者の視点では別個のOracleデータベースのセットで、それぞれがシャードと呼ばれます。シャード表はSDBのすべてのシャード間にパーティション化されます。各シャードの表のパーティションは、シャーディングされていないOracleデータベースで使用できるパーティションと同様です。

次の図は、単一の論理データベースのパーティション化と複数シャード間に分散されたパーティションの違いを示しています。

図3-1 分散パーティション化としてのシャーディング

図3-1の説明が続きます
「図3-1 分散パーティション化としてのシャーディング」の説明

CREATE SHARDED TABLE文を実行すると、Oracle Shardingは自動的にシャード間にパーティションを分散します。パーティションの分散はアプリケーションに対して透過的です。前述の図は、シャード表の論理ビューとその物理的な実装を示しています。

パーティション、表領域およびチャンク

異なるシャードに存在する表領域にパーティションを作成することで、シャード間にパーティションを分散します。

シャード表の各パーティションが個別の表領域に格納され、表領域がSDBのデータ分散の単位になります。

シャード表ファミリで説明するように、マルチシャード結合の数を最小にするために、表ファミリのすべての表の対応するパーティションが常に同じシャードに格納されます。構文の例で表領域セットts1がすべての表に使用されているように、1つの表ファミリの表が分散された表領域の同じセットに作成されるときに、これが保証されます。

ただし、1つの表ファミリの異なる表を異なる表領域のセットに作成することも可能です。たとえば、表領域セットts1にCustomers表を作成し、表領域セットts2にOrdersを作成できます。この場合、Customersのパーティション1が格納される表領域が常に、Ordersのパーティション1が格納される表領域と同じシャードに存在することが保証される必要があります。この機能をサポートするために、表ファミリのすべての表の対応するパーティションのセット(チャンクと呼ばれる)が作成されます。チャンクには表ファミリの各表の1つのパーティションが含まれます。

次の図に、Cutomers-Orders-LineItemsスキーマの表の対応するパーティションを含むチャンクを示します。

図3-2 パーティションのセットとしてのチャンク

図3-2の説明が続きます
「図3-2 パーティションのセットとしてのチャンク」の説明

次の図のように、各シャードに複数のチャンクが含まれます。

図3-3 シャードの内容

図3-3の説明が続きます
「図3-3 シャードの内容」の説明

シャード表に加えて、シャードには1つ以上の重複表も含めることができます。重複表は、シャード表に使用される表領域には格納できません。