Где находится Memtable в Кассандре? - PullRequest
0 голосов
/ 06 сентября 2018

В DataStax упоминается, что в Cassandra существует один memtable для каждого семейства столбцов.

Предположим, у меня есть кластер Cassandra с 2 узлами с RF = 2. Теперь, если один из узлов выходит из строя, тогда существует другой узел, из которого мы можем извлечь данные. Но возможно, что, скажем, в моем кластере отказывает узел 1, тогда узел 2 обрабатывает запросы на получение данных, и через некоторое время узел 1 работает, а узел 2 дает сбой, тогда именно узел 1 обрабатывает запрос.

Так где же мембель находится в кластере? Если он находится в узле, то утверждение о том, что в каждом семействе столбцов есть только одна memtable, неверно.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Для более подробной информации вы должны посмотреть путь записи Cassandra. Memtable - это структура памяти, основанная на одном CF. Когда данные записываются в Cassandra, они сначала записываются в commitLog, затем в memtable, а затем записываются на диск (sstable)

Подробнее ЗДЕСЬ

0 голосов
/ 06 сентября 2018

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

Memtables периодически сбрасываются в новые sstables, которые объединяются с memtable для чтения. Коммитлог обеспечивает долговечность памятки до тех пор, пока она не будет очищена.

При чтении выполняется задание координаторов объединять данные из разных реплик в зависимости от запрошенного уровня согласованности. Если ваш CL охватывает как узел 1, так и узел 2, координатор разрешит отсутствующие данные. Когда узел 1 или узел 2 выходят из строя или мутация к ним отбрасывается, координатор сохранит мутацию в подсказке, которая будет доставлена ​​при возврате. Если все, что не удалось, анти-энтропийный ремонт исправит любые несоответствия при запуске.

...