Тёмный

Какие бывают индексы | ХЭШ-ИНДЕКС, SSTABLES, LSM-TREE, B-TREE 

Сашка Программирует
Подписаться 925
Просмотров 9 тыс.
50% 1

Рассматриваем разные типы индексов и для чего они нужны. На примере простейшей базы данных разбираемся с причиной использования индексов. Рассматриваем достоинства и недостатки хэш-индекса. Рассматриваем алгоритм уплотнения. Учимся использовать SSTables и строить LSM-деревья. Рассматриваем B-Tree для того, чтобы хранить индекс в файловой системе.
0:12 - Для чего придумали индексы
1:06 - Хэш индексы
2:12 - Недостатки хэш индекса
3:05 - Устранение недостатков (подходим к SSTable)
4:19 - SSTable
5:10 - Как поддерживать SSTable в памяти (Memtable)
6:05 - Работа со сбоями в SSTables (подходим к )
6:21 - LSM Tree
6:55 - Недостатки LSM Tree
7:25 - BTree
7:36 - Что означает буква B
8:02 - Сходства и различия B tree и LSM
8:40 - Как хранится B Tree в памяти
10:02 - Что делать если страница закончилась?
10:25 - Обеспечение надёжности BTree (WAL)
11:20 - Оптимизация BTree
#индексы #хэш #sstables #btree #lsmtree #compaction #уплотнение

Опубликовано:

 

5 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 18   
@protagorasfromabdera8653
@protagorasfromabdera8653 2 года назад
Спасибо, хорошее видео. Про фильтры Блума было бы очень интересно посмотреть.
@Belarus1990
@Belarus1990 3 года назад
Прочитал высоконагруженные приложения Клеппманна явно))
@SashkaProgrammiruet
@SashkaProgrammiruet 2 года назад
Да, тут просто постарался более простым языком и более быстро/сжато изложить это, чтоб не перечитывать каждый раз перед забегами по собеседованиям)
@Влад-Донцов
@Влад-Донцов 2 года назад
Да-да тут кажется все из этой книги берут знания, интересно есть другие более глубокие источники ?
@kobronahnah7896
@kobronahnah7896 4 года назад
Расскажи про красно-чёрные деревья
@nikolay6700
@nikolay6700 4 года назад
Log для LSM и WAL для B-Tree это ведь по факту одно и тоже в том смысле, что все операции над деревом попадают в этот лог. Разницы нет
@SashkaProgrammiruet
@SashkaProgrammiruet 3 года назад
Да, Вы правы, хотел рассказать для чего это нужно и как этим пользуются в обоих случаях и, в целом, рассказать про эту концепцию. WAL или там всякие подобные логи это не только про индексы, концепция "сначала пишем в логи - потом пишем в " это прям через все айти идет. На примере индексов это, мне кажется, просто наиболее понятно
@gijduvon6379
@gijduvon6379 4 года назад
Все-таки как хранятся данные в самом файле БД? Неотсортированными? И еще, после уплотнения нам ведь нужно обновить ссылки, которые лежат в индексах, так? Как это происходит?
@SashkaProgrammiruet
@SashkaProgrammiruet 3 года назад
После уплотнения у нас остается одна наиболее релевантная ссылка. Процесс уплотнения это что-то вроде гарбэдж коллектора (если прям совсем просто), то есть мы просто избавляемся от ненужных данных, которые у нас все еще хранятся
@gijduvon6379
@gijduvon6379 3 года назад
@@SashkaProgrammiruet "остаётся" - это же значит, что мы удаляем старые и создаем новую?
@SashkaProgrammiruet
@SashkaProgrammiruet 3 года назад
@@gijduvon6379 Нет, новую нам не нужно создавать Смотрите, у нас сначала все идет в Memtable, как только она разрослась до слишком больших размеров - все что лежит в ней флашится в виде файла SSTable на диск - этот файл становится последним сегментом в БД. Далее, когда к нам приходит запрос, мы ищем в мемтейбл, потом в последнем, потом в предпоследнем и тд. Так вот, иногда у нас получается так, что например в последнем сегменте лежит "qweasd": "1234", а в предпоследнем - "qweasd":"8697", то есть 8697 - устаревшие данные. Так вот, время от времени мы запускаем в фоне процесс уплотнения который объединяет сегменты засчет удаления устаревших и продублированных данных. Это если на уровне концепции. Если прям вот детальная реализация, то есть статья про то, как это реализовано например в касандре: www.diva-portal.org/smash/get/diva2:946772/FULLTEXT02.pdf Если вдруг ссылка не отображается (я просто не знаю какие правила отображения ссылок и где настраивать), то можно по запросу "Compaction strategies in Apache Cassandra" найти
@gijduvon6379
@gijduvon6379 3 года назад
@@SashkaProgrammiruet спасибо за развернутый ответ. Это да, понятно. Для меня не совсем ясным тут остаётся вопрос именно индексов для sstables. 1 - где они хранятся (ну тут по идее ответ должен быть простой - некий отдельный от сегмента файлик с записями в виде ключ значение, где ключ соответствует ключу в sstable, а значение - смещение в этом файле, при чем индекс разреженный) 2. И если так, то получается, что при compaction эти индексные файлы должны переписываться, удалятся или пересоздаваться, так как никуда не уйти от того, что смещения после сжатия становятся неактуальны.
@streetlifemoodvideos3769
@streetlifemoodvideos3769 3 года назад
Очень тихо!
@romul23
@romul23 2 года назад
Очень плохой звук
@SashkaProgrammiruet
@SashkaProgrammiruet 2 года назад
Есть такой момент, в следующих видео научился в DaVinci корректировать его))
@ЯщикПочтовый-ш4х
@ЯщикПочтовый-ш4х 8 месяцев назад
Никакой конкретики, к сожалению. Бесполезное видео
@SashkaProgrammiruet
@SashkaProgrammiruet 8 месяцев назад
Какую конкретику Вы ожидали здесь услышать?
@ЯщикПочтовый-ш4х
@ЯщикПочтовый-ш4х 8 месяцев назад
Да обычную, по делу. Например, как происходит уплотнение сегментов? Записи выкидываются или объединяются или там битовая карта или ещё какой приём. С примерами, естественно.
Далее
Базы данных LSM tree
17:01
Просмотров 13 тыс.
This mother's baby is too unreliable.
00:13
Просмотров 19 млн
Пчёлы некроманты.
00:46
Просмотров 26 тыс.
The Secret Sauce Behind NoSQL: LSM Tree
7:35
Просмотров 204 тыс.
This mother's baby is too unreliable.
00:13
Просмотров 19 млн