【问题标题】:Cassandra tombstones count multiple queries vs single queryCassandra 墓碑计算多个查询与单个查询
【发布时间】:2015-05-31 17:18:04
【问题描述】:

我有一个 cassandra 表定义如下

CREATE TABLE mytable
(
  colA text,
  colB text,
  timeCol timestamp,
  colC text,
  PRIMARY KEY ((colA, colB, timeCol), colC)
) WITH....

我想知道墓碑的数量是否会因以下类型的查询而异:

1. delete from mytable where colA = '...' AND colB = '...' and timeCol = 111

以上查询影响多条记录,(colC的多个值)

2. delete from mytable where colA = '...' AND colB = '...' and timeCol = 111 AND colC = '...'

但是,需要对最后一列colC 的每个值执行第二个查询,而第一个查询在一次执行中负责删除

Cassandra 会在这两种情况下创建相同数量的墓碑吗?

【问题讨论】:

标签: cassandra cql cassandra-2.0 cql3


【解决方案1】:

Cassandra 将为每个删除语句创建一个墓碑。但是,每个语句都会创建不同类型的墓碑。

1. delete from mytable where colA = '...' AND colB = '...' and timeCol = 111

将创建行级墓碑:

{ "key": "00032e2e2e0000032e2e2e000008000000000000006f00", "metadata": { "deletionInfo": { "markedForDeleteAt":1427461335167000,"localDeletionTime":1427461335 } }, "columns": [] }

行级墓碑将确保所有列都将被删除。

2. delete from mytable where colA = '...' AND colB = '...' and timeCol = 111 AND colC = '...'

创建一个列墓碑:

{ "key": "00032e2e2e0000032e2e2e000008000000000000006f00", "columns": [["...","...:!",1427461572135000,"t",1427461572]] }

这只会删除已保存在此集群键下的值。

【讨论】:

  • 对于 colA、colB、timeCol 的组合,即 [a,b, 1111] ,我有 4 个 colC 值。所以,数据如下: colA |科尔B |时间坐标 | colC ---------------------------------- a |乙 | 111 | c1, 一个 |乙 | 111 | c2, 一个 |乙 | 111 | c3, 一个 |乙 | 111 | c4 ----- 仅使用前 3 列删除 {.. where colA = 'a' and colB = 'b' and timeCol = 111} ------ 使用所有 4 列删除 {...where colA = 'a' and colB = 'b' and timeCol = 111 and colC = 'c1' } 并以不同的 colC 值运行 4 次。你说不是吗。墓碑的数量在第二个查询集中将是 4 个,而在第一个查询中只有 1 个墓碑?
  • 是的,colC 的每个值都有一个墓碑。
猜你喜欢
  • 2017-08-22
  • 1970-01-01
  • 2019-11-30
  • 2023-03-08
  • 2019-11-18
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
相关资源
最近更新 更多