2012-02-16 61 views
4

我目前正在开发一个托管在谷歌应用程序引擎的应用程序。但是,gae有许多缺点:它很昂贵,而且很难调试,因为我们无法附加到实际的实例。分布式存储与交易

我正在考虑将gae更改为开源替代方案。不幸的是,现有的NOSQL解决方案都不支持我支持类似于gae交易的交易(gae支持实体组内的交易)。

您对解决这个问题有什么看法?我目前正在考虑像Apache Cassandra这样的商店+一些锁定服务(hazelcast)进行交易。有没有人有这方面的经验?您可以推荐什么

回答

2

计划未来支持卡桑德拉的实体组织,请参阅CASSANDRA-1684

如果您的数据无法轻易建模而无需事务处理,那么是否值得使用非跨语言数据库?你需要可扩展性吗?

标准的方式做这样的事情卡桑德拉在这个presentation描述,开始幻灯片24.交易基本上你写类似WAL log进入1行的东西,然后对多行的实际写入,然后删除WAL日志行。失败时,只需阅读并执行WAL日志中的操作即可。由于所有cassandra写入都有用户提供的时间戳,因此所有写入都可以是幂等的,只需使用WAL日志条目存储写入的时间戳即可。

该策略为您提供ACID中的Atomic和Durable,但是您没有获得一致性和隔离性。如果你的工作规模要求cassandra,那么你可能需要放弃完整的ACID交易。

+0

非常感谢。这正是我需要的。 – 2012-02-26 06:58:23

1

您可能需要尝试AppScaleTyphoonAE,以便在您自己的硬件上托管为App Engine构建的应用程序。

如果您是在Python下开发的,您可以使用Werkzeug debugger非常有趣的调试选项。

+0

我认为这个问题更多地涉及'支持事务的NoSQL解决方案,而不是GAE的开源替代方案。而且据我所知,您建议的两种替代方案仍处于测试阶段,尚未准备就绪,并且缺少一些App Engine API。 – 2012-02-20 09:22:33