web-dev-qa-db-ja.com

AWS SDK DynamoDBクライアントとDocumentClientの違いは何ですか?

AWS SDK DynamoDBクライアントとDynamoDB DocumentClientの違いを知りたいのですが? DocumentClientではなくDynamoDBクライアントを使用する必要があるのはどのユースケースですか?

const dynamoClient = new AWS.DynamoDB.DocumentClient();

vs 

const dynamo = new AWS.DynamoDB();

9

これは、同じことを行う2つのコードサンプルを比較することで最もよく答えられると思います。

DynamoDBクライアントを使用してアイテムを配置する方法は次のとおりです。

var params = {
    Item: {
        "AlbumTitle": {
            S: "Somewhat Famous"
        },
        "Artist": {
            S: "No One You Know"
        },
        "SongTitle": {
            S: "Call Me Today"
        }
    },
    TableName: "Music"
};
dynamodb.putItem(params, function (err, data) {
    if (err) console.log(err)
    else console.log(data);           
});

DocumentClient APIを使用して同じアイテムを配置する方法は次のとおりです。

var params = {
    Item: {
        "AlbumTitle": "Somewhat Famous",
        "Artist": "No One You Know",
        "SongTitle": "Call Me Today"
    },
    TableName: "Music"
};

var documentClient = new AWS.DynamoDB.DocumentClient();

documentClient.put(params, function (err, data) {
    if (err) console.log(err);
    else console.log(data);
});

DocumentClientを見るとわかるように、Itemはより自然な方法で指定されています。 DDBを更新する他のすべての操作(update()delete())と、読み取り操作から返されるアイテム(get()query()scan())。

10
Itay Maman

DocumentClientの announcement に従って:

ドキュメントクライアントの抽象化により、AWS SDK for JavaScriptを使用して、Amazon DynamoDBに対するデータの読み取りと書き込みが容易になります。これで、AttributeValueタイプとして注釈を付けなくても、ネイティブJavaScriptオブジェクトを使用できます。

これは基本的に、SDKでdynamoDBを呼び出す最も簡単な方法であり、注釈付きの応答データをネイティブJSタイプに変換します。通常、通常のDynamoDBクライアントは、テーブルの作成など、データベースに対してより「特別な」操作を行う場合にのみ使用する必要があります。これは通常、CRUDスコープの外側にあるものです。

7
Shaho