回答
目前,没有,并且有可能不可能。
条件更新和删除只允许在正在更新的项目上设置条件。除此之外,还没有内置机制来存储多值版本的相同数据或存储多值属性的序列信息。可以使用不同的属性名称,但这会中断查询。
最近的一致性更新允许在项目级别轻松实现事务。但是,在同一个(或不同的)域中的多个项目中,没有直接的实现。也没有隔离级别选项。
这可能是有可能的,但我担心你最终会杀死进程中的所有查询功能。要么通过不一致的属性名称,要么需要更多的SELECT条件而不是优秀的性能。
除此之外,它似乎需要所有访问数据的一致读取。这可能会否定使用最终一致的系统的所有可用性优点,因为即使无法到达单个副本节点,一致的读取也会失败。
我并不想成为一个不可说的人,我只是想知道它有多实用。你已经不得不放弃很多功能来获得SimpleDB的高可用性,如果你不需要这些功能,这很好,但如果你放弃了高可用性,我认为有很少的情况下,会是一个很好的折衷。
在处理我的Simple Savant C# library for SimpleDB时,我想到了很多关于此问题的内容,并且我得出结论,试图在像SimpleDB这样的分布式系统上分层真正的事务性对于许多原因是个不好的主意。
我想到的最好的东西(它提供了没有过度希望和过度复杂的价值的系统)我称之为“可靠的写入”。这将保证最终完成跨域更新中的所有操作(放入和删除)。部分写入永久失败的唯一方法是如果您的某个更新违反了SimpleDB约束。
此功能尚未实施,但您可以阅读更多详情并对功能here发表评论。我有兴趣听取您的想法,以及这将如何满足您作为应用程序开发人员的需求。
感谢downvote! – 2015-03-12 17:10:36
- 1. 如何实现MVCC?
- 2. 我可以通过服务器实现客户端 - 客户端通信吗?
- 3. 任何使用Amazon SimpleDB的博客软件?
- 4. SimpleDB的直接客户端访问
- 5. 通过客户端
- 6. 客户端接口实现
- 7. ActiveSync客户端Java实现
- 8. FTP客户端java实现
- 9. 实现DHCP客户端
- 10. 实现COMET客户端
- 11. Java SMPP客户端实现
- 12. HTTP上的NTLM:任何C#客户端实现?
- 13. Amazon SimpleDB/Amazon RDS的性能?
- 14. 通过WCF从客户端1到客户端2的通知
- 15. 如何通过Jersy REST客户端调用PUT客户端使用null实体
- 16. 使用AmazonRDSClientBuilder通过java客户端连接到Amazon RDS
- 17. Grails和Amazon SimpleDB
- 18. 通过客户端实体上的“客户端状态”字段设置权限
- 19. 如何实现容错Web客户端?
- 20. 如何实现Spring Rest客户端
- 21. 如何实现一个git客户端?
- 22. 如何实现聊天客户端
- 23. 在Python中实现SAML客户端
- 24. 为Webservice客户端实现ActiveRecord
- 25. 在C中实现RTMFP客户端
- 26. OrientDB是否实际实现了MVCC?
- 27. 在客户端实现彗星
- 28. 如何在actor模型中实现MVCC
- 29. 使用UCMA的Lync客户端实现
- 30. 如何通过PropFindMethod得到客户端
我同意放弃高可用性是毫无意义的,但我认为一致读取和条件更新的双重特性确实允许实现多项/多域事务。需要一致的读取,但不是我不认为的通常路径(也可能根本不实现只读操作)。 我不需要多值属性 - 但它们显然可以用于存储项目的版本,时间戳,事务ID等。 所以,如果你的答案是否定的,那么我想你已经回答了我的问题(不是我希望的答案)。 – DavidJ 2010-03-18 19:40:11