Как правильно настроить CD C в Кассандре - PullRequest
1 голос
/ 29 января 2020

Версия Cassandra: 3.11

Я уже включил cd c в cassandra.yaml:

cdc_enabled: true
cdc_raw_directory: /var/lib/cassandra/data/cdc_raw

И также активировал таблицу:

cqlsh> describe cycling.cyclist_name;

CREATE TABLE cycling.cyclist_name (
    id uuid PRIMARY KEY,
    firstname text,
    lastname text
) WITH bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND cdc = true    <<<<<<<<<
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE';

После перезапуска Кассандра создала каталог cdc_raw:

root@docker-desktop:/var/lib/cassandra# ls -la /var/lib/cassandra/data/
total 36
drwxr-xr-x  9 cassandra cassandra 4096 Jan 28 10:04 .
drwxrwxrwx  6 cassandra cassandra 4096 Jan 28 09:48 ..
drwxr-xr-x  2 cassandra cassandra 4096 Jan 28 09:48 cdc_raw
drwxr-xr-x  3 cassandra cassandra 4096 Jan 28 10:04 cycling
drwxr-xr-x 26 cassandra cassandra 4096 Jan 28 09:48 system
drwxr-xr-x  6 cassandra cassandra 4096 Jan 28 09:48 system_auth
drwxr-xr-x  5 cassandra cassandra 4096 Jan 28 09:48 system_distributed
drwxr-xr-x 12 cassandra cassandra 4096 Jan 28 09:48 system_schema
drwxr-xr-x  4 cassandra cassandra 4096 Jan 28 09:48 system_traces

Я выполнил небольшой сценарий Python, чтобы вставить некоторые данные в таблицу fre sh:

>>> for lp in range(50000):
...     session.execute("INSERT INTO cycling.cyclist_name (lastname, firstname, id) VALUES (%s, %s, %s)", ["RATTO_BULK", "Rissella", uuid.uuid4()])
...

Но даже после этого 50 000 скриптов вставки директория cdc_raw все еще пуста. Может кто-нибудь объяснить, как CD C работает в Кассандре?

root@docker-desktop:/var/lib/cassandra# ls -la /var/lib/cassandra/data/cdc_raw/
total 8
drwxr-xr-x 2 cassandra cassandra 4096 Jan 28 09:48 .
drwxr-xr-x 9 cassandra cassandra 4096 Jan 28 10:04 ..

1 Ответ

0 голосов
/ 29 января 2020

В Cassandra 3.11 сегменты commitlog копируются в каталог cdc_raw, когда данные из memtable по какой-либо причине записываются на диск - достигают предела memtable, предела журнала коммитов или nodetool flush. 50 000 записей может быть недостаточно, чтобы вызвать эту ситуацию.

В Cassandra 4.0 (еще не выпущенной) ситуация немного улучшилась, и вы можете читать данные быстрее. Если вас интересуют подробности, вы можете ознакомиться с презентациями, сделанными на DataStax Accelerate 2019 - было 2 или 3 презентации о CD C.

...