アクセスパターン - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

アクセスパターン

このガイドで前述したように、DynamoDB テーブルに対する作成、読み取り、更新、削除 (CRUD) オペレーションを実行する際の変更には、オブジェクト永続性インターフェイス、ドキュメントインターフェイス、低レベル API インターフェイスの 3 つのアクセスパターンから選択できます。以下のセクションでは、各インターフェイスについて説明します。SQL Server から DynamoDB へのユースケースでは、シンプルさ、読みやすさ、メンテナンスのしやすさを考慮して、オブジェクト永続性インターフェイスを選択しました。

オブジェクト永続性インターフェイス

オブジェクト永続性インターフェイスは、Entity Framework エンティティと同様に、.NET モデルを使用して DynamoDB アイテムの CRUD 操作を実行するための高レベルの抽象化されたアクセスメカニズムを提供します。インターフェイスプロパティは DynamoDB アイテム属性にマップされます。AWSSDK for .NET は、このモデルのカスタムプロパティ属性をサポートして、個々のプロパティのシリアル化と逆シリアル化のカスタマイズ、NULL 値の処理、および型変換を行います。

アプリケーションで使用されているサンプルモデル:

[DynamoDBTable(“AppLibrary")] public class ProdApp { [DynamoDBHashKey] public string PK { get; set; } //Partition key [DynamoDBRangeKey] public string SK { get; set; } //Sort key [DynamoDBGlobalSecondaryIndexRangeKey(“Version-index")] [DynamoDBProperty] public int Version { get; set; } . . . [DynamoDBProperty] public Int64 TTL { get; set; } }

アイテムへのアクセス:

var _dynamoDbClient = new AmazonDynamoDBClient(AWSCredentials); var _context = new DynamoDBContext(_dynamoDbClient); public ProdApp GetProdAppById (Guid id, int version) { var pk = $”{id}-{version}”; return _context.Load<ProdApp>(pk, ItemType.ProductionApplication); }

詳細については、DynamoDB ドキュメントの「オブジェクト永続性インターフェイス」を参照してください。

ドキュメントインターフェイス

ドキュメントインターフェイスモデルでは、DynamoDBXMLDocument アイテムへのドキュメントベースのアクセス (.NET と同様) が提供されます。このモデルは上位レベルのプログラミングインターフェイスを提供しますが、その呼び出しを低レベルの API に変換して操作を実行します。

var _dynamoDbClient = new AmazonDynamoDBClient(AWSCredentials); var _table = Table.LoadTable(_dynamoDbClient, “AppLibrary”); public ProdApp GetProdAppById (Guid id, int version) { var pk = $”{id}-{version}”; var doc = _table.GetItem(pk, ItemType.ProductionApplication); var app = new ProdApp { PK = doc[“PK”], SK = doc[“SK”], Version = doc[“Version”], . . . }; return app; }

詳細については、DynamoDB ドキュメントの「ドキュメントインターフェイス」を参照してください。

低レベル API

DynamoDB 用AWS SDK では、、、DeleteItemメソッドを使用して CRUD オペレーションを実行するための低レベルの API アクセスも提供します。PutItemGetItemUpdateItemこのモデルでは、属性マッピングとタイプ変換を完全に制御できます。これらの呼び出しに対する応答は、キーと値のペアの辞書です。

[DynamoDBTable(“AppLibrary")] public class ProdApp { [DynamoDBHashKey] public string PK { get; set; } //Partition key [DynamoDBRangeKey] public string SK { get; set; } //Sort key [DynamoDBGlobalSecondaryIndexRangeKey(“Version-index")] [DynamoDBProperty] public int Version { get; set; } . . . [DynamoDBProperty] public ProdConfig Config { get; set; } } var _dynamoDbClient = new AmazonDynamoDBClient(AWSCredentials); public ProdApp GetProdAppById (Guid id, int version) { var pk = $”{id}-{version}”; var resp = _dynamoDbClient.Query(queryRequest); var item = resp.Items[0]; var app = new ProdApp { PK = item[“PK”].S, SK = item[“SK”].S, Version = Convert.ToInt32(item[“Version”].S), . . . Config = new ProdConfig { Name = item[“Config”].M[“Name”].S, Id = Conver.ToInt32(item[“Config”].M[“Id”].S) } }; return app; }

詳細については、DynamoDB ドキュメントの「低レベルインターフェイス」を参照してください。