Деревья Меркля генерируются из одного SSTable?
Когда Cassandra выполняет проверку целостности данных, она выполняет проверку достоверности, но что это означает точно? Насколько я понимаю, он создает один SSTable, который будет временно храниться (до завершения восстановления), а затем генерирует деревья Merkle из этого единственного созданного SSTable. Если какой-либо из листьев дерева Merkle не проходит проверку, то разделы, используемые для создания этого листа (из таблицы SST, созданной во время сжатия проверки), будут переданы на другой узел. Тем не менее, друг сказал мне, что деревья Merkle генерируются из каждого (ранее существующего) SSTable.
Итак, сколько деревьев Merkle генерируется, одно или столько же, сколько SSTables?
1 ответ
Валидация проверки выполняет итерацию по всем sstables, включенным в диапазон, для построения дерева меркла. На самом деле он не пишет новый sstable, но интерфейсы уплотнения выполняют задачу того же типа (перебирая данные), поэтому его можно использовать повторно. Менеджер уплотнения также используется для очистки, перестройки вторичного индекса, построения MV, очистки и проверки процессов.
Создается одно дерево меркла. Каждый его узел представляет собой хэш всех данных в диапазоне токенов, каждый дочерний узел - половина его диапазона токенов. Глубина дерева является динамической, в идеале лист представляет 1 раздел каждый, но в конечном итоге он может представлять гораздо больше, если корневой узел представляет широкий диапазон, содержащий много разделов. Поскольку глубина дерева меркле ограничена до 20 (иначе оно будет слишком большим и приведет к возникновению проблем при переносе), как правило, вы не хотите восстанавливать диапазон, в котором имеется более 2^20 или 1 миллиона разделов. Можно использовать getsplits или таблицу size_estimates, чтобы определить это при выборе способа разделения диапазона для восстановления поддиапазона.
Стоит отметить, что восстановление может инициировать множество дополнительных ремонтов, каждый из которых будет иметь свою собственную проверку правильности уплотнения / дерева меркли / сеанса потоковой передачи.