Amazon DynamoDB
開発者ガイド (API バージョン 2012-08-10)

.NET: オブジェクト永続性モデル

AWS SDK for .NET には、クライアント側クラスを DynamoDB テーブルにマッピングできるオブジェクト永続性モデルが用意されています。各オブジェクトインスタンスが、対応するテーブルの項目にマッピングされます。クライアント側オブジェクトをテーブルに保存するために、オブジェクト永続性モデルでは、DynamoDB のエントリポイントとなる DynamoDBContext クラスを使用できます。このクラスでは、DynamoDB に接続してテーブルにアクセスし、各種の CRUD オペレーションやクエリを実行することができます。

オブジェクト永続性モデルには、クライアント側クラスをテーブルにマッピングし、プロパティ/フィールドを属性にマッピングする、属性のセットが用意されています。

注記

オブジェクト永続性モデルには、テーブルを作成、更新、または削除するための API はありません。データオペレーションだけが可能になっています。テーブルを作成、更新、削除するには、AWS SDK for .NET 低レベル API を使用する必要があります。詳細については、「テーブルの操作 : .NET」を参照してください。

オブジェクト永続性モデルの機能を示すために、例を見てみましょう。まず ProductCatalog テーブルから示します。ここでは Id がプライマリキーになっています。

ProductCatalog(Id, ...)

Title、ISBN、および Authors プロパティを持つ Book クラスがあるとします。次の C# コードスニペットに示すように、オブジェクト永続性モデルで定義された属性を追加することで、Book クラスを ProductCatalog テーブルにマッピングできます。

[DynamoDBTable("ProductCatalog")] public class Book { [DynamoDBHashKey] public int Id { get; set; } public string Title { get; set; } public int ISBN { get; set; } [DynamoDBProperty("Authors")] public List<string> BookAuthors { get; set; } [DynamoDBIgnore] public string CoverPage { get; set; } }

前述の例では、DynamoDBTable 属性によって、Book クラスが ProductCatalog テーブルにマッピングされています。

オブジェクト永続性モデルでは、クラスプロパティとテーブル属性との間で、明示的なマッピングとデフォルトのマッピングの両方がサポートされています。

  • 明示的なマッピング —プライマリキーにプロパティをマッピングするには、オブジェクト永続性モデル属性の DynamoDBHashKey および DynamoDBRangeKey を使用する必要があります。さらに、非プライマリキー属性については、クラス内のプロパティ名と、マッピング先の対応するテーブル属性が同じでない場合は、DynamoDBProperty 属性を明示的に追加してマッピングを定義する必要があります。

    前述の例では、Id プロパティが同じ名前のプライマリキーにマッピングされ、BookAuthors プロパティが ProductCatalog テーブル内の Authors 属性にマッピングされています。

  • デフォルトのマッピング—デフォルトでは、オブジェクト永続性モデルによって、クラスプロパティがテーブル内の同じ名前の属性にマッピングされます。

    前述の例では、Title および ISBN プロパティが、ProductCatalog テーブル内の同じ名前の属性にマッピングされています。

すべてのクラスプロパティをマッピングする必要はありません。これらのプロパティを特定するには、DynamoDBIgnore 属性を追加します。Book インスタンスをテーブルに保存する場合、DynamoDBContext には CoverPage プロパティは含まれません。このプロパティは、書籍インスタンスを取り出す場合にも返されません。

int や string など、.NET プリミティブ型のプロパティをマッピングできます。また、任意データをいずれかの DynamoDB 型にマッピングする適切なコンバーターがある限り、任意のデータ型をマッピングすることもできます。任意の型のマッピングについては、「AWS SDK for .NET オブジェクト永続性モデルを使用した、DynamoDB での任意データのマッピング」を参照してください。

オブジェクト永続性モデルでは、オプティミスティックロックがサポートされています。それによって、更新オペレーションで、更新する項目の最新のコピーを確実に使用することができます。詳細については、「DynamoDB で AWS SDK for .NET オブジェクト永続性モデルを使用した、バージョン番号によるオプティミスティックロック」を参照してください。

サポートされているデータの種類

オブジェクト永続性モデルでは、プリミティブな .NET データ型、コレクション、および任意のデータ型のセットがサポートされています。このモデルでは、次のプリミティブデータ型がサポートされています。

  • bool

  • byte

  • char

  • DateTime

  • decimal

  • double

  • float

  • Int16

  • Int32

  • Int64

  • SByte

  • string

  • UInt16

  • UInt32

  • UInt64

オブジェクト永続性モデルでは .NET コレクション型もサポートされています。DynamoDBContext は具体的なコレクション型、およびシンプルな Plain Old CLR Objects (POCOs) を変換できます。

次の表に、前述の .NET 型が DynamoDB の型にどのようにマッピングされるかを示します。

.NET プリミティブ型 DynamoDB の型

すべての数値型

N(数値型)

すべての文字列型

S (文字列型)

MemoryStream、byte[]

B(バイナリ型)

ブール N(数値型)、0 は偽を表し 1 は真を表す。
コレクション型 BS(バイナリセット)型、SS(文字列セット)型、NS(数値セット)型
DateTime S (文字列型)。DateTime の値は、ISO-8601 形式の文字列として格納されます。

オブジェクト永続性モデルでは、任意のデータ型もサポートされています。ただし、複合型を DynamoDB 型にマッピングするためのコンバーターコードを入力する必要があります。