当前位置:  开发笔记 > 数据库 > 正文

与ZooKeeper的Cassandra交易 - 这有用吗?

如何解决《与ZooKeeper的Cassandra交易-这有用吗?》经验,为你挑选了1个好方法。

我试图在ZooKeeper的帮助下为Cassandra实现一个事务系统.由于我认为我没有足够的数据库实施经验,我想知道我的想法是否原则上有效,或者是否有任何重大缺陷.

以下是步骤的高级描述:

    识别要编辑的所有行(键)和列.让键为[K0..Kn]

    对所涉及的所有行应用写锁定(锁是内存中的Zookeeper实现)

    将旧值复制到Cassandra中由键唯一标识的不同位置:[K'0..K'n]

    使用持久模式存储[K'0..K'n]并将它们映射到ZooKeeper中的[K0..Kn]

    继续将更新应用于数据

    删除ZooKeeper中的条目

    解锁行

    在维护线程上懒惰地删除[K'0..K'n]的条目(cassandra删除使用时间戳,因此K'0..K'n可以重新用于具有较新时间戳的另一个事务)

理由:

    如果在步骤1-4中事务失败,则不应用任何更改,我可以中止事务并删除存储在zookeeper中的任何内容并在cassandra中备份,如果有的话.

    如果在步骤5中事务失败,则使用步骤3中保存的信息来回滚任何更改.

    如果服务器碰巧被清理人员发生故障/崩溃/被盗,在重新启动服务任何请求之前,我会检查来自步骤4的zookeeper中是否有任何密钥,如果是,我会使用这些密钥来获取备份数据由步骤3存储,并将这些数据放到它们所在的位置,从而回滚任何失败的事务.

我担心的一个问题是,如果某些服务器是从群集中分区的,会发生什么.我没有这方面的经验,我的计划是否有效?如果分区发生,它会起作用吗?



1> jbellis..:

您应该查看Cages:http://ria101.wordpress.com/2010/05/12/locking-and-transactions-over-cassandra-using-cages/

http://code.google.com/p/cages/

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有