Почему это вообще важно?
Частые вопросы на собеседовании по этой теме
Более подробно разбираю эту и другие темы у себя на менторстве, так что если хотите войти в дата инженерию, но есть затыки - обращайтесь, разберем)
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дата Инженер Лаб | Артём Подвальный
🎁Что такое Lakehouse и зачем он нужен?
Lakehouse — это архитектура, которая объединяет плюсы Data Warehouse (DWH) и Data Lake.
Она появилась, потому что у классических решений были сильные ограничения:
DWH отлично подходит для аналитики, но хранить в нём…
Lakehouse — это архитектура, которая объединяет плюсы Data Warehouse (DWH) и Data Lake.
Она появилась, потому что у классических решений были сильные ограничения:
DWH отлично подходит для аналитики, но хранить в нём…
👍8🔥5🤔2💯2❤1👀1
⚙️ Сегодня поговорим о ClickHouse - современной колоночной бд
Эта СУБД была создана в Яндексе, чтобы быстро обрабатывать огромные объёмы аналитических данных.
Она идеально подходит для метрик, логов, аналитики поведения пользователей и realtime-дашбордов.
❓ Почему ClickHouse стал необходим?
Обычные реляционные базы (PostgreSQL, MySQL) хранят данные построчно.
Это удобно для транзакций (добавить заказ, обновить статус),
но неэффективно, когда нужно просканировать миллиарды строк и посчитать среднее.
ClickHouse решает эту задачу:
🔘 У него колоночное хранение — данные читаются по колонкам, а не по строкам.
Если запрос использует 3 столбца из 100, остальные даже не читаются.
🔘 Векторная обработка данных— операции в Clickhouse выполняются сразу на блоках строк (по 65 000 штук), а не по одной.
🔘 Используется сжатие ZSTD/LZ4 из-за чего хранит данные в 5–10 раз компактнее.
🖥 Какие основные Архитектурные компоненты Clickhouse:
🟣 У него есть Block — единица работы в памяти.
ClickHouse всегда работает блоками, чтобы максимально использовать CPU-векторизацию.
🟣 Данные хранятся на диске Part'ами — кусками данных, создающимися при каждом INSERT и уже отсортированными по ORDER BY.
Старые парты не изменяются, а фоновые потоки их потом объединяют (merge).
🟣 MergeTree — сердце ClickHouse
Это семейство движков, которое обеспечивает сортировку, дедупликацию и индексацию.
Например: ReplacingMergeTree, SummingMergeTree, AggregatingMergeTree — варианты под разные задачи.
🟣 Primary Key ≠ уникальный ключ.
В ClickHouse он нужен для сортировки и ускорения диапазонных запросов.
🟣 Skip-индексы и minmax-индексы
Хранят диапазоны значений по каждому парту —
чтобы быстро «пропускать» ненужные куски данных при чтении.
🎹 Как масштабируется ClickHouse?
🟡 Sharding (шардирование) — данные делятся на части по ключу, чтобы разные узлы обрабатывали свои диапазоны.
🟡 Replication (репликация) — каждая часть дублируется на другом сервере для отказоустойчивости.
🟡 Distributed-таблицы — объединяют шарды и позволяют выполнять запросы «как по одной большой таблице».
И всё это работает параллельно и прозрачно для пользователя.
ClickHouse — это философия «читать быстро и много».
Он не заменяет PostgreSQL или OLTP-базы —
он решает другую задачу: аналитику на огромных данных, где важна скорость чтения, а не запись.
🧱 Каждая таблица — part, каждый запрос — блоки, каждая секунда — миллионы строк.
Вот почему ClickHouse стал стандартом де-факто для аналитических систем.
Эта СУБД была создана в Яндексе, чтобы быстро обрабатывать огромные объёмы аналитических данных.
Она идеально подходит для метрик, логов, аналитики поведения пользователей и realtime-дашбордов.
❓ Почему ClickHouse стал необходим?
Обычные реляционные базы (PostgreSQL, MySQL) хранят данные построчно.
Это удобно для транзакций (добавить заказ, обновить статус),
но неэффективно, когда нужно просканировать миллиарды строк и посчитать среднее.
ClickHouse решает эту задачу:
Если запрос использует 3 столбца из 100, остальные даже не читаются.
ClickHouse всегда работает блоками, чтобы максимально использовать CPU-векторизацию.
Старые парты не изменяются, а фоновые потоки их потом объединяют (merge).
Это семейство движков, которое обеспечивает сортировку, дедупликацию и индексацию.
Например: ReplacingMergeTree, SummingMergeTree, AggregatingMergeTree — варианты под разные задачи.
В ClickHouse он нужен для сортировки и ускорения диапазонных запросов.
Хранят диапазоны значений по каждому парту —
чтобы быстро «пропускать» ненужные куски данных при чтении.
И всё это работает параллельно и прозрачно для пользователя.
ClickHouse — это философия «читать быстро и много».
Он не заменяет PostgreSQL или OLTP-базы —
он решает другую задачу: аналитику на огромных данных, где важна скорость чтения, а не запись.
🧱 Каждая таблица — part, каждый запрос — блоки, каждая секунда — миллионы строк.
Вот почему ClickHouse стал стандартом де-факто для аналитических систем.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥13👏4
В прошлом посте мы посмотрели на ClickHouse в целом: колоночное хранение, Block’и, Part’ы и MergeTree.
Теперь разберёмся, как именно ClickHouse читает данные так быстро — за счёт организации данных внутри Part и индексов.
Что такое гранула в ClickHouse?
То есть Part логически разбивается на блоки по ~8192 строк.
Если запрос зацепил хотя бы одну строку в грануле — на диск идёт чтение всего блока (но только нужных колонок).
ORDER BY (...) в MergeTree — это кластеризационный ключ. Он Определяет физический порядок строк внутри Part.
PRIMARY KEY обычно тот же самый ORDER BY и нужен для ускорения диапазонных запросов, а не для уникальности.
Primary index в ClickHouse — это разреженный индекс по гранулам: Для каждой гранулы хранится значение ключа ORDER BY первой строки. По WHERE ClickHouse выбирает только те гранулы, которые могут подойти, и читает с диска только их. Индекс не ищет строку, он помогает пропустить лишние куски данных.
Если min(price) > 1000, а запрос ищет price < 500, эту гранулу можно не читать вообще.
Если в set-индексе по грануле нет искомого значения — гранула отбрасывается.
Они позволяют не лезть в гранулу, если точно понятно, что внутри нет нужного токена / хеша.
Важно: skip-индексы работают поверх гранул, а не по строкам.
И их имеет смысл добавлять только там, где колонка часто участвует в фильтрах WHERE, и распределение значений позволяет реально отбрасывать куски данных.
Где это использовать?
Партиции позволяют сразу выбросить огромные куски таблицы (например, старые месяцы).
Первый столбец в ORDER BY обычно выбирают под самый частый и селективный фильтр (например, user_id, category_id, date — зависит от витрины).
Чем более «упорядочены» данные относительно реальных запросов, тем меньше гранул будет затронуто.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍6👀5❤3
На Redis держат кеш карточек товаров и профилей пользователей в маркетплейсах, очереди фоновых задач в бэкендах, хранение корзин и сессий в интернет-магазинах, realtime-счётчики просмотров и лайков в соцсетях.
Благодаря микросекундным задержкам и богатым структурам данных Redis стал универсальным инструментом для быстрого доступа и обработки данных в реальном времени.
RDB — периодические снимки памяти. Они компактные и быстрые, но для их создания Redis делает fork(). На больших инстансах (20–30 ГБ) форк может занимать секунду, и в это время мастер подвисает, увеличивая latency. Поэтому в проде RDB — всегда компромисс.
AOF — журнал всех операций записи. Он позволяет не потерять почти ничего, но увеличивает размер файлов и нагрузку на диск.
Было интересно? Ставьте 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍6❤5
А значит самое время для повторить теорию, и с новыми силами пойти в бой в новом году
ПОЭТОМУ собрал всё самое важное, чтобы не потерять!
Spark - https://t.me/dataengineerlab/21, https://t.me/dataengineerlab/25
Kafka - https://t.me/dataengineerlab/29
Airflow - https://t.me/dataengineerlab/33
Debizium - https://t.me/dataengineerlab/35
Streaming - https://t.me/dataengineerlab/36
Flink- https://t.me/dataengineerlab/37
Lakehouse - https://t.me/dataengineerlab/39
Data vault - https://t.me/dataengineerlab/44
Clickhouse - https://t.me/dataengineerlab/52, https://t.me/dataengineerlab/54
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25✍7🏆5
Trino — это распределённый движок.
Trino не хранит данные сам. Он читает их через connectors:
Hive, Iceberg, Delta, Kafka, ClickHouse, Postgres и десятки других.
Можно спокойно написать:
SELECT *
FROM hive.events e
JOIN postgres.users u ON e.user_id = u.id
JOIN clickhouse.orders o ON o.user_id = u.id;
И всё это выполнится в одном SQL-запросе.
Trino читает данные батчами, работает с колонками и активно использует CPU cache.
Минимум overhead — максимум скорости для агрегаций, join’ов и window-функций.
Поэтому Trino отлично чувствует себя на Parquet / ORC / Iceberg.
Trino умеет:
В результате сложные аналитические запросы выполняются на порядки быстрее, чем «в лоб».
Trino очень быстрый, потому что активно использует память.
Но:
плохо настроенные запросы → OOM
JOIN без фильтров → боль
Поэтому в проде важны:
memory limits, query queues, resource groups и грамотный SQL.
Было интересно? Ставьте 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥35👍9🏆6❤2
Рынок с каждым днём становится все жесче, компании неустанно повышают требования к кандидатам, и без опытного наставника войти в специальность становится все сложнее.
Какие навыки необходимы ? Как себя преподнести? Что хотят услышать от меня работодатели? Если вы тысячу раз задавали себе эти вопросы, и все никак не можете на них ответить — тогда вам точно ко мне!
Также, за год работы я
Что ждёт вас:
Анализ вашего уровня → индивидуальный roadmap → подготовка к собеседованиям → получение оффера → поддержка на испытательном сроке. Я не бросаю после контракта — я с вами до конца адаптации.
— Решаем реальные практические кейсы, которые встречаются в работе
— Разбираем реальные вопросы с собеседований в топовые компании (с готовыми ответами)
— Готовимся не только к технической части, но и к тому, как себя подать, прокачиваем soft skills
— Мок-собеседования в боевых условиях
— Разбор прошедших собеседований: что сработало, где ошибки, как исправить
— Правка резюме под конкретный стек и позицию
— Помощь с выбором вакансий и откликами
Вы получаете доступ к активному сообществу — нетворкинг, обмен опытом, поддержка людей на одной волне с вами. Это работает.
Если ты все еще сомневаешься и думаешь, довериться ли мне — заходи на мою страничку, тут ты найдешь больше информации обо мне!
А если ты уже полон решимости, то не теряй времени и пиши мне в личку: @ampodvalniy — обсудим!
Отзывы:
https://t.me/it_mentors/5628
https://t.me/it_mentors/5817
https://t.me/it_mentors/5672
https://t.me/it_mentors/5664
Цены:
Обучение с нуля до оффера:
60000₽ +120% от оффера
Консультация: 6000₽
Составление резюме: 6000₽
+79036383742
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
IT менторы - отзывы на офферы
Отзыв на ментора: ampodvalniy #ampodvalniy
Специальность: Data Engineer #data_engineer
Хочу сказать большое спасибо за профессиональное и структурированное менторство! Программа была идеально подобрана под мои цели: Переход на более высокооплачиваемое место…
Специальность: Data Engineer #data_engineer
Хочу сказать большое спасибо за профессиональное и структурированное менторство! Программа была идеально подобрана под мои цели: Переход на более высокооплачиваемое место…
👍11👎5🔥5💯3❤2🤨1
👀4✍3🔥3🤨1
Рекомендую статью https://t.me/Shust_DE по Airflow🐱 🐱 🐱 . Очень подробно разобрал, мне кажется хватит для подготовки к любому собесу‼️ и помощи в работе🥳 . В общем читаем, ознакамливаемся и набирается опыта😎 😎 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍10⚡4❤1
Дата Инженер Лаб | Артём Подвальный pinned «➡️ Менторство в Data Engineering Рынок с каждым днём становится все жесче, компании неустанно повышают требования к кандидатам, и без опытного наставника войти в специальность становится все сложнее. Какие навыки необходимы ? Как себя преподнести? Что хотят…»
Parquet и ORC — что это вообще такое❓ ❓ ❓
Сегодня оба формата воспринимаются как стандарт для Data Lake.
Но появились они как ответ на реальные боли Hadoop-эры.
Начало 2010-х.
В экосистеме Apache Hadoop данные лежат в HDFS, аналитика делается через Apache Hive.
Проблема простая:
🔴 CSV / TSV занимают много места
🔴 Full table scan работает медленно
🔴 Компрессия слабая
🔴 Нет нормальной статистики по данным
🔴 Hive буквально читает всё подряд.
Команда Hive понимает: нужен формат, который будет ускорять аналитические запросы.
Так в 2013 году появляется Apache ORC(Optimized Row Columnar).
Что такое ORC?🤔
📝 ORC — это колоночный формат хранения данных. Файл в ORC логически делится на Stripes — крупные блоки данных, внутри которых хранятся сами колоночные данные и индексная информация. В конце файла находится Footer с общей метаинформацией и PostScript, содержащий служебные данные о структуре файла и параметрах компрессии. Внутри ORC хранится статистика по данным — min/max индексы по колонкам, встроенные Bloom filters для ускорения фильтрации, а также используется продвинутая схема компрессии, позволяющая эффективно сжимать данные разных типов. Изначально ORC создавался как «ускоритель Hive» и отлично подходит для тяжёлых DWH-нагрузок и сценариев с full table scan, где важно максимально оптимизировать чтение больших объёмов данных.
Параллельно Cloudera и Twitter понимают: Нужен формат, который будет работать не только с Hive. В том же 2013 году появляется Apache Parquet.
Его идея — универсальность:
🟣 поддержка разных движков
🟣 сложные nested структуры
🟣 хорошая совместимость
🟣 кросс-платформенность
Что такое Parquet🤔
📝 Parquet — это колоночный формат хранения данных, в котором файл логически разделён на Row Groups — крупные блоки строк, внутри которых данные организованы по колонкам в виде Column Chunks, а минимальной единицей хранения являются Pages. В конце файла находится Footer, содержащий схему и метаданные. В footer хранится статистика по каждой колонке: минимальные и максимальные значения, количество строк, число null-значений и другая служебная информация.
Когда движок, например Apache Spark, выполняет запрос, он сначала читает footer, анализирует статистику и определяет, какие Row Groups можно пропустить. Затем он считывает только те блоки, где потенциально есть подходящие данные, и загружает только нужные колонки. Такой механизм называется predicate pushdown, column pruning и data skipping. Благодаря этому существенно уменьшается объём чтения с диска и снижается нагрузка на CPU и сеть, поэтому Parquet в разы быстрее обычных строковых форматов вроде CSV.
🐱 Parquet и ORC появились не ради «ещё одного формата». Они стали ответом на практическую проблему: читать терабайты CSV — дорого, медленно и неэффективно. Строковые форматы заставляют движок загружать весь файл целиком, даже если в запросе нужны всего несколько колонок.
Колоночное хранение изменило экономику аналитики: стало меньше I/O, меньше нагрузки на CPU, сократился shuffle и в целом подешевела инфраструктура. Движки начали читать только нужные колонки и пропускать ненужные блоки данных, что кратно ускорило запросы.
Именно поэтому сегодня почти любой современный Data Lake строится поверх Parquet (реже ORC) — это уже не просто формат, а стандарт индустрии.
Сегодня оба формата воспринимаются как стандарт для Data Lake.
Но появились они как ответ на реальные боли Hadoop-эры.
Начало 2010-х.
В экосистеме Apache Hadoop данные лежат в HDFS, аналитика делается через Apache Hive.
Проблема простая:
Команда Hive понимает: нужен формат, который будет ускорять аналитические запросы.
Так в 2013 году появляется Apache ORC(Optimized Row Columnar).
Что такое ORC?
Параллельно Cloudera и Twitter понимают: Нужен формат, который будет работать не только с Hive. В том же 2013 году появляется Apache Parquet.
Его идея — универсальность:
Что такое Parquet
Когда движок, например Apache Spark, выполняет запрос, он сначала читает footer, анализирует статистику и определяет, какие Row Groups можно пропустить. Затем он считывает только те блоки, где потенциально есть подходящие данные, и загружает только нужные колонки. Такой механизм называется predicate pushdown, column pruning и data skipping. Благодаря этому существенно уменьшается объём чтения с диска и снижается нагрузка на CPU и сеть, поэтому Parquet в разы быстрее обычных строковых форматов вроде CSV.
Колоночное хранение изменило экономику аналитики: стало меньше I/O, меньше нагрузки на CPU, сократился shuffle и в целом подешевела инфраструктура. Движки начали читать только нужные колонки и пропускать ненужные блоки данных, что кратно ускорило запросы.
Именно поэтому сегодня почти любой современный Data Lake строится поверх Parquet (реже ORC) — это уже не просто формат, а стандарт индустрии.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16⚡9🤯4❤3
Channel name was changed to «Data Engineer Lab | Артём Подвальный»
Рынок Data Engineering в 2026 — это уже совсем другой уровень!
За этот год требования значительно взлетели.
Теперь на собеседованиях мало просто «понимать технологии» — от тебя ждут реального опыта, глубоких деталей и умения рассказать, как ты решал настоящие проблемы в продакшене.
Типичные вопросы сейчас:
⏺ Какой самый сложный ETL-процесс тебе приходилось разрабатывать?
⏺ Как организована поставка в прод?
⏺ Сколько строк в секунду реально лилось через пайплайн?
⏺ На чём был реализован процесс (Spark, Flink, Airflow, dbt, Kafka Streams…)?
⏺ Как проходила миграция данных / схем / хранилища?
⏺ Какие требования бизнеса / SLA стояли?
⏺ Какая была твоя роль на проекте ?
Вкатиться самостоятельно стало в разы сложнее.
Поверхностные знания уже не прокатывают — работодатели копают глубоко и хотят слышать конкретные истории успеха и фейлов.
Но хорошая новость: за последний месяц я с командой проработал много реального материала:
🔘 Собрали настоящие кейсы из жизни дата-инженеров
🔘 Разобрали вопросы по компаниям (от Big Tech до российских продуктовых)
🔘 Составили мощные легенды и структурированные рассказы о проектах
🔘 Подготовили ответы, которые реально цепляют интервьюеров
Результат? Люди проходят сложные этапы и получают долгожданные офферы❕ ❕ ❕
Хочешь такую же детальную легенду под себя + уверенный рассказ о проектах, который не развалится под давлением?
Приходи на менторство.
Последние отзывы от ребят:
https://t.me/it_mentors/6596
https://t.me/it_mentors/6514
Пиши в личку, обсудим твою ситуацию:
В 2026 году офферы берут не те, кто «знает теорию», а те, кто может уверенно рассказать «как я это делал в проде и что было сложно».
Давай сделаем так, чтобы это был ты❕ ❕ ❕
За этот год требования значительно взлетели.
Теперь на собеседованиях мало просто «понимать технологии» — от тебя ждут реального опыта, глубоких деталей и умения рассказать, как ты решал настоящие проблемы в продакшене.
Типичные вопросы сейчас:
Вкатиться самостоятельно стало в разы сложнее.
Поверхностные знания уже не прокатывают — работодатели копают глубоко и хотят слышать конкретные истории успеха и фейлов.
Но хорошая новость: за последний месяц я с командой проработал много реального материала:
Результат? Люди проходят сложные этапы и получают долгожданные офферы
Хочешь такую же детальную легенду под себя + уверенный рассказ о проектах, который не развалится под давлением?
Приходи на менторство.
Последние отзывы от ребят:
https://t.me/it_mentors/6596
https://t.me/it_mentors/6514
Пиши в личку, обсудим твою ситуацию:
В 2026 году офферы берут не те, кто «знает теорию», а те, кто может уверенно рассказать «как я это делал в проде и что было сложно».
Давай сделаем так, чтобы это был ты
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8😁8💯6👍5🤨5❤2
Как работает CDC pipeline?
🌐 В современных дата-платформах данные редко грузят батчами раз в сутки.
Чаще используют CDC (Change Data Capture) — потоковое получение всех изменений из базы.
Разберём классический пайплайн:
MySQL → Debezium → Kafka → ClickHouse
1️⃣ В MySQL все изменения пишутся в binlog (binary log) - по сути журнал транзакций базы.
Каждая операция фиксируется как событие: INSERT,UPDATE,DELETE
2️⃣ Debezium — это CDC-коннектор (обычно работает через Kafka Connect)
Он:
➡️ подключается к MySQL
➡️ читает binlog
➡️ превращает события в Kafka messages
➡️ пишет события в Kafka топики
3️⃣ Kafka: транспортный слой между OLTP и аналитикой которая позволяет довольно продолжительное время накапливать историю
4️⃣ Далее все направляется в ClickHouse: аналитическое хранилище
Он читает Kafka через Kafka Engine или ingestion сервис.
Выглядит это примерно так:
Kafka topic
↓
Kafka Engine Table
↓
Materialized View
↓
MergeTree таблица
🧐 Почему такая архитектура стала стандартом
Она даёт:
➡️ Near real-time данные
➡️ минимальную нагрузку на OLTP
➡️ возможность replay истории
➡️ масштабируемость
Было полезно? Ставьте 🔥
#dataengineering #cdc #debezium #kafka
Чаще используют CDC (Change Data Capture) — потоковое получение всех изменений из базы.
Разберём классический пайплайн:
MySQL → Debezium → Kafka → ClickHouse
Каждая операция фиксируется как событие: INSERT,UPDATE,DELETE
Он:
Он читает Kafka через Kafka Engine или ingestion сервис.
Выглядит это примерно так:
Kafka topic
↓
Kafka Engine Table
↓
Materialized View
↓
MergeTree таблица
Она даёт:
Было полезно? Ставьте 🔥
#dataengineering #cdc #debezium #kafka
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥38⚡6💯3❤2
Я — Артём Подвальный. Помогаю разобраться в работе инструментов обработки больших данных и как происходят эти процессы в компаниях. Здесь я стараюсь простым языком объяснить самое важное что надо знать начинающему DE и получить заветный оффер.
Самое полезное, что уже можно найти в канале:
Легендарный Roadmap для DE. Проверь, всё ли из этого ты знаешь
Давай общаться!
Задавай вопросы в комментариях к любому посту или пиши мне лично: @ampodvalniy.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤5🏆5🤨2
Channel name was changed to «Дата Инженер Лаб | Артём Подвальный»
