Недавно я изучал Кассандру с точки зрения нашего нового проекта и многому научился у этого сообщества и его вики. Но я ничего не нашел о том, как управлять обновлениями в Cassandra с точки зрения управления физическим дисковым пространством, хотя, похоже, это очень похоже на управление удалением записей с помощью сжатия.
Предположим, что есть 100 записей с 5 значениями столбцов в каждой, поэтому, когда все изменения будут сброшены на диск, все записи будут записаны смежно, а когда операция удаления будет выполнена, она сначала будет отмечена в таблице памяти, а физическая запись будет удалена через некоторое время, как установлено в конфигурации или когда его полный. И процесс уплотнения требует места.
Теперь вопрос заключается в том, что с одной стороны, если схема меньше, в начале нет фиксированного числа столбцов, а с другой стороны, когда происходит процесс сжатия, тогда ... он помещает записи рядом на диск, как традиционные СУБД, чтобы ускорить Процесс чтения, как и для СУБД, прост, потому что они должны выделять фиксированный объем пространства в соответствии с объявлением типа данных столбцов.
Но как Cassandra точно размещает записи на диске в процессе сжатия (как для обновления, так и для удаления), чтобы ускорить чтение?
Еще один вопрос, связанный с уплотнением, заключается в том, что когда нет запросов на удаление, но существует запрос на обновление, который обновляет существующую запись с некоторыми данными переменной длины или вставляет новый столбец, то каким образом сжатие делает свое пространство доступным на диске между уже существующие строки данных?