DynamoDB自动增加ID和服务器时间(iOS SDK)

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

你们可以帮我吗?

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

谢谢。

实际上,DynamoDB中的function非常less,而这正是它的主要优势。 简单。

  • 没有办法自动生成ID和UUID。
  • 没有办法自动生成date

对于“date”问题,应该很容易在客户端生成它。 我可以build议你使用ISO 8601的date格式吗? 这是程序员和计算机友好。

大多数情况下,比使用Items的自动ID更好。 这通常是从SQL或MongoDB世界采取的坏习惯。 例如,电子邮件或login将为用户提供一个完美的ID。 但是我知道有些情况下ID可能是有用的。

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

考虑使用GUID,而不是使用自动递增的ID。 你会得到更高的理论吞吐量和更好的失败处理能力,唯一失去的就是自然的时间顺序,更好的处理date。

更高的吞吐量,因为您不需要询问Dynamo来生成下一个可用的ID(这需要获取锁的某些资源,获取一些数字,并确保没有其他数据可以获取这些数字)。 如果失去与Dynamo的连接(Dynamo失败,或者突发事件,并且您的应用程序正在执行比当前调配的吞吐量更多的工作),则会有更好的失败处理。 一个只写应用程序可以继续“工作”,并生成完整的数据ID,将其排队写入发电机,而不必担心身份证冲突。

我为此创build了一个小型Web服务。 看到这个博客文章,解释了如何使用stateful.co与DynamoDB来模拟自动递增function: http ://www.yegor256.com/2014/05/18/cloud-autoincrement-counters.html

基本上,你在stateful.co上注册一个primefaces计数器,每当你需要一个新的值,通过RESTful API增加它。