首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LightWeight在卡桑德拉的超越

LightWeight在卡桑德拉的超越
EN

Stack Overflow用户
提问于 2017-11-24 01:58:34
回答 1查看 1.2K关注 0票数 1

关于卡桑德拉的LightWeight超越,我有两个问题,

( 1)锁的级别(行)?列?桌子?将为以下两个查询提供级别锁定?

代码语言:javascript
复制
i) INSERT INTO user (user_id, user_name, user_phone, timestamp) VALUES(1,'uma', 9003934069, 4331312423232) IF EXISTS;
ii)  UPDATE user SET user_name = 'harry' where user_id=1 IF timestamp=4331312423232;

2)如果LWT提供了锁定机制,为什么我们需要在READ中设置串行一致性?我的意思是,如果任何有条件的更新正在进行,为什么我们需要在上面的串行一致性?

如果有人能对此做出回应,那就太好了。

谢谢你,哈利

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-24 05:32:00

IF NOT EXISTS 不提供锁机制, 是一个轻量级事务。

为了获得线性化的一致性,我们需要路由所有请求通过一个单一的主机。在像卡桑德拉这样的全分布式系统中,这一点就不那么明显了。

Cassandra使用paxos协议实现线性一致性。

- Paxos协商一致协议允许分布式系统使用基于仲裁的算法就提案达成一致,不需要主程序,并且不存在两阶段提交的问题。Paxos有四个阶段:准备/承诺、阅读/结果、提议/接受和提交/ack。

Cassandra在一个节点之间进行了四次往返,提出了一个轻量级事务和集群中任何需要的副本,以确保正确的执行,从而影响性能。

这听起来成本很高--也许太高了。这就是为什么Cassandra可以抛出超时异常。因此,将轻量级事务保留在绝对必要的情况下。

资料来源:c.html https://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47465360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档