
Подай заявку
на відбір
за Весь курс
1050 $
за курсом нбу
помісячно
370 $
КУРС ТРИВАЄ 3 МІСЯЦІ
ПЕРШИЙ КРОК ЗА ТОБОЮ
Я приймаю умови Публічної оферти та надаю згоду на обробку своїх персональних даних відповідно до Політики конфіденційності.
За тебе може заплатити роботодавець?
Напиши нам на hello@csosvita.com, і ми оформимо все якнайшвидше.
МАЄШ ПИТАННЯ?
МИ ВІДПОВІДАЄМО
// Не знайшли відповідь, яку шукали? Напишіть нам на hello@csosvita.com і ми з усім допоможемо
я зможу навчатися на курсі, якщо в мене інший часовий пояс?
Так, звісно. Всі заняття ми записуємо, тож різниця в часових поясах не буде суттєвою перешкодою. Переглядайте лекції коли зручно, а якщо виникнуть питання — викладач і команда на зв'язку в Slack-каналі.
як проходять заняття?
Ми працюємо в невеликих груп ах 20-25 людей у форматі живих занять із викладачем — зустрічаємося кілька разів на тиждень у Zoom. На заняттях розбираємо задачі, дискутуємо, уточнюємо деталі, розглядаємо приклади та аргументацію рішень. Формат побудований так, щоб кожен був залучений і мав можливість взаємодіяти з викладачем та групою.
чи є записи занять?
Щоразу організовуємо запис, однак краще долучатися до онлайн-зустрічі — обговорити питання з одногрупниками та проконсультуватися з викладачем. Доступ до записів зберігається протягом року з дня старту курсу.
який рівень підготовки потрібен?
Курс підійде інженерам, які вже працювали з backend або database systems і хочуть глибше зрозуміти внутрішню архітектуру сучасних БД. Для комфортного навчання потрібне базове розуміння алгоритмів і структур даних, SQL, памʼяті, процесів та взаємодії з ОС, а також готовність регулярно працювати над курсовим проєктом поза заняттями.
Детальніше вимоги описані у блоці Prerequisites на цій сторінці.
Курси, які доповнюють
цю програму
// Поглибте суміжні навички або оберіть наступний напрям розвитку
до зустрічі на курсі
Перевірено випускниками —
ТОП інженерами з індустрії
Я йшов на курс із конкретними, доволі глибокими запитами, але виявилося, що мої запити — це десь мілководдя. Треба бути готовим до того, що ви дізнаєтесь про БД речі, про які не знали і про які навіть ніде не пишуть. Курс дуже цікавий, мій рекомендасьон.
Матеріал курсу глибокий, практичний і дуже добре структурований, але те, що справді робить його особливим — це спільнота та викладач. Денис — чудовий викладач, який намагається пояснити складні концепції БД просто й системно. Завжди уважний до деталей і готовий розбирати складні моменти стільки разів, скільки потрібно.
Доєднався до курсу, так як обсяги даних постійно зростають і так само росте кількість різних видів баз даних та часто на проекті використовується кілька різних баз для різних задач. Хотів глибше зрозуміти, як влаштовані різні типи баз даних і для яких задач кожен із них підходить найкраще. Матеріал курсу об'ємний та високої якості: самостійно знайти таку кількість інформації та структурувати її було б складно.
ПРО КУРС
Database Internals — практичний курс про внутрішню будову сучасних СУБД. Ви пройдете повний шлях обробки запиту: від парсингу й побудови AST до оптимізації, виконання, роботи зі сховищем та транзакціями.
Паралельно ви поетапно реалізуєте влас ний database engine і на практиці побачите, як архітектурні рішення впливають на пам’ять, I/O та продуктивність системи.
Курс розрахований на інженерів, які вже користуються базами даних, але хочуть краще розуміти їхню внутрішню механіку, діагностувати проблеми продуктивності та обґрунтовано обирати між різними підходами до зберігання й обробки даних.
ЩО ПОТРІБНО ЗНАТИ
:: Впевнено програмувати однією мовою: писати, дебажити й тестувати код
:: Базові алгоритми та структури даних: складність, хеш-таблиці, дерева, сортування та пошук
:: Розуміти основи SQL: таблиці, ключі, SELECT, WHERE, JOIN
ДВІЧІ на тиждень
ПО НЕДІЛОК 19:00 (UTC+3)
СЕРЕДА 19:00 (UTC+3)
// live зустрічі з записом
Стек
Будь-яка мова програмування
// приклади на С++, Rust, Java, Python
ПРОГРАМА
:: 25 LIVE ЗАНЯТТЬ :: ДО 20 СТУДЕНТІВ У ГРУПІ
Історія баз даних
Шлях від файлових систем до сучасних сховищ даних
Перші моделі СУБД: Ієрархічна, Мережева
Революція реляційної моделі та її вплив на індустрію
Поява SQL, розвиток об’єктно-орієнтованих і NoSQL баз даних
Основи сховища даних
Як дані організовані на диску та в пам’яті, і чому це впливає на швидкодію
Сторінки й блоки як базові одиниці зберігання
Організація записів у сторінках: фіксованої та змінної довжини
Рядкове зберігання (row-store) та сфери його застосування
Фрагментація даних і методи дефрагментації
Індекси. B-tree та LSM
Структури даних для прискорення пошуку, вставок і сканування діапазонів
B-Tree і B+Tree: будова, алгоритми пошуку, вставки та видалення
LSM-дерева: принцип роботи лог-структурованих злиттів
Write/Read amplification і механізми compaction
Використання Bloom-фільтрів для прискорення пошуку
Колонкові та гібридні сховища даних. Компресія
Ефективне зберігання аналітичних даних
Рядкове (row-oriented) vs колонкове (column-oriented) зберігання
Переваги колонкового підходу для аналітичних запитів
Методи стиснення даних: RLE, dictionary encoding, delta encoding
Гібридні HTAP-системи (Hybrid Transactional/Analytical Processing)
Формат PAX — поєднання переваг рядкового та колонкового підходів
Реляційна модель. Реляційна алгебра
Формальні основи реляційних СУБД та операції, що лежать під SQL
Відношення, атрибути, кортежі та ключі
Первинні й зовнішні ключі. Забезпечення цілісності даних
Базові операції реляційної алгебри: селекція, проєкція, об’єднання, різниця, декартів добуток
З’єднання (join): внутрішні, зовнішні, натуральні
Властивості алгебри — комутативність, асоціативність. Роль алгебри як основи для оптимізації запитів
Планування та оптимізація запитів
Логічні плани (дерева реляційної алгебри)
Побудова дерева синтаксичного розбору (AST)
Евристичні оптимізації: pushdown селекцій і проєкцій
Cost-based оптимізація: використання статистик і оцінка селективності
Стратегії з’єднань: nested loop, hash join, sort-merge join
Виконання запитів. Векторизація планів. Компіляція SQL
Row-at-a-time vs batch-at-a-time підхід
Volcano (iterator) модель виконання
Векторизація: SIMD та обробка блоків значень
JIT-компіляція SQL-запитів
Типи даних. Система типів. Приведення типів
Основні типи: числові, текстові, часові, логічні, бінарні
Обробка
NULL-значеньЯвне та неявне приведення типів
Правила пріоритетів у виразах
Користувацькі (user-defined) типи
Напівструктуровані типи даних (JSON, XML тощо)
Транзакції та керування паралельним доступом
ACID-властивості транзакцій
Проблеми конкурентності: dirty reads, phantom reads та інші
Рівні ізоляції транзакцій: Read Committed, Repeatable Read, Serializable тощо
2PL (двохфазне блокування) та виявлення дедлоків
MVCC (multi-version concurrency control) і snapshot isolation
Open-source бази даних. Сучасна архітектура та останні проблеми
Використання ML для індексування, планування, тюнінгу
Serverless-бази даних
Відокремлення compute та storage шарів
Автоматизація та self-driving DBMS
Lakehouse-архітектура, agentic DBMS і Iceberg storage
Презентація проектів та розбір досліджень
Ви написали власну СУБД. Час презентувати :)
ЯК ПРОХОДИТЬ
НАВЧАННЯ
01
фідбек та ітерації
// Домашки не здаємо для галочки. Викладач перевіряє рішення, повертає на доопрацювання та пояснює, де прогалини
Zoom
02
записи та конспекти
// Записуємо всі заняття та ділимося матеріалами, щоб ви не втрачали темп навіть через форс-мажори чи особисті обставини
Zoom
03
live звʼязок
// Усі зан яття проходять наживо з викладачем, щоб поставити запитання та попрактикувати live-coding
Zoom
01
live зв'язок
// Усі заняття проходять в живому форматі з викладачем, щоб поставити запитання та попрактикувати live-coding
Zoom
Slack
02
записи та конспекти
// Записуємо всі заняття та ділимося матеріалами, щоб ви не втрачали темп навіть через форс-мажори чи особисті обставини
Notion
03
фідбек та ітерації
// Домашки не задаємо для галочки. Викладач перевіряє ваші результати та відправляє на доопрацювання та пояснює
GitHub
HackerRank
ПРАКТИЧНА
РОБОТА
:: ПИШЕТЕ ВЛАСНУ СУБД :: 6 ЕТАПІВ ПРОЄКТУ :: ПРОМІЖНИЙ ФІДБЕК
Storage Engine: Page Layout
// приклад однієї з домашок на курсі
Модуль-02 · Основи сховища даних. Реалізуйте низькорівневий механізм зберігання записів — основу будь-якої СУБД.
Вимоги:
:: Спроєктувати структуру сторінки фіксованого розміру.
:: Реалізувати 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.
ВИКЛАДАЧ
ТА АВТОР ПРОГРАМИ
.webp)
Денис Цьоменко
Founding Engineer @Embucket. University lecturer @Kyiv School of Economics Former: @CaspianDB, @SingleStore, @DataRobot, @Microsoft.
:: Проєктує, веде розробку та консультує database-focused стартапи із 2020 року, де СУБД і є продуктом, а не допоміжним інструментом.
:: BSc + MSc in Computer Science.
:: 3+ роки викладацького досвіду.








