Kompaktowanie (compaction)
Proces w tle w drzewie LSM, który scala kilka SSTable w mniej plików, usuwa przesłonięte stare wersje i fizycznie kasuje tombstony. Kluczowy dla utrzymania wydajności odczytu i zajętości dysku.
Po co: skoro SSTable są niezmienne i tylko dopisywane, z czasem gromadzi się wiele plików, w których ten sam klucz występuje w kilku wersjach. Kompaktowanie czyta je razem, zachowuje najnowszą wartość, odrzuca stare i tombstony, po czym zapisuje mniej, czystszych SSTable. Strategie: leveled compaction (RocksDB — niska amplifikacja przestrzeni i odczytu, wysoka amplifikacja zapisu), tiered/size-tiered (Cassandra — odwrotnie) oraz universal. Kompromis bezpośrednio wyznacza równowagę RUM (amplifikacja odczytu/zapisu/przestrzeni). Kompaktowanie jest kosztowne (I/O + CPU), a jego moment i kontrola to centralne zagadnienie strojenia; złe kompaktowanie powoduje skoki opóźnień. Serce tego, jak bazy LSM pozostają zdrowe. Powiązane z SSTable i amplifikacją zapisu.