top of page

Database

Internals

Databases aren’t magic — let’s open the hood.

3 серп. 2026 р.

// старт наступної групи

3 місяці

// 31 заняття, 3 місяці

400 $/місяць

1200 $

до 30 учасників

// кількість місць обмежена

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.

ВИКЛАДАЧ
         ТА АВТОР ПРОГРАМИ

ivan2.jpg

Денис Цьоменко

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+ роки викладацького досвіду

Перевірено випускниками -
        ТОП інженерами з індустрії

google

amazon

netflix

booking.com

spotify

meta

владислав парахін.jpg

Володимир Шульга

Senior Director of Engineering @Pindrop

Linkedin

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

владислав парахін.jpg

Денис Ралко

Backend Engineer @Preply

Linkedin

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

владислав парахін.jpg

Микола Пікуза

Java Software Engineer @Intapp

Linkedin

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

владислав парахін.jpg

Анатолій Кокулюк

Android Developer @Competo LLC

Linkedin

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

владислав парахін.jpg

Дмитро Авілов

.Net Developer @FlexBricks

Linkedin

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

владислав парахін.jpg

Євген Дуднік

Senior Software Engineer @ICC Chess Club

Linkedin

Я йшов на курс із конкретними, доволі глибокими запитами, але виявилося, що мої запити — це десь мілководдя. Треба бути готовим до того, що ви дізнаєтесь про БД речі, про які не знали і про які навіть ніде не пишуть. Курс дуже цікавий, мій рекомендасьон.

БРОНЮЙ СВОЄ
       МІСЦЕ В ГРУПІ

оплата помісячно

420 $

курс триває 4 місяці

оплата за весь курс

1600 $

за курсом нбу

ПЕРШИЙ КРОК ЗА ТОБОЮ

Я приймаю умови Публічної оферти та надаю згоду на обробку своїх персональних даних відповідно до Політики конфіденційності.

За тебе може заплатити роботодавець?

Напиши нам на hello@csosvita, і ми оформимо все якнайшвидше.

МАЄШ ПИТАННЯ?
     МИ ВІДПОВІДАЄМО

// Не знайшли відповідь, яку шукали? Напишіть нам на hello@csosvita.com і ми з усім допоможемо

я зможу навчатися на курсі, якщо в мене інший часовий пояс?

Так, звісно. Всі заняття ми записуємо, тож різниця в часових поясах не буде суттєвою перешкодою. Переглядайте лекції коли зручно, а якщо виникнуть питання — викладач і команда на зв'язку в Slack-каналі.

як проходять заняття?

Ми працюємо в невеликих групах 20-25 людей у форматі живих занять із викладачем — зустрічаємося кілька разів на тиждень у Zoom. На заняттях розбираємо задачі, дискутуємо, уточнюємо деталі, розглядаємо приклади та аргументацію рішень. Формат побудований так, щоб кожен був залучений і мав можливість взаємодіяти з викладачем та групою.

чи є запис занять?

Щоразу організовуємо запис, однак краще долучатися до онлайн-зустрічі — обговорити питання з одногрупниками та проконсультуватися з викладачем. Доступ до записів зберігається протягом року з дня старту курсу.

який рівень підготовки потрібний?

Курс підійде інженерам, які вже працювали з backend або database systems і хочуть глибше зрозуміти внутрішню архітектуру сучасних БД. Для комфортного навчання потрібне базове розуміння алгоритмів і структур даних, SQL, памʼяті, процесів та взаємодії з ОС, а також готовність регулярно працювати над курсовим проєктом поза заняттями.

Детальніше вимоги описані у блоці Prerequisites на цій сторінці.

до зустрічі на курсі

bottom of page