TGViewer
Женя Янченко Женя Янченко @jane_yanchenko · 5.51K subscribers
Post #37 1.7K
SS-таблицы и LSM-деревья

В случае хэш-индекса пары ключ-значения лежат в файлах в порядке появления. Если мы будем хранить их с сортировкой по ключу, то мы получим SS-таблицу (sorted string table, SSTable).

Работа с индексом, основанным на SS-таблице, может быть организована следующим образом:

В оперативной памяти располагается сбалансированная структура данных, например, красно-чёрное дерево. Такое дерево само поддерживает хранение ключей в отсортированном виде. Поскольку оно расположено в памяти, то называется MemTable. При поступлении записи добавляем ее в MemTable.

Когда размер MemTable превышает определенное пороговое значение (обычно несколько мегабайт), записываем его на диск в виде файла SS-таблицы.

Для обслуживания запроса на чтение сначала пробуем найти ключ в MemTable, затем в последнем по времени сегменте на диске, затем в предпоследнем и т. д.

Время от времени запускаем в фоне процесс слияния и уплотнения, чтобы объединить файлы сегментов и отбросить перезаписанные или удаленные значения.

SS-таблица имеет три преимущества перед хэш-индексами:
1) Объединение сегментов выполняется просто и эффективно с помощью сортировки слиянием.

2) Чтобы найти в файле конкретный ключ, не нужно хранить индекс всех ключей в оперативной памяти. Можно использовать предыдущий ключ и просмотреть значения, начиная с него.

Пример на схеме к посту.

3) Поскольку для выполнения запроса на чтение необходимо просмотреть несколько пар «ключ — значение», можно сгруппировать эти записи в блок и сжать его. Каждая запись разреженного индекса в оперативной памяти будет указывать на начало сжатого блока.

Изначально эта индексная структура была описана под названием Log-Structured Merge-Tree. Важный момент, что в LSM допускается только дописывание данных в файлы и удаление устаревших файлов, а не обновление записанного файла.

Такой подход используется в key-value БД LevelDB, RocksDB, а также в Cassandra и HBase.

#кабанчик #сисдиз
  • 👍 11
  • 🔥 4
More from @jane_yanchenko
  1. Sep 25, 2026В прошлой жизни, когда я была менеджером проектов, одним из первых мест работы у меня был…
  2. Sep 23, 2026Куда пропало обращение - развязка В прошлом посте у нас загадочно пропало обращение 58122.…
  3. Sep 23, 2026Куда пропало обращение Однажды от руководителя техподдержки пришло письмо, суть которого с…
  4. Sep 21, 2026🔗 Подборка постов про Кафку Как обещала на стриме, собрала посты про Кафку в удобное огла…
  5. Sep 21, 2026🎞 Готова запись стрима про Кафку: https://youtu.be/2aRKsD-MWDA Большое спасибо всем, кто…
  6. Sep 16, 2026Сегодня стрим по Кафке в 19:00 Планируем не в формате доклада, а в формате вопрос-ответ, ч…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →