📜  AWS DynamoDB – 使用表(1)

📅  最后修改于: 2023-12-03 15:29:32.863000             🧑  作者: Mango

AWS DynamoDB – 使用表

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 进行创建表格、添加数据、查询数据和删除表格等操作了。