亚马逊简单数据库身份种子等效物

6

SimpleDB中是否有与标识种子相当的东西?

如果答案是否定的,那么如何创建类似于客户编号或订单编号的内容,以防止创建重复的编号?

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

谢谢您的帮助!

2个回答

6

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

设置条件:

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

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

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

如果无法容忍此类情况,您将需要编写某种替代方式来获取唯一键。不同的SimpleDB区域可用于仅用于密钥生成,因为SimpleDB仍将接受正常写入(非条件PutAttributes)。


谢谢您的答复!阅读完后,我回到了文档,现在对我来说变得更加清晰明了。文档可以在这里找到:http://docs.amazonwebservices.com/AmazonSimpleDB/2009-04-15/DeveloperGuide/ConditionalPut.html - Zaffiro

3

如果您没有已经适用的唯一标识,使用GUID作为项目的标识可能是典型的解决方案。


谢谢你的回复!创建一个GUID是可行的,但我希望生成一些更易于人类阅读的东西。 - Zaffiro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接