【问题标题】:Distributed store with transactions带有事务的分布式存储
【发布时间】:2012-02-16 07:11:47
【问题描述】:

我目前正在开发一个托管在谷歌应用引擎上的应用程序。然而,gae 有很多缺点:它很昂贵并且很难调试,因为我们不能附加到真实实例。

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

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

【问题讨论】:

    标签: google-app-engine nosql cassandra hazelcast


    【解决方案1】:

    有计划在未来支持 cassandra 中的实体组,请参阅CASSANDRA-1684

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

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

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

    【讨论】:

    • 非常感谢。这正是我所需要的。
    【解决方案2】:

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

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

    【讨论】:

    • 我认为这个问题更多地与NoSQL solutions that support transactions 相关,而不是 GAE 的开源替代品。据我所知,您建议的两种替代方案仍处于测试阶段,尚未准备好生产,并且缺少几个 App Engine API。
    猜你喜欢
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多