Amazon DynamoDB
开发人员指南 (API Version 2012-08-10)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用说明

除了终端节点之外,在您的系统上使用 DynamoDB 运行的应用程序还应使用 Amazon DynamoDB Web 服务。但您应了解以下内容:

  • 如果您使用 -sharedDb 选项,则 DynamoDB 将创建一个名为 shared-local-instance.db 的数据库文件。连接到 DynamoDB 的每个程序都将访问此文件。如果删除此文件,将丢失存储在此文件中的所有数据。

  • 如果省略 -sharedDb,则该数据库文件将命名为 myaccesskeyid_region.db,当它们显示在应用程序配置中时,具有 AWS 访问密钥 ID 和区域。如果删除此文件,将丢失存储在此文件中的所有数据。

  • 如果使用 -inMemory 选项,则 DynamoDB 根本不会编写任何数据库文件。相反,所有数据将被写入内存中,并且在您终止 DynamoDB 时不会保存这些数据。

  • 如果使用 -optimizeDbBeforeStartup 选项,则还必须指定 -dbPath 参数,以便 DynamoDB 能够找到其数据库文件。

  • 适用于 DynamoDB 的 AWS 开发工具包要求在应用程序配置中指定访问密钥值和 AWS 区域值。除非您使用 -sharedDb-inMemory 选项,否则 DynamoDB 将使用这些值来命名本地数据库文件。

    虽然这些值无需是有效 AWS 值(以便在本地运行),但是您可能会发现使用有效值很有用,这样,您以后只需更改当前使用的终端节点即可在云中运行代码。

在本地运行的 DynamoDB 与 Amazon DynamoDB Web 服务的区别

DynamoDB 的可下载版本尝试尽可能逼真地模拟 Amazon DynamoDB Web 服务,但在以下方面与 Amazon DynamoDB 服务有所不同:

  • 在客户端层面上不支持区域和不同的 AWS 账户。

  • 忽略预配置的吞吐量设置,即使 CreateTable 操作需要这些设置也是如此。对于 CreateTable,您可以为预配置读取和写入吞吐量指定任何数字,即使不使用这些数字也是如此。您每天调用 UpdateTable 多少次都可以;但对预配置吞吐量值所做的任何更改都会被忽略。

  • Scan 操作将按顺序执行。不支持并行扫描。Scan 操作的 SegmentTotalSegments 参数将被忽略。

  • 对表数据的读取和写入操作的速度仅受计算机速度的限制。CreateTableUpdateTableDeleteTable 操作立即发生,表状态始终为“ACTIVE”。仅更改表和/或全局二级索引的预配置吞吐量设置的 UpdateTable 操作将立即执行。如果 UpdateTable 操作创建或删除任何全局二级索引,则这些索引在常规状态(如,分别为 CREATING 和 DELETING)之后变为 ACTIVE 状态。在此期间,表保持为 ACTIVE 状态。

  • 读取操作具有最终一致性。但是,由于 DynamoDB 在计算机上的运行速度,大多数读取操作实际上会表现为强一致性。

  • 不跟踪占用的容量单位。在操作响应中返回 Null,而不是容量单位。

  • 不跟踪项目集合指标,以及项目集合大小。在操作响应中返回 Null,而不是项目集合指标。

  • 在 DynamoDB 中,每个结果集返回的数据有 1 MB 的限制。DynamoDB Web 服务执行此限制,DynamoDB 的可下载版本也是如此。但在查询索引时,DynamoDB 服务仅计算投影键和属性的大小。而 DynamoDB 的可下载版本则会计算整个项目的大小。

  • 如果您正在使用 DynamoDB 流,则创建分区的速率可能不同:在 DynamoDB Web 服务中,分区创建行为部分受到表分区活动的影响;然而,当您在本地运行 DynamoDB 时,则没有表分区。在任一情况下,分区都是临时的,因此您的应用程序不应依赖分区行为。