📅  最后修改于: 2023-12-03 15:29:32.863000             🧑  作者: Mango
AWS DynamoDB 是一种快速、灵活且无服务的 NoSQL 数据库服务。本文将介绍如何在 DynamoDB 上使用表,包括如何创建表格、添加数据、查询数据和删除表格等操作。
在使用 DynamoDB 之前,您需要创建一张表格来存储数据。每张表都需要一个主键,它可以是一个简单属性或一个复合属性。
以下是创建一张新表格的 Node.js 示例代码:
const AWS = require('aws-sdk');
AWS.config.update({region: 'us-west-2'});
const dynamodb = new AWS.DynamoDB();
const params = {
TableName: "myTable",
KeySchema: [
{ AttributeName: "id", KeyType: "HASH" },
{ AttributeName: "timestamp", KeyType: "RANGE" }
],
AttributeDefinitions: [
{ AttributeName: "id", AttributeType: "S" },
{ AttributeName: "timestamp", AttributeType: "N" }
],
ProvisionedThroughput: {
ReadCapacityUnits: 5,
WriteCapacityUnits: 5
}
};
dynamodb.createTable(params, function(err, data) {
if (err) {
console.error("Unable to create table. Error JSON:", JSON.stringify(err, null, 2));
} else {
console.log("Created table. Table description JSON:", JSON.stringify(data, null, 2));
}
});
此代码使用 AWS SDK for JavaScript 在 us-west-2 区域中创建了一张名为 myTable 的数据表格。该表格具有两个主键属性:id 和 timestamp。其中,id 是字符串类型(S),timestamp 是数字类型(N)。该表格的预配吞吐量为 5 读/秒和 5 写/秒。
现在,您已经创建了一张数据表格,可以开始向其中添加数据。在 DynamoDB 中,您需要将数据表示为不可变的项并为每个项提供主键和可选的属性。如果主键已经存在于表格中,则会替换其中的属性。如果主键不存在,则会创建一个新的项。
以下是向 DynamoDB 中添加数据的示例代码:
const AWS = require('aws-sdk');
AWS.config.update({region: 'us-west-2'});
const dynamodb = new AWS.DynamoDB.DocumentClient();
const params = {
TableName: "myTable",
Item: {
"id": "1234",
"timestamp": 1600000000,
"name": "John Doe",
"email": "johndoe@example.com"
}
};
dynamodb.put(params, function(err, data) {
if (err) {
console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2));
} else {
console.log("Added item:", JSON.stringify(data, null, 2));
}
});
此代码使用 AWS SDK for JavaScript 向 myTable 表格中添加了一项数据。该项具有主键 id 和 timestamp,并包含两个属性:name 和 email。
添加数据后,您需要能够从 DynamoDB 中检索数据。在 DynamoDB 中,您可以使用基于主键的查询来检索数据。基于主键的查询使用主键属性值作为查询条件。如果您需要通过非主键属性值来检索数据,则需要使用全表扫描或使用 Global Secondary Index (GSI)。
以下是在 DynamoDB 中进行基于主键查询的示例代码:
const AWS = require('aws-sdk');
AWS.config.update({region: 'us-west-2'});
const dynamodb = new AWS.DynamoDB.DocumentClient();
const params = {
TableName : "myTable",
KeyConditionExpression: "#id = :idval and #timestamp > :timestampval",
ExpressionAttributeNames: {
"#id": "id",
"#timestamp": "timestamp"
},
ExpressionAttributeValues: {
":idval": "1234",
":timestampval": 1599999999
}
};
dynamodb.query(params, function(err, data) {
if (err) {
console.error("Unable to query. Error:", JSON.stringify(err, null, 2));
} else {
console.log("Query succeeded.", JSON.stringify(data, null, 2));
data.Items.forEach(function(item) {
console.log(" -", item.id + ": " + item.timestamp);
});
}
});
此代码使用 AWS SDK for JavaScript 进行基于主键的查询。它查询 id 属性等于“1234”且 timestamp 大于“1599999999”的所有项。结果将返回给回调函数。
在使用完 DynamoDB 表格后,您可以删除它以减少成本。在 DynamoDB 中删除表格可以确保不对其收取任何费用。
以下是在 DynamoDB 中删除表格的示例代码:
const AWS = require('aws-sdk');
AWS.config.update({region: 'us-west-2'});
const dynamodb = new AWS.DynamoDB();
const params = {
TableName : "myTable"
};
dynamodb.deleteTable(params, function(err, data) {
if (err) {
console.error("Unable to delete table. Error JSON:", JSON.stringify(err, null, 2));
} else {
console.log("Deleted table. Table description JSON:", JSON.stringify(data, null, 2));
}
});
此代码使用 AWS SDK for JavaScript 在 DynamoDB 中删除 myTable 表格。
现在您已经知道如何使用 DynamoDB 进行创建表格、添加数据、查询数据和删除表格等操作了。