Amazon DynamoDB 常见问题
关于 Amazon DynamoDB
什么是 Amazon DynamoDB?
DynamoDB 是一种适用于任何规模的非关系型数据库服务,具有快速又灵活的特点。使用 DynamoDB,客户可以将运行和扩展分布式数据库的管理工作负担交给 AWS,因而无需担心硬件预调配、设置和配置、吞吐能力规划、复制、软件修补或集群扩展等问题。
DynamoDB 可以代我进行哪些管理?
DynamoDB 消除了影响数据库扩展的主要绊脚石之一:数据库软件的管理,以及运行数据库所需的硬件配置。您可在短短几分钟之内部署非关系数据库。DynamoDB 可自动扩展吞吐容量以满足工作负载需求,并随着您的表大小的增长对数据进行分区和再分区。此外,DynamoDB 还可在一个 AWS 区域的三个数据中心之间同步复制数据,为您提供高可用性和数据持久性。
DynamoDB 的一致性模型是什么样的?
从 DynamoDB 读取数据时,用户可以指定希望读取是最终一致性读取还是强一致性读取:
- 最终一致性读取(默认)– 最终一致性选项可以最大程度地提高读取吞吐量。但是,最终一致性读取可能不会反映最近完成的一次写入操作的结果。所有数据副本通常在一秒内达到一致。在短时间之后重复读取,应会返回更新的数据。
- 强一致性读取 – 除了提供最终一致性读取外,DynamoDB 还使您可以根据应用程序或应用程序某元素的要求,以灵活而有控制力的方式请求强一致性读取。强一致性读取返回的结果可反映在读取前收到成功响应的所有写入。
- ACID 事务 – DynamoDB 事务在一个 AWS 账户和区域中跨一个或多个表为开发人员提供原子性、一致性、隔离性和持久性 (ACID)。当构建需要作为单个逻辑业务操作一部分对多个项协调插入、删除或更新的应用程序时,您可以使用事务。
入门
DynamoDB 支持哪种类型的查询功能?
DynamoDB 支持使用用户定义的主键来执行 GET/PUT 操作。对于表中的项目,主键是唯一所需要的属性。您在创建表时指定主键,它是标识每个项目的唯一标识符。DynamoDB 还提供灵活的查询功能,让您可以使用全局二级索引和本地二级索引查询非主键属性。
主键可以是单属性的分区键或复合的分区-排序键。例如,单属性的分区键可以是 UserID。通过这样的单属性分区键,可以对与特定用户 ID 相关联的项目快速读取和写入数据。
DynamoDB 将复合的分区-排序键作为一个分区键元素和一个排序键元素进行索引。这个多部分键可保持第一个元素值和第二个元素值之间的层次结构。例如,复合的分区-排序键可以由 UserID(分区)和 Timestamp(排序)组成。通过保持分区键元素的恒定,您可以在排序键元素中进行搜索以检索项目。利用这种搜索,您就可以使用 Query API 进行检索,例如在一系列时间戳中检索单个 UserID 的所有项目。
如何在 DynamoDB 中更新和查询数据项?
使用 DynamoDB 控制台或 CreateTable API 创建表之后,您可以使用 PutItem 或 BatchWriteItem API 来插入项目。然后,您可以使用 GetItem、BatchGetItem 或 Query API(如果复合主键已启用且正在表中使用)来检索您添加到表中的项目。
任何操作系统下的应用程序是否都能使用 DynamoDB?
是。DynamoDB 是一项完全托管的云服务,可以通过 API 使用。在任何操作系统(例如,Linux、Windows、iOS、Android、Solaris、AIX 和 HP-UX)上运行的应用程序都可以使用 DynamoDB。我们建议借助 AWS SDK 开始使用 DynamoDB。
计划
使用 DynamoDB 如何收费?
每个 DynamoDB 表预调配与其相关联的读取吞吐量和写入吞吐量。您将按小时对吞吐量付费。请注意,无论您是否向表发送请求,我们都将按小时对吞吐量收费。如果您想更改表的预调配吞吐能力,可使用 AWS 管理控制台更改,或者使用 UpdateTable API 或 PutScalingPolicy API 自动扩缩。此外,DynamoDB 将收取数据存储的费用,以及标准的 Internet 数据传输费用。
要了解有关 DynamoDB 定价的更多信息,请查看 DynamoDB 定价页面。
我可以为单个 DynamoDB 表预调配的最大吞吐量是多少?
每个 DynamoDB 表的最大吞吐量实际上无限制。有关设定的限制的信息,请参阅 DynamoDB 的限制。如果要申请提高上限,请联系 Amazon。
我可以为单个 DynamoDB 表预调配的最小吞吐量是多少?
您可以为 Auto Scaling 和手动吞吐量预调配请求的最小预调配吞吐量为 1 个写入容量单位和 1 个读取容量单位。这种预配置属于免费套餐的范围,后者允许使用 25 个写入容量单位和 25 个读取容量单位。这种免费套餐在账户级别而非表级别上适用。换言之,如果您将所有表的预调配容量相加,总容量不超过 25 个写入容量单位和 25 个读取容量单位,则您的预调配容量属于免费套餐范围。
DynamoDB 表类有哪些?
DynamoDB 提供两种旨在帮助您优化成本的表类。DynamoDB Standard 表类为原定设置,建议用于大部分工作负载。DynamoDB Standard-Infrequent Access (DynamoDB Standard-IA) 表类针对表进行了优化,用于存储不频繁访问的数据,其中,存储是主要成本。每个表与一个表类关联,每个表类提供不同的数据存储定价以及读写请求次数。您可以根据表的存储要求和数据访问模式,选择最经济高效的表类。
应在何时使用 DynamoDB Standard-IA?
DynamoDB Standard-IA 帮助您为存储不频繁访问数据的表降低 DynamoDB 总成本,例如应用程序日志、旧的社交媒体帖子、电子商务订单历史记录和以前的游戏成就。如果存储是主要表成本,即存储成本一致超过吞吐量(读写)成本的 50%,则 DynamoDB Standard-IA 表类是您最经济的选择。要了解有关 DynamoDB Standard-IA 定价的更多信息,请查看 DynamoDB 定价页面。
DynamoDB 标准-IA 表如何用于现有 DynamoDB 功能并集成其他 AWS 服务?
DynamoDB 标准-IA 表与 DynamoDB 标准表在支持所有现有 DynamoDB 功能方面没有区别,包括全局表、辅助索引、按需备份和时间点故障恢复(PITR)。DynamoDB 标准-IA 表也具有与其他 AWS 服务的内置集成,其方式与 DynamoDB 标准表相同。例如,可以使用 Amazon CloudWatch 监测 DynamoDB 标准-IA 表的性能,使用 AWS CloudFormation 模板预调配和管理 DynamoDB 标准-IA 表,使用 DynamoDB Accelerator(DAX)添加缓存以提高性能,将更改数据记录流式传输到 Amazon Kinesis Data Streams,将 DynamoDB Standard-IA 表数据导出到 Amazon Simple Storage Service(Amazon S3)。
工作原理
数据模型和 API
有关数据模型和 API 的更多信息,请查看 Amazon DynamoDB:如何使用。
可扩展性、可用性和持久性
有关可扩展性、可用性和持久性的信息,请查看 Amazon DynamoDB 产品详细信息。
Auto Scaling
有关 DynamoDB Auto Scaling 的信息,请参阅使用 DynamoDB Auto Scaling 自动管理吞吐能力。
安全和控制
有关 DynamoDB 安全和控制的信息,请查看 Amazon DynamoDB 的 Identity and Access Management。