我目前正在开发一个托管在google app engine上的应用程序。然而,gae有很多缺点:它很昂贵,而且很难调试,因为我们不能附加到真实的实例上。
我正在考虑将gae改为一个开源的替代方案。不幸的是,满足我的现有NOSQL解决方案都不支持类似于gae事务的事务(gae支持实体组内的事务)。
你对解决这个问题有什么看法?我目前正在考虑一个像Apache Cassandra +一些事务锁定服务(hazelcast)的商店。有没有人有这方面的经验?你能推荐些什么?
发布于 2012-02-26 13:09:19
cassandra有计划在未来支持实体组,请参阅CASSANDRA-1684。
如果您的数据不能在没有事务的情况下轻松建模,那么使用非跨越式数据库值得吗?你需要可伸缩性吗?
在cassandra中执行类似事务的标准方法在此presentation中描述,从幻灯片24开始。基本上,您将类似于WAL log条目的内容写入1行,然后在多行上执行实际写入,然后删除WAL日志行。失败时,只需读取并执行WAL日志中的操作即可。由于所有cassandra写入都有用户提供的时间戳,所以所有写入都可以成为幂等的,只需将写入的时间戳与WAL日志条目一起存储即可。
这种策略为您提供了ACID中的原子性和持久性,但您不会获得一致性和隔离性。如果你的工作规模需要像cassandra这样的东西,你可能无论如何都需要放弃完整的ACID事务。
发布于 2012-02-17 19:38:39
您可能希望尝试使用AppScale或TyphoonAE在您自己的硬件上托管为App Engine构建的应用程序。
如果您是在Python下进行开发,那么您可以使用Werkzeug debugger提供非常有趣的调试选项。
https://stackoverflow.com/questions/9306987
复制相似问题