11

DynammoDB 中是否有一个选项可以将自动递增的 ID 作为主键存储在表中?我还需要将服务器时间作为“创建于”字段(例如,用户创建于)存储在表中。但我找不到任何方法从 DynamoDB 或任何其他 AWS 服务获取服务器时间。

你们能帮我吗

  1. 在 DyanmoDB 表中使用自动递增的 ID
  2. 将服务器时间存储在“创建于”类似字段的表中。

谢谢。

4

3 回答 3

10

实际上,DynamoDB 的功能很少,而这正是它的主要优势。简单。

  • 无法自动生成 ID 或 UUID。
  • 无法自动生成日期

对于“日期”问题,应该很容易在客户端生成。我可以建议您使用 ISO 8601 日期格式吗?它对程序员和计算机都很友好。

大多数情况下,有比使用项目自动 ID 更好的方法。这通常是 SQL 或 MongoDB 世界中的一个坏习惯。例如,电子邮件或登录信息将为用户提供完美的 ID。但我知道在某些特定情况下,ID 可能有用。

在这些情况下,您需要构建自己的系统。在这个SO 答案这篇来自 DynamoDB-Mapper 文档的文章中,我解释了如何做到这一点。我希望它有帮助

于 2012-11-07T15:00:40.143 回答
8

与其使用自动递增的 ID,不如考虑使用 GUID。您可以获得更高的理论吞吐量和更好的故障处理,而您唯一失去的是自然时间顺序,它可以更好地按日期处理。

更高的吞吐量,因为您不需要要求 Dynamo 生成下一个可用 ID(这将需要一些资源在某处获得锁、获取一些数字,并确保没有其他任何东西获得这些数字)。当您失去与 Dynamo 的连接时(Dynamo 出现故障,或者您是突发性的,并且您的应用程序正在做的工作比当前预置的吞吐量更多)时,会出现更好的故障处理。只写应用程序可以继续“工作”并生成带有 ID 的完整数据,将其排队以写入 dynamo,而不必担心 ID 冲突。

于 2012-11-08T04:13:01.933 回答
0

为此,我创建了一个小型 Web 服务。请参阅此博客文章,其中解释了我如何将stateful.co与 DynamoDB 一起使用以模拟自动增量功能:http ://www.yegor256.com/2014/05/18/cloud-autoincrement-counters.html

基本上,您在stateful.co注册一个原子计数器,并在每次需要新值时通过 RESTful API 递增它。

于 2014-05-19T08:40:06.017 回答