シャーディング・キーの選択

SODAコレクションは、通常のOracle表によってバックアップされます。これらの表の列の1つがID列で、コレクション内のドキュメントの一意のキーが含まれています。この列はシャーディング・キーとして使用できます。または、ドキュメント・コンテンツのJSONフィールドを選択して、シャーディング・キーにすることもできます。

シャーディング・キーの選択は、アプリケーションによって異なります。

各シャーディング・キーの選択のメリットおよびデメリットを次に示します。

シャーディング・キーとしてのSODA IDの使用

SODA APIは、SODAドキュメントごとに一意のIDを自動的に管理します。このIDは、コレクション内でドキュメントを作成および取得するためにSODA APIによって使用されます。

SODA IDをシャーディング・キーとして使用する場合は、アプリケーションによって手動で指定する必要があります。これは、特定のシャードに新しいドキュメントを作成する場合、適切なシャードに接続するために事前にシャーディング・キーが必要であるためです。SODA APIでは、ドキュメント作成時にSODA IDのこの手動(CLIENTキーとも呼ばれる)割当てが可能です。例については、「シャーディング・キーとしてのSODA IDの使用」のコード・サンプルを参照してください。

このSODA IDが意味のあるもの(顧客IDなど)を表しているか、または単に一意のドキュメントIDであるかを判断するのは、アプリケーションです。いずれの場合も、IDは一意である必要があります。これは、Oracle Globally Distributed Databaseによって課される要件ではなく、SODA APIによって課される要件です。

シャーディング・キーとしてSODA IDを使用するサマリー:

  • シャーディング・キーは一意である必要があります。
  • シャーディング・キーは、JSONフィールドの内容と関係のないドキュメントIDです。
  • 新しいドキュメントが挿入されるたびに、このIDをアプリケーションで指定する必要があります。

シャーディング・キーとしてのJSONフィールドの使用

JSONフィールドをシャーディング・キーとして使用できます。このキーを一意にする必要はありません。

この場合、コレクション内の各ドキュメントには個別のSODA ID (SODAで必要)がありますが、SODA APIによって個別のドキュメントIDとして自動的に管理されます。

シャーディング・キーとしてJSONフィールドを使用するサマリー:

  • シャーディング・キーは一意である必要はありません。
  • シャーディング・キーは、各ドキュメントのJSON内のフィールドです。
  • 新しいドキュメントを挿入するときにSODA IDを指定する必要はありません。

シャーディング・キー・メソッドの選択に関する考慮事項

どちらの場合も、シャーディング・キーはほとんど変更されないフィールドです。これは、一意に割り当てられた顧客またはドキュメントIDである場合があります。顧客の生年月日(日、月、年)または郵便番号など、一意でないIDにすることもできます。

システム管理のシャーディングでは、いずれかのシャーディング・キー方法がシャード間のドキュメントの配布に適しています。

ユーザー定義のシャーディングの場合、シャード・キーとしてのSODA IDは、IDに意味のある値があり、これを範囲でパーティション化することが理にかなっている場合にのみ意味があります。

他の制約がない場合、シャーディング・キーとしてJSONフィールドを使用すると、柔軟性が向上し、シャーディング・キーをJSONの一部として自然に格納できます。

システム管理シャーディングとユーザー定義シャーディング

多くの点で似ていますが、ユーザー定義のシャーディングでは、データの格納場所をより詳細に制御できます。これは、データを地理的に分離する必要がある場合や、データに物理マッピングも必要になるようなその他の理由が発生する場合に便利です。

後続のトピックのプロシージャおよび例の多くは、両方のシャーディング方法に適用されます。これには、2つの例外があります。

  1. SODAコレクションの基礎となるシャード表の作成時に、ユーザー定義シャーディングの物理マッピングを指定する必要があります。「シャーディング・キーとしてのJSONフィールドの使用」で、郵便番号の範囲を特定のシャードに配置する必要がある例を確認できます。
  2. SODA問合せ(QBE)は、このデータ・グループを使用して、シャーディング・キーの範囲を含む1つのシャードに対して問合せを実行できます。

ソリューションの実装方法

使用するシャーディング・キーのタイプを選択したら、次のユースケースを参照して、JSONコレクション用のシャード表を作成する方法およびアプリケーションからシャード表とやり取りする方法の例を確認します。