DynamoDB 还可在一个 AWS 区域的三个数据中心之间同步复制数据,为您提供高可用性和数据持久性。
从 DynamoDB 读取数据时,用户可以指定希望读取是最终一致性读取还是强一致性读取:
- 最终一致性读取(默认)– 最终一致性选项可以最大程度地提高读取吞吐量。但是,最终一致性读取可能不会反映最近完成的一次写入操作的结果。所有数据副本通常在一秒内达到一致。在短时间之后重复读取,应会返回更新的数据。
- 强一致性读取 – 除了提供最终一致性读取外,DynamoDB 还使您可以根据应用程序或应用程序某元素的要求,以灵活而有控制力的方式请求强一致性读取。强一致性读取返回的结果可反映在读取前收到成功响应的所有写入。
Amazon DynamoDB 是一个键/值和文档数据库,可以在任何规模的环境中提供个位数的毫秒级性能。它是一个完全托管的多区域多主数据库,具有适用于 Internet 规模的应用程序的内置安全性、备份和恢复和内存缓存。DynamoDB 每天可处理超过 10 万亿个请求,并可支持每秒超过 2000 万个请求的峰值。
DynamoDB 通过在任意规模环境中提供一致的个位数毫秒响应时间,支持世界上一些最大规模的应用程序。您可以构建吞吐量和存储空间几乎无限的应用程序。DynamoDB 全局表可跨多个 AWS 区域复制您的数据,使您能够快速在本地访问全局分布的应用程序的数据。对于需要以微秒级延迟执行更快访问的使用案例,DynamoDB Accelerator (DAX) 提供了完全托管的内存缓存。
DynamoDB 支持 ACID 事务,使您能够大规模构建业务关键型应用程序。DynamoDB 默认加密所有数据,并为您的所有表提供细粒度的身份和访问控制。您可以立即创建数百 TB 数据的完整备份,而不会对您的表性能产生影响,并且可以恢复到先前的 35 天内的任何时间点,而无需停机。DynamoDB 还提供有服务级别协议,从而确保可用性。
Amazon DynamoDB 是一个 NoSQL 数据库,它支持键-值和文档数据模型,并使开发人员能够构建无服务器的现代化应用程序,这些应用程序可以从小规模开始,然后扩展到全球范围以支持每秒数 PB 的数据和数千万条读取和写入请求。DynamoDB 可运行 Internet 规模的高性能应用程序,这些应用程序将为传统的关系数据库带来沉重的负担。
新增功能:
- 按需容量模式
- 对 ACID 事务的内置支持
- 按需备份和时间点恢复
- 静态加密
当存储在 DynamoDB 表中的项目发生更改时,许多应用程序都会因能够捕获此类更改而受益。以下是一些示例使用案例:
-
一个 AWS 区域中的一个应用程序将修改 DynamoDB 表中的数据。另一个 AWS 区域中的另一个应用程序将读取这些数据修改并将数据写入另一个表中,并创建一个与原始表保持同步的副本。
-
一个热门移动应用程序以每秒数千次更新的速率修改 DynamoDB 表中的数据。另一个应用程序捕获和存储有关这些更新的数据,并提供针对该移动应用程序的实时用量指标。
-
一种全球多人游戏具有多主机拓扑结构,并将数据存储在多个 AWS 区域中。每个主机通过使用并重放远程区域中发生的更改来保持同步。
-
一旦某个好友上传新图片,一个应用程序就会自动向群组中的所有好友的移动设备发送通知。
-
一个新客户将数据添加到 DynamoDB 表。此事件调用另一个应用程序,以便向该新客户发送欢迎电子邮件。
表
表大小
表的大小没有实际限制。表的项目数和字节数是无限制的。
每个账户中表的数量
对于任何 AWS 账户,每个区域的初始限制为 256 个表。
要请求提高服务限制,请参阅 。
数据类型
字符串
字符串的长度会受到 400 KB 这一项目大小上限的限制。
字符串是使用 UTF-8 二进制编码的 Unicode。由于 UTF-8 是宽度可变的编码,因此 DynamoDB 使用其 UTF-8 字节确定字符串的长度。
项目
项目大小
DynamoDB 中的项目大小上限为 400 KB,包括属性名称二进制长度(UTF-8 长度)和属性值长度(同为二进制长度)。属性名称也包含在此大小限制之内。
例如,比如一个项目有两个属性:一个属性名为“shirt-color”,值为“R”,另一个属性名为“shirt-size”,值为“M”。该项目的总大小为 23 字节。
具有本地二级索引的表的项目大小
对于表上的每个local secondary index,以下对象的总大小有 400 KB 的限制:
-
表中项目数据的大小。
-
与该项目对应的local secondary index条目的大小,包括其键值和投影属性。
属性
每个项目的属性“名称/值”对
每个项目的属性的累计大小必须在 DynamoDB 项目大小上限 (400 KB) 以内。
列表、映射或集中值的数量
只要包含值的项目大小在 400 KB 这一大小限制以内,列表、映射或集中值的数量就没有限制。
属性值
属性值不能是空字符串或空集(字符串集、数字集或二进制集),但可以是空列表和映射。
嵌套属性深度
DynamoDB 支持高达 32 级深度的嵌套属性。
DynamoDB Auto Scaling 管理表的吞吐容量的方式:
以下步骤汇总了上图中所示的 Auto Scaling 流程:
-
为 DynamoDB 表创建 Application Auto Scaling 策略。
-
DynamoDB 将使用的容量指标发布到 Amazon CloudWatch。
-
如果表使用的容量在特定时段内超出目标使用率 (或低于目标使用率),则 Amazon CloudWatch 将触发警报。您可以在 AWS 管理控制台上查看警报并使用 Amazon Simple Notification Service (Amazon SNS) 接收通知。
-
CloudWatch 警报调用 Application Auto Scaling 来评估扩展策略。
-
Application Auto Scaling 发出
UpdateTable
请求以调整表的预置吞吐量。 -
DynamoDB 处理
UpdateTable
请求,并动态增加(或减少)表的预置的吞吐容量,使它接近目标使用率。
为了解 DynamoDB Auto Scaling 的工作方式,假定您有一个名为 ProductCatalog 的表。由于很少将数据批量加载到表中,因此不会出现大量写入活动。不过,表会遇到大量的读取活动,此活动随时间的推移而变化。通过监控 ProductCatalog 的 Amazon CloudWatch 指标,您确定表需要 1200 个读取容量单位(避免在活动到达峰值时出现 DynamoDB 限制读取请求的情况)。您还确定,在读取流量达到其最低值时,ProductCatalog 至少需要 150 个读取容量单位。
在 150 到 1200 个读取容量单位的范围内,您确定 70% 的目标使用率将适合 ProductCatalog 表。目标使用率 是使用的容量单位与预置容量单位的比率(以百分比表示)。Application Auto Scaling 使用其目标跟踪算法来确保按需调整 ProductCatalog 的预置读取容量,以便使用率达到或接近 70%。