

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

# アクセスパターン
<a name="access-patterns"></a>

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

## オブジェクト永続性インターフェイス
<a name="object-persistence-interface"></a>

オブジェクト永続性インターフェイスは、Entity Framework エンティティと同様に、.NET モデルを使用して DynamoDB 項目に対して CRUD オペレーションを実行するための高レベルの抽象化されたアクセスメカニズムを提供します。インターフェイスプロパティは、DynamoDB 項目属性にマッピングされます。 AWS SDK 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 ドキュメントの[「オブジェクト永続性インターフェイス](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.SDKs.Interfaces.Mapper.html)」を参照してください。

## Document インターフェイス
<a name="document-interface"></a>

ドキュメントインターフェイスモデルは、DynamoDB 項目へのドキュメントベースのアクセスを提供します (.NET `XMLDocument`の と同様）。このモデルは高レベルのプログラミングインターフェイスを提供しますが、その呼び出しを低レベル APIs に変換して オペレーションを実行します。

```
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 [ドキュメントの「ドキュメントインターフェイス](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.SDKs.Interfaces.Document.html)」を参照してください。

## 低レベル API
<a name="low-level-api"></a>

 AWS SDK for DynamoDB では、`PutItem`、、`GetItem`、`UpdateItem`および `DeleteItem`メソッドを使用して CRUD オペレーションを実行するための低レベルの API アクセスも提供されます。このモデルでは、属性マッピングと型変換を完全に制御できます。これらの呼び出しのレスポンスは、キーと値のペアのディクショナリです。

```
[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 ドキュメントの[「低レベルインターフェイス](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.SDKs.Interfaces.LowLevel.html)」を参照してください。