diff --git a/zk/Database_options_on_AWS.md b/zk/Database_options_on_AWS.md index d960520..76de957 100644 --- a/zk/Database_options_on_AWS.md +++ b/zk/Database_options_on_AWS.md @@ -2,6 +2,7 @@ tags: - AWS - databases + - dynamodb --- # Database options diff --git a/zk/DynamoDB SDK commands.md b/zk/DynamoDB SDK commands.md index 3e1a088..4f4b0ae 100644 --- a/zk/DynamoDB SDK commands.md +++ b/zk/DynamoDB SDK commands.md @@ -21,11 +21,41 @@ const client = new DynamoDBClient({ }); ``` +### DynamoDB Document Client + +The Document Client returns the data as a standard JSON document in the manner +of a document-based NoSQL database. Without it, DynamoDB will return the data +with type data which is unwieldy and hard to parse. + +To transform into a document structure: + +```js +import DynamoDBClient from "@aws-sdk/client-dynamodb"; +import DynamoDBDocumentClient from "@aws-sdk/lib-dynamodb"; + +const client = new DynamoDBClient({ + region: "eu-west-2", + accessKeyId: process.env.ACCESS_KEY_ID, + secretAccessKey: process.env.ACCESS_KEY_ID, +}); + +const dynamoDbDocumentClient = DynamoDBDocumentClient.from(client); +``` + ## Query a table Querying is the most performant and cost-effective method since it is an O(1) lookup against a partition key or secondary index. +```js +const params = { + TableName: "YourTableName", + KeyConditionExpression: "#pk = :pk", + ExpressionAttributeNames: { "#pk": "PrimaryKeyAttributeName" }, + ExpressionAttributeValues: { ":pk": "PrimaryKeyValue" }, +}; +``` + ## Scan a table Scanning is less performant (O(n)) and most expensive since it requires checking