SimpleDB中是否有与标识种子相当的东西?
如果答案是否定的,那么如何创建类似于客户编号或订单编号的内容,以防止创建重复的编号?
我的经验主要来自SQL Server,我通常会创建具有标识种子的主键,或者在存储过程中使用事务来递增数字。
谢谢您的帮助!
SimpleDB中是否有与标识种子相当的东西?
如果答案是否定的,那么如何创建类似于客户编号或订单编号的内容,以防止创建重复的编号?
我的经验主要来自SQL Server,我通常会创建具有标识种子的主键,或者在存储过程中使用事务来递增数字。
谢谢您的帮助!
您可以使用条件写入创建唯一键。只需使用要使用的下一个客户编号和要存储的数据进行PutAttributes即可。您无法为实际项目名称添加条件,但是可以使用始终存在的属性(例如创建日期或用户组)。
设置条件:
Expected.1.Name=creation_date
Expected.1.Exists=false
只有在具有该项名称的项目中没有creation_date时,调用才会成功。如果您总是编写creation_date,则可以获得对新项目名称进行乐观锁定的效果。当然,您可以使用任何属性,只要您始终在第一个条件式中放置它。
在大多数情况下,条件写入的性能与普通写入相同,但是当SimpleDB处于重载状态或存在高内部网络延迟时,这些调用将比普通写入花费更长时间。在SimpleDB内部的罕见故障场景中,条件写入将在一段时间内完全失败。
如果无法容忍此类情况,您将需要编写某种替代方式来获取唯一键。不同的SimpleDB区域可用于仅用于密钥生成,因为SimpleDB仍将接受正常写入(非条件PutAttributes)。
如果您没有已经适用的唯一标识,使用GUID作为项目的标识可能是典型的解决方案。