一、介绍
1、简介
Amazon DynamoDB 是由 AWS 提供的一种完全托管的 NoSQL 数据库服务,适用于高性能、可扩展的应用程序。它设计用于处理大规模的数据存储和高速数据访问,广泛应用于需要低延迟、高吞吐量的场景,如移动应用、电商、游戏后端、IoT(物联网)和社交媒体等。此外还可以使用 AWS 管理控制台来监控资源使用情况和各种性能指标。
2、特点
-
高可扩展性: DynamoDB 能够自动扩展以处理大规模的数据和高并发的请求。它通过分区技术在多个服务器上自动分配数据,确保随着数据增长,性能不会下降。
-
低延迟和高吞吐量: DynamoDB 提供毫秒级响应时间,支持数百万请求每秒,适用于需要低延迟和高并发的场景。
-
完全托管: 用户无需管理硬件、数据库的安装、配置和维护等,AWS 会自动管理 DynamoDB 实例的运行、扩展、备份和恢复。
-
无服务器架构: DynamoDB 支持无服务器(Serverless)模式,意味着用户不需要管理服务器的数量或规模,可以根据需要自动调整容量。
-
多区域复制: DynamoDB 支持跨多个 AWS 区域复制,确保数据高可用和灾难恢复能力。
-
灵活的数据模型: DynamoDB 是一个键值和文档存储数据库,可以根据业务需求选择适当的模式。它支持单表设计,并通过索引和查询操作提高数据检索的效率。
-
强一致性与最终一致性: DynamoDB 支持强一致性读取和最终一致性读取两种模式。强一致性读取返回的结果是最新的,而最终一致性读取可能会稍微滞后,但可以提高吞吐量。
3、使用 DynamoDB 的场景
(1)高并发应用:如社交媒体平台、移动应用后端、实时分析等。
(2)快速增长的应用:如物联网设备数据存储、电商网站用户行为跟踪等。
(3)需要低延迟的应用:如金融服务、广告实时竞价系统、游戏排行榜等。
4、主要优点
- 管理简单:无需手动配置数据库实例或进行硬件扩展,AWS 负责底层管理。
- 高可用性:自动跨多个区域复制数据,避免单点故障。
- 灵活扩展:支持处理大规模流量,适应需求变化。
5、主要限制
- 查询功能有限:相比关系型数据库,DynamoDB 在复杂查询和联接操作上的能力有限。通常需要依赖设计好的索引和查询模式。
- 成本:根据表的规模和访问模式,DynamoDB 的费用可能会根据读取、写入、存储和索引等项产生较高费用,特别是大规模操作时需要注意成本控制。
6、官方文档
7、aws dynamo
dynamo是aws完全托管的,无需安装任何服务,即可直接在aws控制台上操作dynamo。
(1)建表删表
点击create table即可建表;选中表后点击Delete即可删除表
(2) 查看表
(3)查看数据
先在Tables中选择表,之前点击Explore items,即可查看该表的数据
8、dynamo local
为了方便开发和测试,Amazon还提供了DynamoDB Local,这是一种轻量级的版本,不依赖远程aws,可以在本地机器上运行,所以需要手动下载和安装。
二、关键概念
1、表(Table)
DynamoDB中的数据是存储在表中的。每个表都需要一个主键来唯一标识记录。主键由两个部分组成:
(1)分区键(Partition Key):表中的每个项目都有一个分区键,决定了数据存储的位置。
(2)复合主键(Partition Key + Sort Key):允许对数据进行排序的键,复合主键使得每个分区可以存储多个项目。
2、项目(Item)
表中的一条记录是一个项目,类似于传统数据库中的一行。项目由多个属性(字段)组成。
3、属性(Attribute)
每个项目都有一个或多个属性,类似于数据库中的列。属性的类型可以是基本数据类型,如字符串、数字、布尔值,也可以是嵌套的数据结构,如列表和映射。
4、主键
在 Amazon DynamoDB 中,每个表必须有主键 (Primary Key),这也是 DynamoDB 表结构的核心要求。主键用于唯一标识表中的每个项目,并决定如何将数据分布到不同的分区。主键由两种类型组成:分区键 (Partition Key,也叫Hash Key) 和 排序键 (Sort Key,也叫Range Key)。这两者可以用来定义数据的存储方式。
(1)Partition Key /Hash Key
是 DynamoDB 主键的一部分,负责将数据分布到不同的物理分区。根据分区键的值,DynamoDB 会使用哈希函数计算分区存储位置。如果你只定义了分区键,则数据表的主键是 单一分区键。每个分区键值都对应一个分区,其中存储着该键值下的所有数据项。
使用排序键,你可以执行类似范围查询、排序查询等操作。例如,你可以查找某个分区键值下,所有排序键在某个范围内的数据项。
如在一个订单表中,UserId
可以作为分区键,而OrderDate
作为排序键。这样可以让同一个用户(分区键相同)拥有多个订单(排序键不相同)。
(2)Range Key / Sort Key
是可选的,用来进一步细分存储在同一分区下的项目。它允许在同一个分区键值下存储多项数据,并按照排序键的值进行排序。
DynamoDB 主键类型总结
单分区键:只有一个分区键,适用于数据量较小的情况(可以确保唯一性)。
分区键 + 排序键组合:一个分区键+一个排序键,注意排序键也最多只能有一个。适用于数据量较大、需要按排序键进行操作的情况。
5、流(Streams)
DynamoDB Streams 可以记录表的数据变更,支持应用程序监听这些变更并执行相应操作。
6、容量单位(Capacity Units)
DynamoDB 的吞吐量是基于容量单位来计算的。用户可以选择按预置容量模式(Provisioned Mode)或者按需容量模式(On-Demand Mode)计费:
(1)预置容量模式:事先设定表的吞吐量(读取和写入请求),适合预测负载的应用。
(2)按需容量模式:DynamoDB 根据实际负载动态调整吞吐量,适合负载波动较大的应用。
7、自动备份和恢复
DynamoDB 提供了自动备份、点-in-time 恢复(PITR),确保数据的持久性和恢复能力。