2010-03-16 52 views

回答

1

目前,没有,并且有可能不可能。

条件更新和删除只允许在正在更新的项目上设置条件。除此之外,还没有内置机制来存储多值版本的相同数据或存储多值属性的序列信息。可以使用不同的属性名称,但这会中断查询。

最近的一致性更新允许在项目级别轻松实现事务。但是,在同一个(或不同的)域中的多个项目中,没有直接的实现。也没有隔离级别选项。

这可能是有可能的,但我担心你最终会杀死进程中的所有查询功能。要么通过不一致的属性名称,要么需要更多的SELECT条件而不是优秀的性能。

除此之外,它似乎需要所有访问数据的一致读取。这可能会否定使用最终一致的系统的所有可用性优点,因为即使无法到达单个副本节点,一致的读取也会失败。

我并不想成为一个不可说的人,我只是想知道它有多实用。你已经不得不放弃很多功能来获得SimpleDB的高可用性,如果你不需要这些功能,这很好,但如果你放弃了高可用性,我认为有很少的情况下,会是一个很好的折衷。

+0

我同意放弃高可用性是毫无意义的,但我认为一致读取和条件更新的双重特性确实允许实现多项/多域事务。需要一致的读取,但不是我不认为的通常路径(也可能根本不实现只读操作)。 我不需要多值属性 - 但它们显然可以用于存储项目的版本,时间戳,事务ID等。 所以,如果你的答案是否定的,那么我想你已经回答了我的问题(不是我希望的答案)。 – DavidJ 2010-03-18 19:40:11

-1

在处理我的Simple Savant C# library for SimpleDB时,我想到了很多关于此问题的内容,并且我得出结论,试图在像SimpleDB这样的分布式系统上分层真正的事务性对于许多原因是个不好的主意。

我想到的最好的东西(它提供了没有过度希望和过度复杂的价值的系统)我称之为“可靠的写入”。这将保证最终完成跨域更新中的所有操作(放入和删除)。部分写入永久失败的唯一方法是如果您的某个更新违反了SimpleDB约束。

此功能尚未实施,但您可以阅读更多详情并对功能here发表评论。我有兴趣听取您的想法,以及这将如何满足您作为应用程序开发人员的需求。

+0

感谢downvote! – 2015-03-12 17:10:36