Надгробия Кассандры подсчитывают несколько запросов по сравнению с одним запросом

У меня есть определение таблицы 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 = '...'

Однако 2-й запрос необходимо выполнить для каждого значения последнего столбца colC, а 1-й запрос обеспечивает удаление за одно выполнение.

Будет ли Кассандра создавать одинаковое количество надгробий в обоих случаях?


person RRM    schedule 27.03.2015    source источник
comment
Есть ли инструмент, с помощью которого я мог бы проверять надгробия, созданные в Cassandra? Это могло бы помочь ответить на мой вопрос очень легко.   -  person RRM    schedule 27.03.2015
comment
Вы можете использовать следующий инструмент для проверки ваших sstables (возможно, вам также придется использовать nodetool flush): datastax.com/documentation/cassandra/2.0/cassandra/tools/   -  person Stefan Podkowinski    schedule 27.03.2015


Ответы (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]] }

Это удалит только те значения, которые были сохранены под этим ключом кластеризации.

person Stefan Podkowinski    schedule 27.03.2015
comment
Для комбинации colA, colB, timeCol, т.е. [a,b, 1111], у меня есть 4 значения colC. Итак, данные выглядят следующим образом: colA | колонка | времяКол | colC ---------------------------------- а | б | 111 | с1, а | б | 111 | с2, а | б | 111 | с3, а | б | 111 | c4 ----- Удалить, используя только первые 3 столбца {.. где colA = 'a' и colB = 'b' и timeCol = 111} ------ Удалить, используя все 4 столбца {... где colA = 'a' и colB = 'b' и timeCol = 111 и colC = 'c1' } и запустите его 4 раза с разными значениями colC. Вы говорите, что нет. надгробий будет 4 во 2-м наборе запросов и только 1 надгробие в 1-м запросе? - person RRM; 28.03.2015
comment
Да, вы получаете надгробную плиту для каждого значения colC. - person Stefan Podkowinski; 28.03.2015