
Database
Internals
Databases aren’t magic — let’s open the hood.
The revolution needs builders
ПРО КУРС
Більшість проблем перформансу живе не в алгоритмах. Корінь глибше — в тому, як код виконується на реальному CPU та GPU: промахи кешу, невдале розміщення даних у пам'яті, хибні передбачення branch predictor, зайві алокації, перемикання між потоками чи простої в очікуванні ядра ОС. Кожен із цих факторів з'їдає мікросекунди, які складаються у відчутні затримки. Звідси парадокси, що ламають інтуїцію: O(n) програє O(n²), HashMap на мільйони записів поступається sorted array із binary search, а два потоки працюють повільніше за один.
І саме тут починаються по-справжньому цікаві інженерні задачі — особливо зараз, коли частоти процесорів не ростуть, пам'ять відстає від CPU, а залізо більше не пробачає неакуратних рішень. Як прискорити hot loop у 10 разів, не змінюючи алгоритму? Як написати memory allocator, швидший за malloc на вашому workload? Як зрозуміти, що насправді робить ваш код, коли профайлер показує дивне? Цей курс — про розв'язання таких задач: від рівня бітів і байтів до операційних систем, через практику і вимірювання, а не оглядову теорію. Принцип один: не вгадувати — міряти, не «підкручувати» — пояснювати, формувати власну модель того, що відбувається під капотом.
Для middle та senior інженерів, які працюють або хочуть працювати там, де performance — не nice to have, а базова вимога: infrastructure, backend core, databases, machine learning systems, high-frequency trading.
prerequisites
:: Системне програмування: памʼять, файли, процеси, I/O, взаємодія з ОС
:: Junior+ рівень програмування: писати, дебажити, структурувати код хоча б однією мовою
:: Алгоритми та структури даних: складність, масиви, хеш-таблиці, дерева, сортування, індекси
:: SQL і реляційна модель: таблиці, ключі, SELECT, WHERE, JOIN, GROUP BY
ДВІЧІ на тиждень
Субота
10:00 UTC+3
Середа
18:30 UTC+3
// live зустрічі з записом
Стек
Будь-яка мова програмування
// live зустрічі з записом
ПРОГРАМА
:: 32 live заняття
:: 8 Q&A сесій
:: до 30 студентів в групі
Презентація проектів та розбір досліджень
Ви написали власну СУБД. Час презентувати :)
Open-source бази даних. Сучасна архітектура та останні проблеми
Використання ML для індексування, планування, тюнінгу
Serverless-бази даних
Відокремлення compute та storage шарів
Автоматизація та self-driving DBMS
Lakehouse-архітектура, agentic DBMS і Iceberg storage
Транзакції та керування паралельним доступом
ACID-властивості транзакцій
Проблеми конкурентності: dirty reads, phantom reads та інші
Рівні ізоляції транзакцій: Read Committed, Repeatable Read, Serializable тощо
2PL (двохфазне блокування) та виявлення дедлоків
MVCC (multi-version concurrency control) і snapshot isolation
Типи даних. Система типів. Приведення типів
Основні типи: числові, текстові, часові, логічні, бінарні
Обробка
NULL-значеньЯвне та неявне приведення типів
Правила пріоритетів у виразах
Користувацькі (user-defined) типи
Напівструктуровані типи даних (JSON, XML тощо)
Виконання запитів. Векторизація планів. Компіляція SQL
Row-at-a-time vs batch-at-a-time підхід
Volcano (iterator) модель виконання
Векторизація: SIMD та обробка блоків значень
JIT-компіляція SQL-запитів
Планування та оптимізація запитів
Логічні плани (дерева реляційної алгебри)
Побудова дерева синтаксичного розбору (AST)
Евристичні оптимізації: pushdown селекцій і проєкцій
Cost-based оптимізація: використання статистик і оцінка селективності
Стратегії з’єднань: nested loop, hash join, sort-merge join
Реляційна модель. Реляційна алгебра
Формальні основи реляційних СУБД та операції, що лежать під SQL
Відношення, атрибути, кортежі та ключі
Первинні й зовнішні ключі. Забезпечення цілісності даних
Базові операції реляційної алгебри: селекція, проєкція, об’єднання, різниця, декартів добуток
З’єднання (join): внутрішні, зовнішні, натуральні
Властивості алгебри — комутативність, асоціативність. Роль алгебри як основи для оптимізації запитів
Колонкові та гібридні сховища даних. Компресія
Ефективне зберігання аналітичних даних
Рядкове (row-oriented) vs колонкове (column-oriented) зберігання
Переваги колонкового підходу для аналітичних запитів
Методи стиснення даних: RLE, dictionary encoding, delta encoding
Гібридні HTAP-системи (Hybrid Transactional/Analytical Processing)
Формат PAX — поєднання переваг рядкового та колонкового підходів
Індекси. B-tree та LSM
Структури даних для прискорення пошуку, вставок і сканування діапазонів
B-Tree і B+Tree: будова, алгоритми пошуку, вставки та видалення
LSM-дерева: принцип роботи лог-структурованих злиттів
Write/Read amplification і механізми compaction
Використання Bloom-фільтрів для прискорення пошуку
Основи сховища даних
Як дані організовані на диску та в пам’яті, і чому це впливає на швидкодію
Сторінки й блоки як базові одиниці зберігання
Організація записів у сторінках: фіксованої та змінної довжини
Рядкове зберігання (row-store) та сфери його застосування
Фрагментація даних і методи дефрагментації
Історія баз даних
Шлях від файлових систем до сучасних сховищ даних
Перші моделі СУБД: Ієрархічна, Мережева
Революція реляційної моделі та її вплив на індустрію
Поява SQL, розвиток об’єктно-орієнтованих і NoSQL баз даних
ЯК ПРОХОДИТЬ
НАВЧАННЯ
02
фідбек та ітерації
// Домашки не задаємо для галочки. Викладач перевіряє ваші результати та відправляє на доопрацювання та пояснює пробіли
Zoom
02
записи та конспекти
// Записуємо всі заняття та ділимося матеріалами, щоб ви не втрачали темп навіть через форс-мажори чи особисті обставини
Zoom
02
live звʼязок
// Усі заняття проходять в живому форматі з викладачем, щоб поставити запитання та попрактикувати live-coding
Zoom
ПРАКТИЧНА
РОБОТА
:: 30 завдань
:: пишете власну СУБД
:: ФІДБЕК ВИКЛАДАЧА
// Рекомендуємо виділяти 6–10 годин на тиждень для виконання домашніх завдань, щоб отримати максимальний результат від курсу.
Storage Engine: Page Layout
Реалізувати низькорівневий механізм зберігання записів — основу будь-якої СУБД.
Реалізуйте простий механізм зберігання записів у сторінках.
Вимоги:
:: Спроєктувати структуру сторінки фіксованого розміру
:: Реалізувати page header, slot directory та free-space pointer
:: Підтримати fixed-length і variable-length records
:: Імплементувати insert, get, delete, update
ЩО ЗМІНИТЬСЯ
ПІСЛЯ КУРСУ
1
збудуєш database engine з нуля
// Поетапно реалізовуєш storage layer, indexing, query execution та ключові механіки, на яких побудовані сучасні database systems.
2
розбираєшся в архітектурі сучасних БД
// Розумієш різницю між LSM і B-Tree, OLTP та OLAP, row-store і column-store, а також де кожен підхід дає найкращий результат.
3
розумієш, чому база даних гальмує
// Indexes, query planning, query optimization, transactions. Бачиш вузькі місця та розумієш, звідки береться деградація performance.
ВИКЛАДАЧ
ТА АВТОР ПРОГРАМИ

