当前位置: 首页 > 知识库问答 >
问题:

带有DataStax驱动程序的Cassandra行级锁定支持

濮阳赞
2023-03-14

Cassandra行级别锁定支持,同时由并发用户访问同一行

我们正处于shooping cart应用程序的设计阶段,考虑将Cassandra作为库存数据库。现在的要求是,如果多个用户同时访问库存数据库中的同一产品行。例如:-产品表:productID ProductQuantity 1000 1如果第一个用户选择产品“1000”并在购物车中将产品数量添加为“1”,则访问同一产品的其他用户应该无法选择此产品,直到第一个用户免费使用(更新后的产品数量为0)。那么cassandra是否为这种场景提供了行级锁定支持呢

共有3个答案

仇龙光
2023-03-14

Cassandra支持多个用户,但没有对其锁定任何行,实际上它使用时间戳对最新更新进行加密,然后共享给其他节点。

华欣荣
2023-03-14

现在LWT已经在c中提供了,用一些更新的信息来恢复这个旧线程*

在Cassandra中实现锁已被考虑并决定反对。你可以在这个Jira中看到历史、对话和最终解决方案--

https://issues.apache.org/jira/browse/CASSANDRA-5062.

总之,1)有一些外部选项允许对卡桑德拉(即赫克托和其他人)进行锁定,但这些都是次优解决方案。2) 它没有实现c*锁(这意味着zookeeper集成引入了单点故障),而是决定构建cassandra自己的Paxos实现,该实现自c*2.0以来一直作为轻量级事务公开,目前在DSE中。

在这个视频中,你可以看到一家大银行是如何在C*中使用LWT的

https://www.youtube.com/watch?v=-sD3x8-tuDU

1) 根据定义,LWT比Cassandra中的常规insert/update语句要慢,并且设计用于少数用例。1%的工作量。

2) LWT只能在分区内工作。跨分区插入不会阻止LWT。

柴阳云
2023-03-14

>

Cassandra 2.0将引入一种轻量级事务

在2.0版本中,还将支持CAS操作。基本上,这将允许您模拟行级锁(更新行iif条件)

虽然我不确定自己是否完全理解您试图解决的问题,但我认为您正在寻找的是一致的计数器。这些都已经支持了一段时间。

 类似资料:
  • 我正在使用php的Datastax Cassandra驱动程序,希望能够检查是否查询失败,在数据库中没有找到结果。现在,如果查询失败,日志报告如下 如果查询成功,它将返回预期的数据。下面是函数 根据发布的建议,我最后做了以下几点 谢谢你的建议

  • 我被datastax cassandra驱动程序卡住了,它抛出了这个错误: 我已经用gradle导入了库,我看到org.slf4j: slf4j-api: 1.7.5在“外部库”树中(我正在使用Intellij IDEA)。 你有办法解决这个问题吗?我发现这个帖子接近我的问题(NoClassDefFoundError-datastax Java driver for Cassandra),但没有人

  • 我试图理解Datastax Cassandra驱动程序中的连池,因此我可以更好地在我的Web服务中使用它。 我有留档的1.0版。它说: Java驱动程序异步使用连接,因此可以在同一个连接上同时提交多个请求。 他们通过连接理解什么?当连接到集群时,我们有:一个生成器、一个集群和一个会话。他们中的哪一个是连接? 例如,有一个参数: MaxSimultaneousRecestsPerConnection

  • 什么C#类型等同于Datastax Cassandra C#驱动程序中的timeuuid?

  • 我想得到一些关于批处理语句执行的澄清。 我在批处理中为不同的表添加了许多insert/update语句。当我执行批处理时,我希望如果任何一个查询失败,所有其他插入/更新都不会成功。但这并没有发生。我可以看到部分更新/插入。 我怎样才能实现这一点?[如果任何一个查询失败,该批的所有更新/插入都不应发生。] 如何获取/打印导致批处理执行失败的确切问题查询? 已记录批处理语句的用途是什么? http:/

  • DataStax驱动程序Cassandra版本:3.3.2 Scala版本:2.12.4 我正在为Cassandra的datastax java驱动程序中的mappingmanager创建一个scala包装器。 null 为什么它总是从Scala.Collection.Mutable.ArrayBuffer“转换”?解决这个问题的方法是什么?