database internals
Databases aren’t magic — let’s open the hood.
start:
Mar 31, 2026
25 занять
350 $/міс
we will donate to the Defense Forces
about the course
Як побудувати систему управління базами даних? Чому існує так багато різновидів СУБД, і щороку з’являються нові? Як насправді працюють primary key, join, order by? Як дані зберігаються на диску та які оптимізації застосовують сучасні системи? Якщо ви хочете отримати відповіді на ці та інші запитання про створення СУБД — цей курс для вас.
Протягом навчання ми розглянемо повний шлях побудови бази даних — від парсингу запитів до їх виконання та масштабування. Ви дізнаєтеся, які алгоритми та концепції лежать в основі сучасних СУБД, і на практиці створите власну.
Курс буде корисний тим, хто прагне глибше зануритися в системне програмування, користувачам СУБД, які хочуть зрозуміти внутрішні принципи роботи баз даних та навчитися ефективніше їх оптимізувати. Найкращий досвід навчання — з Rust або C++, адже вони дозволять глибше зануритися в архітектуру баз даних і краще відчути роботу з пам’яттю та продуктивністю на практиці, але це лише рекомендація.
curriculum
it will be hot
Від файлових систем, ієрархічних і мережевих моделей до реляційних баз даних
Революція реляційної моделі та її вплив на індустрію
Поява SQL, розвиток об’єктно-орієнтованих і NoSQL баз даних
Сучасні тенденції: хмарні, serverless, lakehouse та edge-бази даних
Основи парсингу запитів: токенізація, граматика SQL, побудова дерева синтаксичного розбору (AST)
Вступ до курсу. Історія баз даних. Парсинг SQL запитів
Токенізація, граматика SQL, побудова AST
Відношення, атрибути, кортежі та ключі
Первинні й зовнішні ключі. Забезпечення цілісності даних
Базові операції реляційної алгебри: селекція, проєкція, об’єднання, різниця, декартів добуток
З’єднання (join): внутрішні, зовнішні, натуральні
Властивості алгебри — комутативність, асоціативність. Роль алгебри як основи для оптимізації запитів
Реляційна модель. Реляційна алгебра.
Формальні основи реляційни х СУБД та операції, що лежать під SQL
Сторінки й блоки як базові одиниці зберігання
Організація записів у сторінках: фіксованої та змінної довжини
Рядкове зберігання (row-store) та сфери його застосування
Фрагментація даних і методи дефрагментації
Основи сховища даних.
Як дані організовані на диску та в пам’яті, і чому це впливає на швидкодію
B-Tree і B+Tree: будова, алгоритми пошуку, вставки та видалення
LSM-дерева: принцип роботи лог-структурованих злиттів
Write/Read amplification і механізми compaction
Використання Bloom-фільтрів для прискорення пошуку
Індекси. B-tree та LSM.
Структури даних для прискорення пошуку, вставок і сканування діапазонів
Рядкове (row-oriented) vs колонкове (column-oriented) зберігання
Переваги колонкового підходу для аналітичних запитів
Методи стиснення даних: RLE, dictionary encoding, delta encoding
Гібридні HTAP-системи (Hybrid Transactional/Analytical Processing)
Формат PAX — поєднання переваг рядкового та колонкового підходів
Колонкові та гібридні сховища даних. Компресія
Ефективне зберіг ання аналітичних даних
Евристичні оптимізації: pushdown селекцій і проєкцій
Cost-based оптимізація: використання статистик і оцінка селективності
Стратегії з’єднань: nested loop, hash join, sort-merge join
Планування та оптимізація запитів.
Логічні плани (дерева реляційної алгебри)
Volcano (iterator) модель виконання
Векторизація: SIMD та обробка блоків значень
JIT-компіляція SQL-запитів
Виконання запитів. Векторизація планів. Компіляція SQL
Row-at-a-time vs batch-at-a-time підхід
Обробка
NULL-значеньЯвне та неявне приведення типів
Правила пріоритетів у виразах
Користувацькі (user-defined) типи
Напівструктуровані типи даних (JSON, XML тощо)
Типи даних. Система типів. Приведення типів.
Основні типи: числов і, текстові, часові, логічні, бінарні
Проблеми конкурентності: dirty reads, phantom reads та інші
Рівні ізоляції транзакцій: Read Committed, Repeatable Read, Serializable тощо
2PL (двохфазне блокування) та виявлення дедлоків
MVCC (multi-version concurrency control) і snapshot isolation
Транзакції та керування паралельним доступом
ACID-властивості транзакцій
Горизонтальне масштабування (шардинг)
Реплікація: синхронна й асинхронна; моделі master–slave і multi-leader
CAP-теорема та моделі узгодженості даних
Розподілені бази даних: масштабування та узгодженість
Протоколи 2PC і консенсусу (Paxos, Raft)
Serverless-бази даних
Відокремл ення compute та storage шарів
Автоматизація та self-driving DBMS
Lakehouse-архітектура, agentic DBMS і Iceberg storage
Open-source бази даних. Сучасна архітектура та останні проблеми.
Використання ML для індексування, планування, тюнінгу
Презентація проектів та розбір досліджень.
Ви написали власну СУБД. Час презентувати :)
read by

Денис Цьоменко
Founding Engineer @Embucket
Former Software Engineer @CaspianDB @SingleStore @DataRobot @Microsoft
University lecturer @Kyiv School of Economics
Register. The first step is yours.
register
the first step is yours
I accept the terms of the Public Offer and consent to the processing of my personal data in accordance with the Privacy Policy.
reviews
What graduates say
What awaits you?
have fun and dive deep
формат, який працює
Постійний зворотний зв’язок у Slack. Жодних поверхневих слайдів: тільки глибокий розбір цікавих задач із реального продакшену.
Сертифікат видаємо лише за реальні результати — виконані домашки, участь у дискусіях, відчутний прогрес.
комунікація, яка тримає в тонусі
Зустрічаємось у Zoom двічі на тиждень — щопонедіка і щосереди о 19:00. Лекції тривають 1.5 години, кожна записується, тож ви завжди зможете передивитися матеріал у зручний час. Мова викладання — українська. Додаткові матеріали — англійською.
Slack — наш спільний простір. Тут обговорюємо задачі, ділимось підказками, пишемо хитрі тести й обговорюємо реферали в топ-компанії.
оточення, яке заряджає
Проводимо відбір, щоб ви навчалися в середовищі сильних і вмотивованих. Тих, хто не виконує домашки, — відраховуємо.
Лектор завжди на зв’язку — пояснить, доки не стане зрозуміло. Іноді це третя ітерація code review, іноді — залишаємося після лекції, щоб розібратись разом. Це нормально — ми тут, щоб вчитись і ставати сильнішими.