DynammoDB 中是否有一个选项可以将自动递增的 ID 作为主键存储在表中?我还需要将服务器时间作为“创建于”字段(例如,用户创建于)存储在表中。但我找不到任何方法从 DynamoDB 或任何其他 AWS 服务获取服务器时间。
你们能帮我吗
- 在 DyanmoDB 表中使用自动递增的 ID
- 将服务器时间存储在“创建于”类似字段的表中。
谢谢。
DynammoDB 中是否有一个选项可以将自动递增的 ID 作为主键存储在表中?我还需要将服务器时间作为“创建于”字段(例如,用户创建于)存储在表中。但我找不到任何方法从 DynamoDB 或任何其他 AWS 服务获取服务器时间。
你们能帮我吗
谢谢。
实际上,DynamoDB 的功能很少,而这正是它的主要优势。简单。
对于“日期”问题,应该很容易在客户端生成。我可以建议您使用 ISO 8601 日期格式吗?它对程序员和计算机都很友好。
大多数情况下,有比使用项目自动 ID 更好的方法。这通常是 SQL 或 MongoDB 世界中的一个坏习惯。例如,电子邮件或登录信息将为用户提供完美的 ID。但我知道在某些特定情况下,ID 可能有用。
在这些情况下,您需要构建自己的系统。在这个SO 答案和这篇来自 DynamoDB-Mapper 文档的文章中,我解释了如何做到这一点。我希望它有帮助
与其使用自动递增的 ID,不如考虑使用 GUID。您可以获得更高的理论吞吐量和更好的故障处理,而您唯一失去的是自然时间顺序,它可以更好地按日期处理。
更高的吞吐量,因为您不需要要求 Dynamo 生成下一个可用 ID(这将需要一些资源在某处获得锁、获取一些数字,并确保没有其他任何东西获得这些数字)。当您失去与 Dynamo 的连接时(Dynamo 出现故障,或者您是突发性的,并且您的应用程序正在做的工作比当前预置的吞吐量更多)时,会出现更好的故障处理。只写应用程序可以继续“工作”并生成带有 ID 的完整数据,将其排队以写入 dynamo,而不必担心 ID 冲突。
为此,我创建了一个小型 Web 服务。请参阅此博客文章,其中解释了我如何将stateful.co与 DynamoDB 一起使用以模拟自动增量功能:http ://www.yegor256.com/2014/05/18/cloud-autoincrement-counters.html
基本上,您在stateful.co注册一个原子计数器,并在每次需要新值时通过 RESTful API 递增它。