Удалить ключ строки из Cassandra Cli

Я установил семейство столбцов gcgraceseconds на 0; но кадры rowkey не удаляются, они остаются в моем семействе столбцов

create column family workInfo123
with column_type = 'Standard'
  and comparator = 'UTF8Type'
  and default_validation_class = 'UTF8Type'
  and key_validation_class = 'UTF8Type'
  and read_repair_chance = 0.1
  and dclocal_read_repair_chance = 0.0
  and populate_io_cache_on_flush = true
  and gc_grace = 0 
  and min_compaction_threshold = 4
  and max_compaction_threshold = 32
  and replicate_on_write = true
  and compaction_strategy = 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'
  and caching = 'KEYS_ONLY'
  and default_time_to_live = 0
  and speculative_retry = 'NONE'
  and compression_options = {'sstable_compression' : 'org.apache.cassandra.io.compress.LZ4Compressor'}
  and index_interval = 128;

смотри ниже вид на

[default@winoriatest] list workInfo123;
Using default limit of 100
Using default cell limit of 100
-------------------
RowKey: a
-------------------
RowKey: xx

2 Rows Returned.
Elapsed time: 17 msec(s).

я использую Cassandra -Cli если я должен изменить что-либо еще

ОБНОВИТЬ:-

после использования ./nodetool -host 127.0.0.1 compact

[default@winoriatest] list workInfo123;
Using default limit of 100
Using default cell limit of 100
-------------------
RowKey: xx

2 Rows Returned.
Elapsed time: 11 msec(s).

Зачем xx остается??

2 ответа

Решение

Когда вы удаляете строку в Cassandra, она не удаляется сразу. Вместо этого он отмечен надгробием. В результате вы все равно получите результат для ключа, но столбцы не будут доставлены. Надгробие требуется, потому что

  1. Файлы данных Cassandra становятся доступными только для чтения, как только они "заполнены"; надгробная плита добавлена ​​в текущий открытый файл данных, содержащий удаленную строку.
  2. Вы должны дать кластеру возможность распространить удаление на все узлы, содержащие копию строки.

Для удаления строки и надгробной плиты требуется уплотнение. Этот процесс реорганизует файлы данных и, в то же время, удаляет удаленные строки. То есть, если GC льготный период захоронения был достигнут. Для одноузловых (!) Кластеров можно установить льготный период равным 0, поскольку удаление не нужно распространять на какой-либо другой узел (который может быть недоступен в тот момент, когда вы произвели удаление).

Если вы хотите принудительно удалить удаленные строки, вы можете запустить очистку (синхронизацию памяти с файлами данных) и значительное сжатие с помощью утилиты nodetool. Например

./nodetool flush your_key_space the_column_family && ./nodetool compact your_key_space the_column_family

После того, как уплотнение завершено, удаленные строки должны действительно исчезнуть.

Льготный период GC по умолчанию составляет десять дней (означает 846000 секунд), чтобы немедленно удалить ключ строки

UPDATE COLUMN FAMILY column_family_name with GC_GRACE= 0;

выполните приведенный выше запрос cli, следуя инструкциям по очистке и сжатию nodetool.

Другие вопросы по тегам