Денис Цьоменко
Founding Engineer @Embucket
Former Software Engineer @CaspianDB, @SingleStore, @DataRobot, @Microsoft.
Former University lecturer @Kyiv School of Economics
:: випустив понад 300 інженерів
:: 14 років інженерного досвіду з високонавантаженими системами
:: випускник Stanford University
01
Проєктує, веде розробку та консультує database-focused стартап и із 2020 року, де СУБД і є продуктом, а не допоміжним інструментом.
02
BSc + MSc in Computer Science
03
3+ роки викладацького досвіду
Перевірено випускниками -
ТОП інженерами з індустрії
amazon
netflix
booking.com
spotify
meta

Володимир Шульга
Senior Director of Engineering @Pindrop
Доєднався до курсу, так як обсяги даних постійно зростають і так само росте кількість різних видів баз даних та часто на проекті використовується кілька різних баз для різних задач. Хот ів глибше зрозуміти, як влаштовані різні типи баз даних і для яких задач кожен із них підходить найкраще. Матеріал курсу об'ємний та високої якості: самостійно знайти таку кількість інформації та структурувати її було б складно.

Денис Ралко
Backend Engineer @Preply
Найбільше сподобалась глибина розгляду тем. Багато речей раніше знав як факт, але не розумів, чому саме вони працюють так. Курс дає можливість розібратися в причинах і механіці цих рішень

Микола Пікуза
Java Software Engineer @Intapp
Матеріал курсу глибокий, практичний і дуже добре структурований, але те, що справді робить його особливим — це спільнота та викладач. Денис — чудовий викладач, який намагається пояснити складні концепції БД просто й системно. Завжди уважний до деталей і готовий розбирати складні моменти стільки разів, скільки потрібно.

Анатолій Кокулюк
Android Developer @Competo LLC
Тем на курсі багато і в кожній можна застрягти надовго. Мені, як людині, якій не цікаві БД, курс залітає на 100%. Будування стораджу, лексика, будування пайплайну, виконання — суперцікаві теми, які вилазять далеко за межі БД.

Дмитро Авілов
.Net Developer @FlexBricks
Курс сподобався. Отримав багато знань, став трохи краще розуміти, як працюють бази даних і в яку сторону дивитись, коли потрібно вирішувати проблеми з перфомансом.

Євген Дуднік
Senior Software Engineer @ICC Chess Club
Я йшов на курс із конкретними, доволі глибокими запитами, але виявилося, що мої запити — це десь мілководдя. Треба бути готовим до того, що ви дізнаєтесь про БД речі, про які не знали і про які навіть ніде не пишуть. Курс дуже цікавий, мій рекомендасьон.
БРОНЮЙ СВОЄ
МІСЦЕ В ГРУПІ
оплата помісячно
420 $
курс триває 4 місяці
оплата за весь курс
1600 $
за курсом нбу
ПЕРШИЙ КРОК ЗА ТОБОЮ
Я приймаю умови Публічної оферти та надаю згоду на обробку своїх персональних даних відповідно до Політики конфіденційності.
За тебе може заплатити роботодавець?
Напиши нам на hello@csosvita, і ми оформимо все якнайшвидше.
МАЄШ ПИТАННЯ?
МИ ВІДПОВІДАЄМО
// Не знайшли відповідь, яку шукали? Напишіть нам на hello@csosvita.com і ми з усім допоможемо