DynamoDB表からOracle NoSQL表へのマッピング

DynamoDBでは、表はアイテムのコレクションで、各アイテムは属性の集合です。表の各アイテムには、一意の識別子または主キーがあります。表は、主キー以外はスキーマレスです。各アイテムには固有の属性を設定できます。

DynamoDBは、次の2種類の主キーをサポートしています。
  • パーティション・キー - パーティション・キーと呼ばれる1つの属性で構成される単純な主キー。DynamoDBは、パーティション・キーの値を内部ハッシュ関数への入力として使用します。ハッシュ関数の出力によって、アイテムが格納されるパーティションが決まります。
  • パーティション・キーとソート・キー - 複合主キーとして、このタイプのキーは2つの属性で構成されます。最初の属性はパーティション・キーで、2番目の属性はソート・キーです。DynamoDBは、パーティション・キーの値を内部ハッシュ関数への入力として使用します。ハッシュ関数の出力によって、アイテムが格納されるパーティションが決まります。同じパーティション・キー値を持つすべてのアイテムが、ソート・キー値でソートされて一緒に格納されます。

一方、Oracle NoSQL表は、スキーマとスキーマレス設計の両方を備えた柔軟なデータ・モデルをサポートしています。

DynamoDB表をモデル化するには、次の2つの方法があります。
  1. JSONドキュメントとしてのDynamoDB表のモデル化(推奨): このモデル化では、Dynamo DB表のすべての属性を、パーティション・キーおよびソート・キーを除くNoSQL表のJSON列にマップします。パーティション・キーおよびソート・キーをNoSQL表の主キー列としてモデル化します。主キー以外のデータをJSON列に集計するには、AggregateFields変換を使用します。

    ノート:

    マイグレータは、属性をJSON列に集計するスキーマレスDDL表を自動的に作成するための、わかりやすい構成defaultSchemaを提供します。
  2. NoSQL表の固定列としてのDynamoDB表のモデル化: このモデル化では、DynamoDB表の各属性について、「DynamoDB型からOracle NoSQL型へのマッピング」で指定されているように、NoSQL表に列を作成します。パーティション・キーおよびソート・キー属性を主キーとしてモデル化します。これは、DynamoDB表スキーマのインポートが固定されており、各アイテムにほとんどの属性の値があることが確実な場合にのみ使用する必要があります。DynamoDBアイテムに共通属性がない場合、空の値を持つ多くのNoSQL列が生成される可能性があります。

    ノート:

    DynamoDB表の特性がスキーマレスであるため、DynamoDBからOracle NoSQL Databaseにデータを移行する場合は、スキーマレス表を使用することをお薦めします。これは特に、表全体で各レコードの内容が統一されていない大きな表の場合です。