Дерева. Пошук. Алгоритми. Бази даних

Поделиться
HTML-код
  • Опубликовано: 6 июн 2024
  • Це відео є підготовчим до більш глибокого занурення в бази даних.
    Спробував відповісти на наступні питання:
    ✅Що таке індекс в базі даних?
    ✅Чим відрізняються різні типи дерев?
    ✅Чому пошук по BST може бути повільним?
    ✅Чому бази даних не використовують бінарний пошук?
    ✅B-дерево проти B+ дерева
    ✅Індекси Postgres, MySQL
    Станьте спонсором цього каналу: / @aboutprogramming
    Допоможіть каналу розвиватися й отримуйте доступ до ексклюзивного контенту.
    Зміст відео:
    0:00 - Вступ
    0:42 - Що таке індекси?
    4:00 - Бінарне дерево
    6:10 - Чому може бути O(n)?
    7:05 - Збалансоване дерево
    7:38 - AVL Tree та RB Tree
    8:51 - B-Tree проти BST
    12:27 - B+ Tree
    14:35 - Анонс контенту
    🏠 Мої соцмережі:
    Жабаскрипт в телеграмі - t.me/jabascript
    Я в Твітер - / viktorturskyi
    Мій Linkedin - / turskyi
    #програмування #українською #programming #javascript #database #mysql #алгоритми

