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 студентів в групі

Presentation of projects and analysis of research

You've written your own DBMS. Time to present it :)

Open-source databases. Modern architecture and recent issues

Using ML for indexing, planning, tuning
  • Serverless databases
  •  Separation of compute and storage layers
  •  Automation and self-driving DBMS
  •  Lakehouse architecture, agentic DBMS and Iceberg storage

Transactions and Concurrent Access Management

ACID transaction properties
  • Concurrency issues: dirty reads, phantom reads, and others
  •  Transaction isolation levels: Read Committed, Repeatable Read, Serializable, etc.
  •  2PL (two-phase locking) and deadlock detection
  •  MVCC (multi-version concurrency control) and snapshot isolation

Data types. Type system. Type casting.

Basic types: numeric, text, time, logical, binary
  • Handling NULL values
  •  Explicit and implicit type casting
  •  Rules of precedence in expressions
  •  User-defined types
  •  Semi-structured data types (JSON, XML, etc.)

Query execution. Plan vectorization. SQL compilation

Row-at-a-time vs batch-at-a-time approach
  • Volcano (iterator) execution model
  •  Vectorization: SIMD and block processing of values
  •  JIT compilation of SQL queries

Query planning and optimization

Logical plans (relational algebra trees)
  • Building an Abstract Syntax Tree (AST)
  • Heuristic optimizations: pushdown selections and projections
  •  Cost-based optimization: using statistics and evaluating selectivity
  •  Join strategies: nested loop, hash join, sort-merge join

Relational model. Relational algebra

Formal foundations of relational DBMSs and operations underlying SQL
  • Relationships, attributes, tuples, and keys
  •  Primary and foreign keys. Ensuring data integrity
  •  Basic operations of relational algebra: selection, projection, union, difference, Cartesian product
  •  Joins: inner, outer, natural
  •  Properties of algebra - commutativity, associativity. The role of algebra as a basis for query optimization

Columnar and hybrid data stores. Compression

Efficient storage of analytical data
  • Row-oriented vs column-oriented storage
  •  Advantages of the columnar approach for analytical queries
  •  Data compression methods: RLE, dictionary encoding, delta encoding
  •  Hybrid HTAP systems (Hybrid Transactional/Analytical Processing)
  •  PAX format — combining the advantages of row and column approaches

Indexes. B-tree and LSM

Data structures to speed up searches, inserts, and range scans
  • B-Tree and B+Tree: structure, search, insertion and deletion algorithms
  •  LSM trees: how log-structured merges work
  •  Write/Read amplification and compaction mechanisms
  •  Using Bloom filters to speed up searches

Data warehouse basics

How data is organized on disk and in memory, and why it affects performance
  • Pages and blocks as basic storage units
  •  Organizing records in pages: fixed and variable length
  •  Row-store and its applications
  •  Data fragmentation and defragmentation methods

History of databases

The path from file systems to modern data storage
  • The first DBMS models: Hierarchical, Network
  • The Relational Model Revolution and Its Impact on the Industry
  • The emergence of SQL, the development of object-oriented and NoSQL databases

ЯК ПРОХОДИТЬ
            НАВЧАННЯ

01

фідбек та ітерації

// Домашки не задаємо для галочки. Викладач перевіряє ваші результати та відправляє на доопрацювання та пояснює пробіли

Zoom

01

фідбек та ітерації

// Домашки не задаємо для галочки. Викладач перевіряє ваші результати та відправляє на доопрацювання та пояснює пробіли

Zoom

01

фідбек та ітерації

// Домашки не задаємо для галочки. Викладач перевіряє ваші результати та відправляє на доопрацювання та пояснює пробіли

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

Volodymyr Shulha

Senior Director of Engineering @Pindrop

Linkedin

I joined the course because data volumes keep growing — and so does the variety of database types. Many projects already rely on several different databases for different tasks. I wanted to develop a deeper understanding of how different types of databases are structured and which use cases each one is best suited for. The course material is extensive and high quality: finding this much information on your own and structuring it into a coherent whole would have been a real challenge.

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

Denys Ralko

Backend Engineer @Preply

Linkedin

What I liked most was the depth of the topics covered. I knew a lot of things as a fact before, but I didn't understand why they worked the way they did. The course gives me an opportunity to understand the reasons and mechanics of these decisions.

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

Mykola Pikuza

Java Software Engineer @Intapp

Linkedin

The course material is deep, practical, and very well structured, but what really makes it special is the community and the instructor. Denis is a great instructor who tries to explain complex database concepts simply and systematically. Always attentive to detail and willing to go over difficult points as many times as needed.

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

Anatolii Kokuliuk

Android Developer @Competo LLC

Linkedin

There are a lot of topics in the course, and you can get stuck in each one for a long time. As someone who is not interested in databases, the course is 100% engaging for me. Building a storage, vocabulary, building a pipeline, execution — super interesting topics that go far beyond the database.

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

Dmytro Avilov

.Net Developer @FlexBricks

Linkedin

I liked the course. I gained a lot of knowledge, and I began to understand a little better how databases work and which way to look when solving performance problems.

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

Yevhen Dudnik

Senior Software Engineer @ICC Chess Club

Linkedin

I went to the course with specific, quite deep questions, but it turned out that my questions were somewhere in the shallows. You have to be prepared for the fact that you will learn things about DBs that you didn't know about and that aren't even written about anywhere. The course is very interesting, my recommendation.

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

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

420 $

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

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

1600 $

за курсом нбу

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

I accept the terms of the Public Offer Agreement and consent to the processing of my personal data in accordance with the Privacy Policy.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

bottom of page