Как устроен B-TREE индекс в базах данных

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 ธ.ค. 2024

ความคิดเห็น • 30

  • @ivangolang
    @ivangolang  4 หลายเดือนก่อน

    Записи реальных собесов и полезную инфу для подготовки можно найти на бусти boosty.to/vanyaio
    Тренажер по Go для подготовки к собесу: stepik.org/a/206788
    Задачи на горутины и каналы Go для собесов: stepik.org/a/207625

  • @exynos328
    @exynos328 9 หลายเดือนก่อน +2

    Спасибо большое за наглядные объяснения, как раз готовлюсь к собесу сейчас, очень помогаешь! :)

  • @sambalinski
    @sambalinski 2 หลายเดือนก่อน

    Это видео очень помогло разобраться почему индексы работают до первого неравенства и как они работают с составным индексом. Спасибо большое!!!

  • @КоньЛюдоед-ф6ф
    @КоньЛюдоед-ф6ф 9 หลายเดือนก่อน +2

    посмотрел фулл. спасибо за годноту

  • @reform3831
    @reform3831 3 หลายเดือนก่อน

    чел, ты гений!!!! Это самое шикарное что я видел.

  • @user-buser_eto_ja
    @user-buser_eto_ja 2 หลายเดือนก่อน

    Отличная просто информация - ОТЛИЧНАЯ!!!! Спасибо тебе!

  • @ПетрКоваленко-ж1я
    @ПетрКоваленко-ж1я หลายเดือนก่อน

    Отличное видео! спасибо Вам огромное за понятное объяснение!

  • @planchet2013
    @planchet2013 8 หลายเดือนก่อน

    Легенькая база, для того, чтобы понять основу - отлично. Спс

  • @yashkevich8164
    @yashkevich8164 9 หลายเดือนก่อน +8

    Б-Три индекс - это специальное сбалансированное отсортированное дерево, которое в отличие от большинства стандартных деревьев растет в ширь(на диске данные ближе друг к другу), а не в глубину. В общем для этого индекса дерево как бы свое специальное. Вот вкратце суть.

  • @dadagj728
    @dadagj728 9 หลายเดือนก่อน +5

    8:57 количество уровней - это не логарифм от количества листьев.
    количество уровней определяется коэффициентом ветвления (branching factor) - количеством дочерних узлов у одного узла, и равно «количество узлов/коэффициент».
    логарифм - это сложность для такого дерева, и это не логарифм по основанию 2, как мы привыкли думать о «логарифме», а логарифм по основанию «коэффициент», а если ещё точнее, то О(коэффициент*[логарифм(n) по основанию коэффициент])

    • @ivangolang
      @ivangolang  9 หลายเดือนก่อน

      Я не понимаю почему высота дерева, это то, что вы написали. В вики и прочих источниках вижу оценки высоты через логарифмы и число узлов. Ну а число узлов на самом деле грубо оценивается числом листьев, для O не принципиальный момент.

    • @krl4kk
      @krl4kk 9 หลายเดือนก่อน

      log - это сложность поиска по такому дереву.
      количество уровней b-tree - это не просто log

    • @ivangolang
      @ivangolang  9 หลายเดือนก่อน

      @@krl4kk сложность поиска разве не определяется числом уровней?

    • @krl4kk
      @krl4kk 9 หลายเดือนก่อน

      в моем понимании сложность поиска определяется количеством элементов и она равна logN, а высота logmN(m - степень ноды, количество элементов в одной ноде).
      если бы этого условия не было, то было обычное самобалансирующееся дерево и никаких плюшек для хранения на диске не было

    • @ivangolang
      @ivangolang  9 หลายเดือนก่อน +2

      Спасибо за комменты, давайте просто с итмошных вики-коспектов оставлю оценки
      B-дерево (англ. B-tree) - сильноветвящееся сбалансированное дерево поиска, позволяющее проводить поиск, добавление и удаление элементов за O(logn). B-дерево с n узлами имеет высоту O(logn)

  • @nikolaykozlov4888
    @nikolaykozlov4888 9 หลายเดือนก่อน

    Вань, привет! И всем - привет!

  • @krl4kk
    @krl4kk 9 หลายเดือนก่อน

    клевый видос, спасибо!
    не хватило объяснения зачем же вообще нужно b-tree, если есть обычные бинарые деревья. разница между дисковыми структурами и структурами для памяти. а также вставки и удаления, но тогда бы наверное затянулся бы))

    • @Max-wn2gd
      @Max-wn2gd 9 หลายเดือนก่อน

      Про разницу про структуры не понял. Бинарное дерево легко можно реализовать на основе массива и работать будет быстро

    • @ntvisigoth
      @ntvisigoth 9 หลายเดือนก่อน +5

      Обычное бинарное дерево состоит из узлов, в котором не более чем одного элемента. Так ведь?
      К примеру, есть узел со значением 7, а у него есть дочерние : левый со значением 3 и правый со значением 9.
      Когда нам удобно с этим работать? Тогда, когда это дерево находится в памяти.
      А зачем нужна нам БД, если она только и только в памяти хранит свое состояние? То есть нам нужна БД, которая отвечает букве D в акрониме ACID. Долговечность! За это свойство отвечает дисковое хранилище.
      А вот когда дерево , обычное, находится на диске, то мы получаем такую же скорость, как если бы оно находилось в памяти? Нет! Потому что позиционирование головки, чтение головки и др. это долго. Что тогда делать? Тогда надо сделать дерево медленно растущим в глубину, но при этом растущее в ширь.
      Именно по этой причине, каждый узел B-дерева резервирует место в узлах, чтоб уметь содержать более чем один элемент. Ведь тогда, мы можем уменьшить кол-во операций по позиционированию головок, ведь элементы в узле отсортированы.
      Рекомендую к прочтению:
      - Рогова "Postgres Internals 15"
      - или статью habr.com/ru/articles/783012/ "Почему B-деревья быстрые?"

  • @whydidnotidothatearlier
    @whydidnotidothatearlier 4 หลายเดือนก่อน

    крутой видос, спасибо

  • @НиколайБардаков-б5щ
    @НиколайБардаков-б5щ 19 วันที่ผ่านมา

    а разве оптимизатор не может сам расположить условия равенства впереди, чтобы использовался индекс? Это к запросу где age >= 44...

  • @vova_dev
    @vova_dev 8 หลายเดือนก่อน

    Спасибо!

  • @sashas.3323
    @sashas.3323 9 หลายเดือนก่อน

    о , у меня такое как то на собесе спрашивали , я ответил , что-то вроде того , что поиск происходит как при бинарном поиске

    • @AndreyZharkikh
      @AndreyZharkikh 2 หลายเดือนก่อน

      Бинарный поиск - ваще не то же. )))) Бинарный поиск - это в массиве за O(log2(N)) делением пополам.

  • @abcdefghi1489
    @abcdefghi1489 3 หลายเดือนก่อน

    Не знал, что шиша из топ дог шарит за индексы😂

  • @ИванИванов-я5э9к
    @ИванИванов-я5э9к 4 หลายเดือนก่อน

    Огромное спасибо! Жаль что ты не шарпист. Подписался бы на бусти тогда.

  • @DJcRuT000
    @DJcRuT000 4 หลายเดือนก่อน

    Видос заебись, но с качеством проблемы, оч плохо видно на 17 минуте, пили хотя бы в FHD

  • @Hairy89pro
    @Hairy89pro 9 หลายเดือนก่อน

    Найс!

  • @АртемАстапов-ц3м
    @АртемАстапов-ц3м 9 หลายเดือนก่อน

    B это balanced