Комментарии • 71

  • @AboutProgramming
    @AboutProgramming  Год назад +22

    Вже всі підготовчі відео для головного виклав. В наступний раз має бути круте продовження 😎

  • @Ya_Kor
    @Ya_Kor 5 месяцев назад +2

    Мій випадковий вибір, з чого почати знайомство з каналом виявився не випадковим)
    На лекції по структурах даних якраз освітили все, крім B-Tree.
    Дякую за чудове та лаконічне пояснення.
    Пішов досліджувати решту контенту)

  • @BorysPratsiuk
    @BorysPratsiuk 4 месяца назад +1

    Окреме дякую за україномовний контент!!!

  • @AdminAdmin-sl2qf
    @AdminAdmin-sl2qf 3 месяца назад +1

    ❤❤❤❤❤❤❤❤❤❤❤

  • @v.ilchenko
    @v.ilchenko Год назад +1

    Аж ностальгія пробрала. Згадав як ми вчились балансувати ці дерева після роботи 🤓

  • @user-si4sv1sv9b
    @user-si4sv1sv9b 6 месяцев назад

    Дякую

  • @malds.0629
    @malds.0629 Год назад +3

    Дуже круте відео! Дякую за україномовниий контент!

  • @rickbacker1
    @rickbacker1 8 месяцев назад

    Дуже круте відео, стало ясніше як цей індекс працює в середині!
    Дякую Вам!

  • @oleksiiderkach4840
    @oleksiiderkach4840 6 месяцев назад

    Дякую за відео!

  • @user-ux8yp3si4d
    @user-ux8yp3si4d Год назад +1

    Дуже корисно, нещодавно сам намагався розібратися с BRT, чекаю нові відео 🦾

  • @kyivarcan
    @kyivarcan 11 месяцев назад +3

    Дуже дякую за інформацію, зрозуміла та наглядна подача, будь-ласка, продовжуй далі, по базам данних такого контенту дуже мало (особливо україномовного)

  • @sstage44
    @sstage44 Год назад +2

    Крутий контент! Дуже цікаво слухати. Особливо знаючи величезний досвід автора)

  • @Roman-oi9el
    @Roman-oi9el 7 месяцев назад

    Готовий до наступного відео :)

  • @lilysea688
    @lilysea688 Год назад +2

    Дякую! Дуже корисно і дуже зрозуміле пояснення👌

  • @MyHor
    @MyHor 8 месяцев назад

    Круто, дуже круто.

  • @mshkotnyar
    @mshkotnyar 9 месяцев назад

    Просто топовий канал. Частину знав, частина для мене нове. Дуже круто, дуже

  • @nztzn
    @nztzn Год назад +4

    Дуже крутий україномовний контент. Успіхів у розвитку!

  • @romanyukartem757
    @romanyukartem757 9 месяцев назад

    Все доволі доступно, супер, дякую.
    Цікавим б також було б відео із додаванням індекса на високо-навантажену (на запис) та велику таблицю в базі данихю

  • @oksanakhortytsia
    @oksanakhortytsia Год назад +1

    Дякую! Дуже корисно і по справі!

  • @denyspapushaiev5604
    @denyspapushaiev5604 9 месяцев назад

    топовий український контент. щиро дякую!

  • @atsybulsky
    @atsybulsky Год назад +1

    Толковий відос, дякую :) Коротко та ясно.

  • @romkalily
    @romkalily Год назад

    Але то красава!!!!!
    Самий крутий український контент який я зараз дивлюсь!!

  • @andriishymkiv6364
    @andriishymkiv6364 Год назад +2

    лайк не дивлячись)

  • @pavel7930
    @pavel7930 Год назад

    Круто! Дякую!

  • @RomanTsyupryk
    @RomanTsyupryk 9 месяцев назад

    Велике дякую вам за це відео.

  • @TheKidomaz
    @TheKidomaz Год назад +1

    Дуже круто і головне зрозуміло, підписався)

  • @artemtrush
    @artemtrush Год назад +1

    Супер ✨

  • @BG-cg2op
    @BG-cg2op Год назад

    Awesome!

  • @dmytrofiialo4818
    @dmytrofiialo4818 Год назад

    Дякую за відео

  • @andriyleliv4608
    @andriyleliv4608 Год назад +1

    Дуже кльово - дякую!

  • @bohdanartiukhov7238
    @bohdanartiukhov7238 Год назад +1

    спасибо за то что ты делаешь :)

  • @user-kn4hv3bg6g
    @user-kn4hv3bg6g Год назад +1

    Дякую! Круто!

  • @user-gywunrl
    @user-gywunrl Год назад +1

    дуже крутий контент, дякую

  • @sviat_d
    @sviat_d Год назад +1

    Круто. Інформативно, зрозуміло і лаконічно 👍

  • @vladyslavsosnov8412
    @vladyslavsosnov8412 Год назад

    Дякую за цікавий контент

  • @user-pt7nz6vc7s
    @user-pt7nz6vc7s Год назад +1

    Дякую за відео 😊

  • @oleksandrsecondname
    @oleksandrsecondname Год назад

    З мене лайк дивлячись) дуже струтуровано освіжає знання

  • @PonomarenkoO
    @PonomarenkoO 8 месяцев назад

    Дякую!

  • @padwallproduction
    @padwallproduction Год назад

    чекаю на наступне відео)

  • @ivanovserg8795
    @ivanovserg8795 8 месяцев назад

    Дуже цікаво! Дякую!

  • @yeoh4001
    @yeoh4001 9 месяцев назад

    Гарний контент, видно що хотів розповісти про все і одразу, а по факту стрибав з теми на тему і нічого детально не розповів. Можливо краще було б зробити окремі відео по кожному з дерев, оцінити worst/best complexity, в кінці реалізацію на тій же Node js?

    • @AboutProgramming
      @AboutProgramming  9 месяцев назад +2

      Дякую за відгук! Ідея була зробити одне відео про індекси а базах, але в результаті розбив на декілька 🙂 розбивати ще далі можна було, але тоді не буде порівняльного огляду в одному відео. Відносно реалізації, то це вже не так цікаво, оскільки багато таких відео є й властивості дерев в першу чергу залежать від їх структури, а реалізація того самого b дерева буде складною й великою. Більш цікаво написати код, який показує ефект від використання дерев. В планах є зробити окремі відео під quad tree або binary heap. Там є класні юз-кейси

  • @rostik18
    @rostik18 9 месяцев назад +1

    Прості речі, а вже й забулося (за B+ tree навіть не знав)
    Дякую Автору!
    цікаво, в NoSQL такий самий принцип?

    • @AboutProgramming
      @AboutProgramming  9 месяцев назад

      Так. Більшість баз використовувує B+tree для індексів (mongodb, наприклад, теж)

  • @user-eb9iv8gx7e
    @user-eb9iv8gx7e Год назад

    Дякую за відео. Трішки не вірно про AVL дерева: їх використання поширене у документоорієнтованих базах даних

    • @AboutProgramming
      @AboutProgramming  Год назад

      А які саме бази даних використовують AVL дерева для індексування? Бази, що знаю, типу MongoDB, CouchDB, DynamoDB використовують B-Tree для індексів.

  • @rayetzki
    @rayetzki Год назад +1

    Як варіант, було б цікаво ще в деталях про partitioning послухати

  • @552456829
    @552456829 9 месяцев назад

    Привіт. Чи використовуюєте ви планшет для нотатків за допомогою стилуса? Якщо так, то я який мобільний додаток? Дякую.

    • @AboutProgramming
      @AboutProgramming  9 месяцев назад

      У мене Galaxy Tab S7 FE й часто просто помалювати його користую. Програма для нотаток там вбудована - Samsung Notes

  • @shchekavytsia
    @shchekavytsia 8 месяцев назад

    Дякую за відео!!!! Цікаво, а як працює like пошук індексованих даних з джоінами на не індексовані

    • @AboutProgramming
      @AboutProgramming  8 месяцев назад +1

      В цілому за визначення того, як обробляти запит й які використовувати індекси відповідає query planner. Він аналізує різні варіанти виконання й обирає той, який набирає найбільший бал. Але при великій кількості джойнів й таблиць може бути таке, що перебрати варіанти занадто дорого, тоді база може навіть просто прорахувати певну кількість рандомних варіантів й обрати вже з них. Також часом query planner часом пробує альтернативні плани, щоб перевірити як вони працюють (у нас були від цього проблеми й доводилося писати хінти в запитах, щоб база використовувала правильні індекси завжди). Ну й звісно в різних базах query planner працює по різному. Що він обере залежить від того скільки даних, від селективності індексу, від кардинальності даних й тд. Тут самому треба закопуватися :) Але можливо має сенс відео про те, як це все перевіряти й як шукати проблемні місця в запитах

    • @shchekavytsia
      @shchekavytsia 8 месяцев назад

      @@AboutProgramming дякую за відповідь і круті відео!👍👍👍 треба почати і собі програмувати щось.

  • @itsimplified
    @itsimplified 11 месяцев назад

    Для тих, хто не в темі, варто уточнювати, що під записом log мається на увазі логарифм із основою 2.

    • @AboutProgramming
      @AboutProgramming  11 месяцев назад +1

      Насправді різниці немає. Так більшість алгоритмів має базу 2, але щоб сконвертувати одну базу в іншу нам треба просто помножити на константу, яка не залежить від n. Тобто це як O(n) й O(10*n) це одне й те саме, оскільки множення "10" не впливає на характер залежності. Це називають hidden constant. Тобто при збільшенні n в 2 рази час виконання збільшиться в 2 рази, а чи то зміна від 10 до 20 чи від 100 до 200 нам без різниці. Аналогічно й з базою логарифма

    • @itsimplified
      @itsimplified 11 месяцев назад

      @@AboutProgramming Але це впливає на розуміння, чому саме логарифм при діленні навпіл.

    • @nanvlad
      @nanvlad 3 месяца назад

      @@itsimplified це коли ми користуємося правилом золотого перетину, а якщо кожен рівень поділити на 3 значення, то буде log 3n, на 4 - log4n і т.д., тому в узагальненому записі вказують просто logn

  • @artemzabolotnyi3838
    @artemzabolotnyi3838 Год назад

    База

    • @AboutProgramming
      @AboutProgramming  Год назад +2

      Так. База, яку варто знати всім, хто працює з базами :) Але й в цьому відео є не зовсім очевидні речі. Наприклад, багато хто не знає, що fanout factor залежить від розміру наших даних (з колонок, які потрапляють в індекс), а не просто константа. Й відповідно page size може на ци впливати (й на максимальний розмір рядка)

  • @dbvech
    @dbvech Год назад

    Комент у підтримку. Цікавий контент!

  • @avazart614
    @avazart614 Год назад

    Але не зрозуміло навіщо вик. дерева з лог.склад. коли є хеш таблиці з конст. складністю?

    • @AboutProgramming
      @AboutProgramming  Год назад +5

      Хеш таблиці дуже крута структура даних й окрім того дійсно існують хеш-індекси в mysql/postgres, але дані там будуть не відсортовані. Тобто це просто key-value storage. В результаті :
      1. Не можемо робити запити виду "price > 100", а тільки пошук на конкретне значення. Й не можемо зробити скан.
      2. Не можна робити пошук типу "name like 'apple%'"
      3. Не можемо використовувати сортування. Тобто, кожен раз, коли в UI хтось сортує дані по певний колонці, то база не може використовувати індекси.
      Тобто, це перетворює MySQL умовно в Redis

    • @avazart614
      @avazart614 Год назад

      @@AboutProgramming Зрозуміло, дякую.

  • @bohdanmarynushkin7630
    @bohdanmarynushkin7630 8 месяцев назад

    а, ні. може

  • @markh3329
    @markh3329 8 месяцев назад

    шось нагнітаєш важкість про просте. аж 15 хвилин.

    • @AboutProgramming
      @AboutProgramming  8 месяцев назад

      Важке ж можеш пропускати

  • @dimashtef7077
    @dimashtef7077 8 месяцев назад

    мабуть найзрозуміліше пояснення "дерев", ще й українською

  • @markh3329
    @markh3329 8 месяцев назад

    дурна музика

    • @AboutProgramming
      @AboutProgramming  8 месяцев назад

      Якщо є кращі варіанти з бібліотекі ютуб, то готовий розглянути

  • @user-zc3vz2eg3s
    @user-zc3vz2eg3s 8 месяцев назад

    було б круто почути по криптографії огляд (хороші і погані практики) @AboutOrogramming

  • @AdminAdmin-sl2qf
    @AdminAdmin-sl2qf 3 месяца назад +1

    ❤❤❤❤❤❤❤❤❤❤❤❤