Выровненное уплотнение работает в Scylla очень похоже на то, как оно работает в Cassandra и Rocksdb (с некоторыми небольшими отличиями). Если вам нужен краткий обзор того, как работает выравнивание с уплотнением в Scylla и почему, я предлагаю вам прочитать мой пост в блоге https://www.scylladb.com/2018/01/31/compaction-series-leveled-compaction/.
Ваш конкретный c вопрос о том, почему два уровня (L0 недавно очищенных sstables, Ln sstables диапазона непересекающихся диапазонов) недостаточно - очень хороший вопрос:
Основная проблема заключается в том, что один очищенный memtable (sstable в L0), содержащий случайную коллекцию пишет, часто будет пересекать все sstables в Ln. Это означает, что необходимо переписывать всю базу данных каждый раз, когда появляется новая записываемая таблица, и в результате получается огромное усиление записи, что совершенно неприемлемо.
Один из способов значительно уменьшить это усиление записи (но, возможно, нет). достаточно) ввести каскад промежуточных уровней L0, L1, ..., Ln. Конечным результатом является то, что у нас есть L (n-1), который составляет 1/10 (скажем) размера Ln, и мы объединяем L (n-1) - ни одного sstable - в Ln. Это тот подход, который используется в выровненной стратегии сжатия (LCS) во всех упомянутых вами системах.
Совершенно другой подход может заключаться не в объединении одного sstable в Ln, а в попытке сначала собрать большой объем данных. и только затем объединить его в Ln. Мы не можем просто собрать 1000 таблиц в L0, потому что это сделает чтение очень медленным. Скорее, чтобы собрать этот большой объем данных, можно использовать многоуровневое сжатие (STCS) внутри L0. Другими словами, этот подход представляет собой «смесь» STCS и LCS с двумя «уровнями»: L0 использует STCS на новых sstables, Ln содержит серию sstables (sstables с непересекающимися диапазонами). Когда L0 достигает 1/10 (скажем) размера Ln, L0 уплотняется до Ln. Такой смешанный подход может иметь более низкое усиление записи, чем LCS, но, поскольку большая часть данных выполняется в Ln, он будет иметь такое же малое пространство и усиление чтения, что и в LCS. Насколько мне известно, ни одна из упомянутых баз данных (Scylla, Cassandra или Rocksdb) не поддерживает такое «смешанное» уплотнение.