Amazon SimpleDB Identity Seed等效

时间:2010-04-10 12:59:49

标签: amazon-simpledb

SimpleDB中是否有等同于种子的种子?

如果答案是否定的,您如何处理创建类似客户编号或订单号的内容,以防止创建重复的数字?

我的经验主要来自SQL Server,我在其中创建带有标识种子的主键,或者使用存储过程中的事务来增加数字。

感谢您的帮助!

2 个答案:

答案 0 :(得分:6)

您可以使用条件写入创建唯一键。只需使用您要使用的下一个客户编号和要存储的数据来执行PutAttributes。您不能为实际项目名称添加条件,但可以使用始终存在的属性(如创建日期或用户组)。

设置条件:

   Expected.1.Name=creation_date
   Expected.1.Exists=false

只有在具有该项目名称的项目中没有creation_date时,调用才会成功。如果始终编写creation_date,则会在新项目名称上获得乐观锁定的效果。当然,你可以使用你想要的任何属性,只要你总是将它包含在第一个条件放置中。

在大多数情况下,条件写入的性能与正常写入相同,但是当SimpleDB处于高负载或高内部网络延迟时,与正常写入相比,这些调用将花费更长时间。在SimpleDB内部的罕见故障情况下,条件写入将在一段时间内完全失败。

如果您无法忍受这种情况,则必须采用某种替代方式编写代码,以便在停机期间获取您的唯一密钥。不同的SimpleDB区域只能用于密钥生成,因为SimpleDB在中断期间仍会接受正常写入(非条件PutAttributes)。

答案 1 :(得分:3)

如果您还没有可以使用的独特功能,那么使用项目的GUID可能是典型的解决方案。