DynamoDB 属性 - Amazon DynamoDB

DynamoDB 属性

このセクションでは、クラスとプロパティを DynamoDB のテーブルや属性にマッピングできるように、オブジェクト永続性モデルで提供されている属性を説明します。

注記

次の属性では、DynamoDBTableDynamoDBHashKey だけが必須です。

DynamoDBGlobalSecondaryIndexHashKey

グローバルセカンダリインデックスのパーティションキーに、クラスプロパティをマッピングします。この属性は、グローバルセカンダリインデックスを Query する必要がある場合に使用します。

DynamoDBGlobalSecondaryIndexRangeKey

グローバルセカンダリインデックスのソートキーにクラスプロパティをマッピングします。この属性は、グローバルセカンダリインデックスを Query し、インデックスソートキーを使用して結果を絞り込む必要がある場合に使用します。

DynamoDBHashKey

テーブルのプライマリキーのパーティションキーにクラスプロパティをマッピングします。プライマリキーの属性をコレクション型にすることはできません。

次の C# サンプルコードでは、Book クラスを ProductCatalog テーブルに、Id プロパティをテーブルのプライマリキーのパーティションキーにマッピングしています。

[DynamoDBTable("ProductCatalog")] public class Book { [DynamoDBHashKey] public int Id { get; set; } // Additional properties go here. }

DynamoDBIgnore

関連するプロパティを無視するように指示します。クラスプロパティを保存しない場合は、この属性を追加することで、テーブルにオブジェクトを保存するときにこのプロパティを含めないように DynamoDBContext に指示できます。

DynamoDBLocalSecondaryIndexRangeKey

ローカルセカンダリインデックスのソートキーにクラスプロパティをマッピングします。この属性は、ローカルセカンダリインデックスを Query し、インデックスソートキーを使用して結果を絞り込む必要がある場合に使用します。

DynamoDBProperty

テーブルの属性にクラスプロパティをマッピングします。クラスプロパティを同じ名前のテーブル属性にマッピングする場合は、この属性を指定する必要はありません。ただし名前が異なる場合は、このタグを使用してマッピングを指定できます。次の C# ステートメントでは、DynamoDBProperty によって、BookAuthors プロパティがテーブル内の Authors 属性にマッピングされています。

[DynamoDBProperty("Authors")] public List<string> BookAuthors { get; set; }

DynamoDBContext はこのマッピング情報を使用して、対応するテーブルにオブジェクトデータを保存するときに Authors 属性を作成します。

DynamoDBRenamable

クラスプロパティの代替名を指定します。これは、テーブル属性がクラスプロパティの名前と異なる DynamoDB テーブルに、任意データをマッピングするためのカスタムコンバーターを記述する場合に役立ちます。

DynamoDBRangeKey

テーブルのプライマリキーのソートキーにクラスプロパティをマッピングします。テーブルに複合プライマリキー (パーティションキーおよびソートキー) がある場合は、クラスマッピングで、DynamoDBHashKeyDynamoDBRangeKey の両方の属性を指定する必要があります。

たとえば、サンプルテーブルの Reply には、Id パーティションキーと Replenishment ソートキーで構成されたプライマリキーがあります。次の C# サンプルコードでは、Reply クラスを Reply テーブルにマッピングします。クラス定義では、プロパティのうち 2 つがプライマリキーにマッピングされることも示しています。

サンプルテーブルの詳細については、「DynamoDB でのコード例用のテーブルの作成とデータのロード」を参照してください。

[DynamoDBTable("Reply")] public class Reply { [DynamoDBHashKey] public int ThreadId { get; set; } [DynamoDBRangeKey] public string Replenishment { get; set; } // Additional properties go here. }

DynamoDBTable

クラスがマッピングされる、DynamoDB 内のターゲットテーブルを識別します。例えば次の C# サンプルコードでは、Developer クラスを DynamoDB の People テーブルにマッピングしています。

[DynamoDBTable("People")] public class Developer { ...}

この属性は、継承またはオーバーライドすることができます。

  • DynamoDBTable 属性は継承できます。前述の例では、Lead クラスから継承された新しいクラス Developer を追加すると、People テーブルにもマッピングされます。Developer テーブルに LeadPeople の両方のオブジェクトが格納されます。

  • DynamoDBTable 属性もオーバーライドできます。次の C# サンプルコードでは、Manager クラスは、Developer クラスから継承されます。ただし、DynamoDBTable 属性を明示的に追加すると、クラスは別のテーブル (Managers) にマップされます。

    [DynamoDBTable("Managers")] public class Manager : Developer { ...}

次の C# の例に示すように、オプションのパラメータ LowerCamelCaseProperties を追加すると、オブジェクトをテーブルに格納する際にプロパティ名の先頭文字を小文字にするよう、DynamoDB にリクエストを送ることができます。

[DynamoDBTable("People", LowerCamelCaseProperties=true)] public class Developer { string DeveloperName; ... }

Developer クラスのインスタンスを保存する場合、DynamoDBContext では DeveloperName プロパティが developerName として保存されます。

DynamoDBVersion

項目のバージョン番号を格納するクラスプロパティを識別します。バージョニングの詳細については、「DynamoDB で AWS SDK for .NET のオブジェクト永続性モデルを使用した、バージョン番号による楽観的ロック」を参照してください。