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

  Рет қаралды 10,795

Віктор Турський про програмування

Віктор Турський про програмування

Күн бұрын

Це відео є підготовчим до більш глибокого занурення в бази даних.
Спробував відповісти на наступні питання:
✅Що таке індекс в базі даних?
✅Чим відрізняються різні типи дерев?
✅Чому пошук по 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 #алгоритми

Пікірлер: 72
@AboutProgramming
@AboutProgramming Жыл бұрын
Вже всі підготовчі відео для головного виклав. В наступний раз має бути круте продовження 😎
@nztzn
@nztzn Жыл бұрын
Дуже крутий україномовний контент. Успіхів у розвитку!
@AboutProgramming
@AboutProgramming Жыл бұрын
Дякую! 🙂
@malds.0629
@malds.0629 Жыл бұрын
Дуже круте відео! Дякую за україномовниий контент!
@AdminAdmin-sl2qf
@AdminAdmin-sl2qf 3 ай бұрын
❤❤❤❤❤❤❤❤❤❤❤
@BorysPratsiuk
@BorysPratsiuk 4 ай бұрын
Окреме дякую за україномовний контент!!!
@v.ilchenko
@v.ilchenko Жыл бұрын
Аж ностальгія пробрала. Згадав як ми вчились балансувати ці дерева після роботи 🤓
@lilysea688
@lilysea688 Жыл бұрын
Дякую! Дуже корисно і дуже зрозуміле пояснення👌
@sstage44
@sstage44 Жыл бұрын
Крутий контент! Дуже цікаво слухати. Особливо знаючи величезний досвід автора)
@artemtrush
@artemtrush Жыл бұрын
Супер ✨
@kyivarcan
@kyivarcan Жыл бұрын
Дуже дякую за інформацію, зрозуміла та наглядна подача, будь-ласка, продовжуй далі, по базам данних такого контенту дуже мало (особливо україномовного)
@bohdanartiukhov7238
@bohdanartiukhov7238 Жыл бұрын
спасибо за то что ты делаешь :)
@pavel7930
@pavel7930 Жыл бұрын
Круто! Дякую!
@Ya_Kor
@Ya_Kor 5 ай бұрын
Мій випадковий вибір, з чого почати знайомство з каналом виявився не випадковим) На лекції по структурах даних якраз освітили все, крім B-Tree. Дякую за чудове та лаконічне пояснення. Пішов досліджувати решту контенту)
@user-ux8yp3si4d
@user-ux8yp3si4d Жыл бұрын
Дуже корисно, нещодавно сам намагався розібратися с BRT, чекаю нові відео 🦾
@user-kn4hv3bg6g
@user-kn4hv3bg6g Жыл бұрын
Дякую! Круто!
@dmytrofiialo4818
@dmytrofiialo4818 Жыл бұрын
Дякую за відео
@oksanakhortytsia
@oksanakhortytsia Жыл бұрын
Дякую! Дуже корисно і по справі!
@atsybulsky
@atsybulsky Жыл бұрын
Толковий відос, дякую :) Коротко та ясно.
@user-pt7nz6vc7s
@user-pt7nz6vc7s Жыл бұрын
Дякую за відео 😊
@user-si4sv1sv9b
@user-si4sv1sv9b 6 ай бұрын
Дякую
@vladyslavsosnov8412
@vladyslavsosnov8412 Жыл бұрын
Дякую за цікавий контент
@sviat_d
@sviat_d Жыл бұрын
Круто. Інформативно, зрозуміло і лаконічно 👍
@andriyleliv4608
@andriyleliv4608 Жыл бұрын
Дуже кльово - дякую!
@rickbacker1
@rickbacker1 8 ай бұрын
Дуже круте відео, стало ясніше як цей індекс працює в середині! Дякую Вам!
@user-gywunrl
@user-gywunrl Жыл бұрын
дуже крутий контент, дякую
@andriishymkiv6364
@andriishymkiv6364 Жыл бұрын
лайк не дивлячись)
@oleksiiderkach4840
@oleksiiderkach4840 7 ай бұрын
Дякую за відео!
@TheKidomaz
@TheKidomaz Жыл бұрын
Дуже круто і головне зрозуміло, підписався)
@BG-cg2op
@BG-cg2op Жыл бұрын
Awesome!
@PonomarenkoO
@PonomarenkoO 8 ай бұрын
Дякую!
@oleksandrsecondname
@oleksandrsecondname Жыл бұрын
З мене лайк дивлячись) дуже струтуровано освіжає знання
@Philip_Just
@Philip_Just Жыл бұрын
чекаю на наступне відео)
@MyHor
@MyHor 9 ай бұрын
Круто, дуже круто.
@ivanovserg8795
@ivanovserg8795 8 ай бұрын
Дуже цікаво! Дякую!
@RomanTsyupryk
@RomanTsyupryk 10 ай бұрын
Велике дякую вам за це відео.
@mshkotnyar
@mshkotnyar 9 ай бұрын
Просто топовий канал. Частину знав, частина для мене нове. Дуже круто, дуже
@romanyukartem757
@romanyukartem757 9 ай бұрын
Все доволі доступно, супер, дякую. Цікавим б також було б відео із додаванням індекса на високо-навантажену (на запис) та велику таблицю в базі данихю
@Roman-oi9el
@Roman-oi9el 7 ай бұрын
Готовий до наступного відео :)
@denyspapushaiev5604
@denyspapushaiev5604 10 ай бұрын
топовий український контент. щиро дякую!
@romkalily
@romkalily Жыл бұрын
Але то красава!!!!! Самий крутий український контент який я зараз дивлюсь!!
@yeoh4001
@yeoh4001 10 ай бұрын
Гарний контент, видно що хотів розповісти про все і одразу, а по факту стрибав з теми на тему і нічого детально не розповів. Можливо краще було б зробити окремі відео по кожному з дерев, оцінити worst/best complexity, в кінці реалізацію на тій же Node js?
@AboutProgramming
@AboutProgramming 10 ай бұрын
Дякую за відгук! Ідея була зробити одне відео про індекси а базах, але в результаті розбив на декілька 🙂 розбивати ще далі можна було, але тоді не буде порівняльного огляду в одному відео. Відносно реалізації, то це вже не так цікаво, оскільки багато таких відео є й властивості дерев в першу чергу залежать від їх структури, а реалізація того самого b дерева буде складною й великою. Більш цікаво написати код, який показує ефект від використання дерев. В планах є зробити окремі відео під quad tree або binary heap. Там є класні юз-кейси
@victorshnaider7305
@victorshnaider7305 Сағат бұрын
Коли писав червоно-чорне дерево в академії то над видаленям ноди думав цілий день😅
@rostik18
@rostik18 9 ай бұрын
Прості речі, а вже й забулося (за B+ tree навіть не знав) Дякую Автору! цікаво, в NoSQL такий самий принцип?
@AboutProgramming
@AboutProgramming 9 ай бұрын
Так. Більшість баз використовувує B+tree для індексів (mongodb, наприклад, теж)
@rayetzki
@rayetzki Жыл бұрын
Як варіант, було б цікаво ще в деталях про partitioning послухати
@user-eb9iv8gx7e
@user-eb9iv8gx7e Жыл бұрын
Дякую за відео. Трішки не вірно про AVL дерева: їх використання поширене у документоорієнтованих базах даних
@AboutProgramming
@AboutProgramming Жыл бұрын
А які саме бази даних використовують AVL дерева для індексування? Бази, що знаю, типу MongoDB, CouchDB, DynamoDB використовують B-Tree для індексів.
@artemzabolotnyi3838
@artemzabolotnyi3838 Жыл бұрын
База
@AboutProgramming
@AboutProgramming Жыл бұрын
Так. База, яку варто знати всім, хто працює з базами :) Але й в цьому відео є не зовсім очевидні речі. Наприклад, багато хто не знає, що fanout factor залежить від розміру наших даних (з колонок, які потрапляють в індекс), а не просто константа. Й відповідно page size може на ци впливати (й на максимальний розмір рядка)
@552456829
@552456829 9 ай бұрын
Привіт. Чи використовуюєте ви планшет для нотатків за допомогою стилуса? Якщо так, то я який мобільний додаток? Дякую.
@AboutProgramming
@AboutProgramming 9 ай бұрын
У мене Galaxy Tab S7 FE й часто просто помалювати його користую. Програма для нотаток там вбудована - Samsung Notes
@shchekavytsia
@shchekavytsia 8 ай бұрын
Дякую за відео!!!! Цікаво, а як працює like пошук індексованих даних з джоінами на не індексовані
@AboutProgramming
@AboutProgramming 8 ай бұрын
В цілому за визначення того, як обробляти запит й які використовувати індекси відповідає query planner. Він аналізує різні варіанти виконання й обирає той, який набирає найбільший бал. Але при великій кількості джойнів й таблиць може бути таке, що перебрати варіанти занадто дорого, тоді база може навіть просто прорахувати певну кількість рандомних варіантів й обрати вже з них. Також часом query planner часом пробує альтернативні плани, щоб перевірити як вони працюють (у нас були від цього проблеми й доводилося писати хінти в запитах, щоб база використовувала правильні індекси завжди). Ну й звісно в різних базах query planner працює по різному. Що він обере залежить від того скільки даних, від селективності індексу, від кардинальності даних й тд. Тут самому треба закопуватися :) Але можливо має сенс відео про те, як це все перевіряти й як шукати проблемні місця в запитах
@shchekavytsia
@shchekavytsia 8 ай бұрын
@@AboutProgramming дякую за відповідь і круті відео!👍👍👍 треба почати і собі програмувати щось.
@itsimplified
@itsimplified Жыл бұрын
Для тих, хто не в темі, варто уточнювати, що під записом log мається на увазі логарифм із основою 2.
@AboutProgramming
@AboutProgramming Жыл бұрын
Насправді різниці немає. Так більшість алгоритмів має базу 2, але щоб сконвертувати одну базу в іншу нам треба просто помножити на константу, яка не залежить від n. Тобто це як O(n) й O(10*n) це одне й те саме, оскільки множення "10" не впливає на характер залежності. Це називають hidden constant. Тобто при збільшенні n в 2 рази час виконання збільшиться в 2 рази, а чи то зміна від 10 до 20 чи від 100 до 200 нам без різниці. Аналогічно й з базою логарифма
@itsimplified
@itsimplified Жыл бұрын
@@AboutProgramming Але це впливає на розуміння, чому саме логарифм при діленні навпіл.
@nanvlad
@nanvlad 3 ай бұрын
@@itsimplified це коли ми користуємося правилом золотого перетину, а якщо кожен рівень поділити на 3 значення, то буде log 3n, на 4 - log4n і т.д., тому в узагальненому записі вказують просто logn
@dbvech
@dbvech Жыл бұрын
Комент у підтримку. Цікавий контент!
@avazart614
@avazart614 Жыл бұрын
Але не зрозуміло навіщо вик. дерева з лог.склад. коли є хеш таблиці з конст. складністю?
@AboutProgramming
@AboutProgramming Жыл бұрын
Хеш таблиці дуже крута структура даних й окрім того дійсно існують хеш-індекси в mysql/postgres, але дані там будуть не відсортовані. Тобто це просто key-value storage. В результаті : 1. Не можемо робити запити виду "price > 100", а тільки пошук на конкретне значення. Й не можемо зробити скан. 2. Не можна робити пошук типу "name like 'apple%'" 3. Не можемо використовувати сортування. Тобто, кожен раз, коли в UI хтось сортує дані по певний колонці, то база не може використовувати індекси. Тобто, це перетворює MySQL умовно в Redis
@avazart614
@avazart614 Жыл бұрын
@@AboutProgramming Зрозуміло, дякую.
@bohdanmarynushkin7630
@bohdanmarynushkin7630 9 ай бұрын
а, ні. може
@markh3329
@markh3329 8 ай бұрын
шось нагнітаєш важкість про просте. аж 15 хвилин.
@AboutProgramming
@AboutProgramming 8 ай бұрын
Важке ж можеш пропускати
@markh3329
@markh3329 8 ай бұрын
дурна музика
@AboutProgramming
@AboutProgramming 8 ай бұрын
Якщо є кращі варіанти з бібліотекі ютуб, то готовий розглянути
@dimashtef7077
@dimashtef7077 8 ай бұрын
мабуть найзрозуміліше пояснення "дерев", ще й українською
@user-zc3vz2eg3s
@user-zc3vz2eg3s 9 ай бұрын
було б круто почути по криптографії огляд (хороші і погані практики) @AboutOrogramming
@AdminAdmin-sl2qf
@AdminAdmin-sl2qf 3 ай бұрын
❤❤❤❤❤❤❤❤❤❤❤❤
Як працює повнотекстовий пошук? Розбираємо на практиці інвертовані індекси
48:14
Що не так з Інтернетом в кафе? Розбираємо DHCP
21:26
Віктор Турський про програмування
Рет қаралды 73 М.
We Got Expelled From Scholl After This...
00:10
Jojo Sim
Рет қаралды 41 МЛН
World’s Deadliest Obstacle Course!
28:25
MrBeast
Рет қаралды 75 МЛН
СНЕЖКИ ЛЕТОМ?? #shorts
00:30
Паша Осадчий
Рет қаралды 7 МЛН
GoLang Slice в деталях, простым языком
32:09
Николай Тузов — Golang
Рет қаралды 73 М.
Як працюють індекси в базах на прикладі. MySQL vs Postgres. UUID vs Auto Increment.
37:42
Віктор Турський про програмування
Рет қаралды 14 М.
Хешування, кодування, шифрування. В чому різниця?
8:40
Віктор Турський про програмування
Рет қаралды 8 М.
Як працює Інтернет? Основні питання про DNS
22:58
Віктор Турський про програмування
Рет қаралды 45 М.
System Design Dropbox
1:09:46
Владимир в IT
Рет қаралды 414
Як покращити Code Review? Як це робить Google?
15:16
Віктор Турський про програмування
Рет қаралды 9 М.
3 речі, які роблять програміста кращим
20:12
Віктор Турський про програмування
Рет қаралды 17 М.
Навіщо потрібні індекси в базі даних? Розберемо на прикладі
19:22
Віктор Турський про програмування
Рет қаралды 9 М.
We Got Expelled From Scholl After This...
00:10
Jojo Sim
Рет қаралды 41 МЛН