google-app-engine - 具有事务的分布式存储

标签 google-app-engine nosql cassandra hazelcast

我目前正在开发托管在 google app engine 上的应用程序。然而,gae 有很多缺点:它很昂贵并且很难调试,因为我们无法附加到真实实例。

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

您如何看待解决这个问题?我目前正在考虑像 Apache Cassandra 这样的商店 + 一些用于交易的锁定服务 (hazelcast)。有没有人在这方面有经验?你能推荐什么

最佳答案

future 有计划支持cassandra中的实体组,见CASSANDRA-1684 .

如果您的数据在没有事务的情况下无法轻松建模,是否值得使用非事务数据库?您需要可扩展性吗?

在这个 presentation 中描述了在 cassandra 中进行类似事务的标准方法,从幻灯片 24 开始。基本上,您编写的内容类似于 WAL log。进入 1 行,然后对多行执行实际写入,然后删除 WAL 日志行。失败时,只需读取 WAL 日志并执行操作即可。由于所有 cassandra 写入都有用户提供的时间戳,因此所有写入都可以是幂等的,只需将写入的时间戳与 WAL 日志条目一起存储即可。

此策略为您提供了 ACID 中的 Atomic 和 Durable,但您没有获得 Consistency 和 Isolation。如果您正在大规模工作,需要像 cassandra 这样的东西,您可能无论如何都需要放弃完整的 ACID 事务。

关于google-app-engine - 具有事务的分布式存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9306987/

相关文章:

google-app-engine - Channel API (GAE) 中的消息格式?

google-app-engine - go 和 appengine 的测试用例

cassandra - 如何在cassandra表中添加多列?

Cassandra nodetool 刷新不起作用,返回 SyntaxException

java - Cassandra 中副本之间的计数器值不一致

google-app-engine - Google App Engine弹性状态检查中的Docker网址错误

google-app-engine - 仅从产品连接到 Google Cloud SQL(第二代)时通信链接失败

java - 从HBase读取数据

database - Cassandra 2.0 中的有序模型

MongoDB 数组中的所有值都应该小于一个值