我有一个 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 将为每个删除语句创建一个逻辑删除。但是,每个语句都会创建不同类型的墓碑。
1。从 mytable 中删除,其中 colA = '...' AND colB = '...' 且 timeCol = 111
将创建行级逻辑删除:
{
“ key ”:“00032e2e2e0000032e2e2e000008000000000000006f00”,
“元数据”:{
“删除信息”:{
“markedForDeleteAt”:1427461335167000,“localDeletionTime”:1427461335
}
},
“列”: []
}
行级逻辑删除将确保所有列都将被删除。
2。从 mytable 中删除,其中 colA = '...' AND colB = '...' and timeCol = 111 AND colC = '...'
创建一个列墓碑:
{
“ key ”:“00032e2e2e0000032e2e2e000008000000000000006f00”,
“列”:[[“...”,“...:!”,1427461572135000,“t”,1427461572]]
}
这只会删除已保存在此集群键下的值。
关于Cassandra 墓碑对多个查询与单个查询进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29299662/