📅  最后修改于: 2023-12-03 14:57:36.163000             🧑  作者: Mango
Amazon DynamoDB 是一种完全托管的 NoSQL 数据库服务,旨在提供快速且可预测的性能。DynamoDB 可扩展的性能,无论您需要处理多少的请求,都能持续为您提供我们所承诺的延迟。
DynamoDB 支持的存储空间大小和请求吞吐量是无限制的。DynamoDB 可以自动处理自己的硬件和软件的更新和维护,从而可以节省时间和精力。
完全托管:DynamoDB 是一个完全托管的服务,无需自行管理任何硬件或软件。
快速响应:DynamoDB 可以提供 millisecond 级别的响应时间。
高度可扩展:DynamoDB 可以轻松地扩展到大型的分布式系统规模。
备份和复制:DynamoDB 可以自动备份和复制您的数据,以提供更高的可用性和灾难恢复能力。
支持 ACID 事务:DynamoDB 支持强一致性和基于标准方法的事务,以确保数据正确性。
DynamoDB 的数据模型被设计为键-值和文档型。您可以将数据存储在一个简单的键-值对中,也可以存储复杂的文档,这样可以更好地表示应用程序的数据模型。
DynamoDB 存储数据的主要单元是表。表是一个具有特定名称的集合,用于存储数据项。
以下代码片段用于创建表:
aws dynamodb create-table \
--table-name my-table \
--attribute-definitions AttributeName=id,AttributeType=S AttributeName=type,AttributeType=S \
--key-schema AttributeName=id,KeyType=HASH AttributeName=type,KeyType=RANGE \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
### 数据项
DynamoDB 数据项是一个基本的键-值对。它可以存储单个标量值,例如数字、字符串、布尔值等,也可以存储复杂的嵌套数据结构。
```markdown
以下代码片段用于向表中添加数据项:
aws dynamodb put-item \
--table-name my-table \
--item '{"id": {"S": "123"}, "type": {"S": "test"}, "value": {"S": "Hello World!"}}'
### 检索数据
DynamoDB 提供了多种检索数据的方式,包括 GetItem、Query 和 Scan。
```markdown
以下代码片段用于从表中检索数据:
aws dynamodb get-item \
--table-name my-table \
--key '{"id": {"S": "123"}, "type": {"S": "test"}}'
```markdown
以下代码片段用于查询表中的数据:
aws dynamodb query \
--table-name my-table \
--key-condition-expression "id = :id and type = :type" \
--expression-attribute-values '{"id": {"S": "123"}, "type": {"S": "test"}}'
### 事务
DynamoDB 支持强一致性和基于标准方法的事务,以确保数据正确性。事务分为两种:读写事务和批量事务。
```markdown
以下代码片段用于创建读写事务:
aws dynamodb transact-write-items \
--transact-items file://transaction.json
```markdown
以下代码片段用于创建批量事务:
aws dynamodb transact-get-items \
--transact-items file://transaction.json
## 总结
DynamoDB 是一种高度可扩展、完全托管的 NoSQL 数据库服务,具有快速响应、备份和复制、支持 ACID 事务等特点。它的数据模型被设计为键-值和文档型,提供了多种检索数据的方式,并支持事务操作。如果您需要管理大量的数据,并需要快速而可靠的数据访问,DynamoDB 是一个不错的选择。