<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Data Engineering - DataTalks.RU. Data Engineering / DWH / Data Pipeline</title>
	<atom:link href="https://datatalks.ru/category/data-engineering/feed/" rel="self" type="application/rss+xml" />
	<link>https://datatalks.ru/category/data-engineering/</link>
	<description>RoadMap для инженера данных. Дорожная карта по инструментам Data Engineer</description>
	<lastBuildDate>Mon, 09 Feb 2026 17:58:24 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.1</generator>

<image>
	<url>https://datatalks.ru/wp-content/uploads/2024/12/cropped-logo_datatalks-32x32.png</url>
	<title>Data Engineering - DataTalks.RU. Data Engineering / DWH / Data Pipeline</title>
	<link>https://datatalks.ru/category/data-engineering/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Процессы сериализации и десериализации данных. Форматы сериализации</title>
		<link>https://datatalks.ru/data-serialization-and-deserialization/</link>
					<comments>https://datatalks.ru/data-serialization-and-deserialization/#respond</comments>
		
		<dc:creator><![CDATA[Data Engineer (Admin)]]></dc:creator>
		<pubDate>Sun, 15 Jun 2025 18:44:00 +0000</pubDate>
				<category><![CDATA[Data Engineering]]></category>
		<category><![CDATA[Avro]]></category>
		<category><![CDATA[BSON]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[JSONL]]></category>
		<category><![CDATA[Parquet]]></category>
		<category><![CDATA[Protobuf]]></category>
		<category><![CDATA[Thrift]]></category>
		<category><![CDATA[YAML]]></category>
		<category><![CDATA[демаршалинг]]></category>
		<category><![CDATA[Десериализация]]></category>
		<category><![CDATA[маршалинг]]></category>
		<category><![CDATA[Сериализация]]></category>
		<guid isPermaLink="false">https://datatalks.ru/?p=844</guid>

					<description><![CDATA[<p>Введение в сериализацию Что такое сериализация и десериализация? Сериализация (маршалинг) — это процесс преобразования структуры данных или объекта в формат (текстовый или бинарный), пригодный для хранения или передачи (например, в файл, по сети или в базу данных) в рамках взаимодействия между различными системами и/или языками программирования. Форматы сериализации бывают в виде текста (например, JSON, XML, [&#8230;]</p>
<p>Сообщение <a href="https://datatalks.ru/data-serialization-and-deserialization/">Процессы сериализации и десериализации данных. Форматы сериализации</a> появились сначала на <a href="https://datatalks.ru">DataTalks.RU. Data Engineering / DWH / Data Pipeline</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Введение в сериализацию</h1>
<h2>Что такое сериализация и десериализация?</h2>
<p><a href="https://datatalks.ru/wp-content/uploads/2025/06/serialization_deserialization.jpeg"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-1508" src="https://datatalks.ru/wp-content/uploads/2025/06/serialization_deserialization.jpeg" alt="" width="1138" height="579" srcset="https://datatalks.ru/wp-content/uploads/2025/06/serialization_deserialization.jpeg 1138w, https://datatalks.ru/wp-content/uploads/2025/06/serialization_deserialization-300x153.jpeg 300w, https://datatalks.ru/wp-content/uploads/2025/06/serialization_deserialization-1024x521.jpeg 1024w, https://datatalks.ru/wp-content/uploads/2025/06/serialization_deserialization-768x391.jpeg 768w, https://datatalks.ru/wp-content/uploads/2025/06/serialization_deserialization-450x229.jpeg 450w, https://datatalks.ru/wp-content/uploads/2025/06/serialization_deserialization-780x397.jpeg 780w" sizes="(max-width: 1138px) 100vw, 1138px" /></a></p>
<p><strong>Сериализация (маршалинг)</strong> — это процесс преобразования структуры данных или объекта в формат (текстовый или бинарный), пригодный для хранения или передачи (например, в файл, по сети или в базу данных) в рамках взаимодействия между различными системами и/или языками программирования. Форматы сериализации бывают в виде текста (например, <code>JSON</code>, <code>XML</code>, <code>YAML</code>) или в бинарном виде (например, <code>Protobuf</code>, <code>Avro</code>, <code>Thrift</code>, <code>BSON</code>).</p>
<p><strong>Главная цель сериализации:</strong> Сделать сложную структуру данных переносимой и пригодной к восстановлению, независимо от среды исполнения (язык, платформа, система).</p>
<p><strong>Десериализация (демаршалинг)</strong> — это процесс реконструкции структуры данных или объекта из его сериализованной формы. Он включает в себя интерпретацию сериализованных данных и создание эквивалентного объекта или структуры данных.</p>
<p><strong>Цель десериализации:</strong> Получить рабочую структуру данных из сохранённого/переданного формата и использовать её в коде на любом языке.</p>
<p><a href="https://datatalks.ru/wp-content/uploads/2025/06/serialization_process.jpeg"><img decoding="async" class="aligncenter size-full wp-image-1509" src="https://datatalks.ru/wp-content/uploads/2025/06/serialization_process.jpeg" alt="" width="971" height="191" srcset="https://datatalks.ru/wp-content/uploads/2025/06/serialization_process.jpeg 971w, https://datatalks.ru/wp-content/uploads/2025/06/serialization_process-300x59.jpeg 300w, https://datatalks.ru/wp-content/uploads/2025/06/serialization_process-768x151.jpeg 768w, https://datatalks.ru/wp-content/uploads/2025/06/serialization_process-450x89.jpeg 450w, https://datatalks.ru/wp-content/uploads/2025/06/serialization_process-780x153.jpeg 780w" sizes="(max-width: 971px) 100vw, 971px" /></a></p>
<p><span style="color: #ff6600;"><strong>Почему сериализация важна</strong></span></p>
<ul>
<li><strong>Унификация данных:</strong> Форматы сериализации создают единый стандарт, который понимают разные языки и системы.</li>
<li><strong>Межъязыковое взаимодействие:</strong> Службы на Python, Java, Go и других языках могут обмениваться данными, если они сериализованы в понятный им формат (например, JSON, Protobuf).</li>
<li><strong>Устойчивость к хранению:</strong> Сериализация позволяет сохранять состояние объектов (например, в файлах, кэше или базах) и восстанавливать их позже.</li>
<li><strong>Гибкость:</strong> можно сериализовать &#8212; <strong>примитивы</strong> (строки, числа), <strong>сложные структуры</strong> (списки, словари, объекты), и даже <strong>связи между объектами</strong> (в некоторых форматах, например Pickle или Thrift).</li>
</ul>
<h3><strong>Сериализация vs Маршалинг</strong></h3>
<p>Хотя термины сериализация и маршалинг часто используются как взаимозаменяемые, для разных людей они могут иметь немного разное значение. В некоторых кругах сериализация касается только части перевода, в то время как маршалинг также касается перемещения данных из одного места в другое.</p>
<p>Точное значение каждого термина зависит от того, кого вы спрашиваете. Например, программисты Java склонны использовать слово «маршалинг» в контексте удаленного вызова методов (RMI). В Python «маршалинг» относится почти исключительно к формату, используемому для хранения скомпилированных инструкций байт-кода.</p>
<p>Статья на вики <a href="https://en.wikipedia.org/wiki/Marshalling_(computer_science)#Comparison_with_serialization" target="_blank" rel="noopener">&#171;Marshalling Comparison with serialization&#187;</a>.</p>
<h3><strong>Как работает сериализация: из структуры — в байты/текст — обратно</strong></h3>
<p>Когда программа работает, данные хранятся в оперативной памяти в виде объектов, структур, массивов и т.д. Эти данные нужно преобразовать во внешний формат, пригодный для хранения или передачи. После сериализации структура становится линейной — последовательностью символов или байтов, которую можно передать или сохранить.</p>
<p>Когда нужно использовать эти данные снова — они десериализуются, то есть преобразуются обратно в структуру, понятную языку программирования.</p>
<p><strong>Обобщённая схема:</strong></p><pre class="urvanov-syntax-highlighter-plain-tag">[ Объект / структура данных ]
           ↓ сериализация
[ Линейный формат: JSON / байты / XML ]
           ↓ (отправка / хранение)
[ Передача / сохранение / чтение из файла ]
           ↓ десериализация
[ Объект / структура данных (в памяти) ]</pre><p></p>
<h2>Форматы сериализации</h2>
<p>В распоряжении инженеров данных имеется множество алгоритмов и форматов сериализации. Хотя обилие вариантов становится серьезным источником проблем при выполнении инженерии данных, они также открывают широкие возможности для повышения производительности. Мы сталкивались с ситуациями, когда производительность работы повышалась в 100 раз просто за счет перехода сериализации от <code>CSV</code> к <code>Parquet</code>. По мере продвижения данных по конвейеру инженеры также будут управлять <strong>повторной сериализацией</strong> &#8212; преобразованием данных из одного формата в другой. Иногда инженерам данных не остается ничего кроме принятия данных в древнем, неприглядном виде. Они должны разработать <strong>процессы десериализации</strong> этого формата и обработки исключений, а затем очистить и преобразовать данные для согласованной и быстрой последующей обработки и потребления.</p>
<h3>Сериализация на основе строк</h3>
<p>Как следует из названия, <strong>сериализация на основе строк</strong> организует данные по строкам. Формат CSV представляет собой архетипический формат на основе строк. Для полуструктурированных данных (объектов данных, поддерживающих вложенность и вариативность схемы) сериализация на основе строк подразумевает хранение каждого объекта как единицы.</p>
<h4><strong>CSV: Нестандартный стандарт</strong></h4>
<p>Это формат сериализации, заслуживший нелюбовь инженеров данных. <strong>Термин CSV (Comma-Separated Values &#8212; файлы данных с разделителями-запятыми)</strong> &#8212; это, по сути, общее обозначение разделенного текста, но существует гибкость в соглашениях об экранировании, символах кавычек, разделителях и т.д.</p>
<p>Инженерам данных следует избегать использования СSV-файлов в конвейерах, поскольку они подвержены большому количеству ошибок и имеют низкую производительность. Инженерам часто приходится использовать формат CSV для обмена данными с неподконтрольными им системами и бизнес-процессами. CSV стал распространенным форматом для архивирования данных. Если вы используете CSV для архивирования, включите полное техническое описание конфигурации сериализации для ваших файлов, чтобы будущие потребители могли получить эти данные.</p>
<h4><strong>XML</strong></h4>
<p><strong>Расширяемый язык разметки (Extensible Markup Language, XML)</strong> был популярен во времена появления HTML и Интернета, но сейчас он рассматривается как устаревший. Он, как правило, медленно десериализуется и сериализуется для приложений из сферы инженерии данных. <strong>XML</strong> &#8212; еще один стандарт, с которым часто приходится взаимодействовать инженерам данных при обмене данными с унаследованными системами и программным обеспечением. JSON в значительной степени заменил XML для сериализации объектов в виде обычного текста.</p>
<h4><strong>JSON и JSONL</strong></h4>
<p><strong>JavaScript Object Notation (JSON)</strong> стал новым стандартом для обмена данными через API, а также чрезвычайно популярным форматом для хранения данных. В контексте баз данных популярность JSON начала быстро расти с появлением <strong>MongoDB</strong> и других хранилищ документов. Такие базы данных, как <strong>Snowtlake</strong>, <strong>BigQuery</strong> и <strong>SQL Server</strong>, также имеют широкую встроенную поддержку, что облегчает обмен данными между приложениями, API и системами баз данных.</p>
<p><strong>JSON Lines (JSONL) </strong>&#8212; это специализированная версия JSON для хранения объемных полуструктурированных данных в файлах. JSONL хранит последовательность JSОN-объектов, причем объекты разграничиваются разрывами строк. Чрезвычайно удобный формат для хранения данных сразу после их что JSONL &#8212; поглощения из API или приложений. Однако многие столбцовые форматы обеспечивают значительно более высокую производительность. Рассмотрите возможность перехода на другой формат для промежуточных этапов конвейера и предоставления данных.</p>
<p><strong>Пример JSONL:</strong></p>
<p><a href="https://datatalks.ru/wp-content/uploads/2025/06/jsonl.jpeg"><img decoding="async" class="aligncenter size-full wp-image-1511" src="https://datatalks.ru/wp-content/uploads/2025/06/jsonl.jpeg" alt="" width="1276" height="403" srcset="https://datatalks.ru/wp-content/uploads/2025/06/jsonl.jpeg 1276w, https://datatalks.ru/wp-content/uploads/2025/06/jsonl-300x95.jpeg 300w, https://datatalks.ru/wp-content/uploads/2025/06/jsonl-1024x323.jpeg 1024w, https://datatalks.ru/wp-content/uploads/2025/06/jsonl-768x243.jpeg 768w, https://datatalks.ru/wp-content/uploads/2025/06/jsonl-450x142.jpeg 450w, https://datatalks.ru/wp-content/uploads/2025/06/jsonl-780x246.jpeg 780w" sizes="(max-width: 1276px) 100vw, 1276px" /></a></p>
<h4><strong>Avro</strong></h4>
<p><strong>Avro</strong> &#8212; это формат данных на основе строк. Он предназначен для выполнения <code>RPC</code> и сериализации данных. <strong>Avro</strong> кодирует данные в двоичный формат, а метаданные схемы указываются в формате <strong>JSON</strong>.</p>
<p><a href="https://datatalks.ru/wp-content/uploads/2025/06/avro.jpeg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1513" src="https://datatalks.ru/wp-content/uploads/2025/06/avro.jpeg" alt="" width="913" height="348" srcset="https://datatalks.ru/wp-content/uploads/2025/06/avro.jpeg 913w, https://datatalks.ru/wp-content/uploads/2025/06/avro-300x114.jpeg 300w, https://datatalks.ru/wp-content/uploads/2025/06/avro-768x293.jpeg 768w, https://datatalks.ru/wp-content/uploads/2025/06/avro-450x172.jpeg 450w, https://datatalks.ru/wp-content/uploads/2025/06/avro-780x297.jpeg 780w" sizes="(max-width: 913px) 100vw, 913px" /></a></p>
<p>Avro популярен в экосистеме Hadoop, а также поддерживается различными инструментами для работы с облачными данными.</p>
<h3><strong>Сериализация столбцов</strong></h3>
<p>Рассмотренные до сих пор форматы сериализации ориентированы на работу со строками. Данные кодируются в виде полных отношений (XML и JSON), последовательно записываемых в файлы.<br />
При сериализации столбцов, организация данных, по сути, сводится к хранению каждого столбца в отдельном наборе файлов. Одним из очевидных преимуществ хранения на основе столбцов можно считать возможность считывания данных только из подмножества полей, а не выполнять считывание сразу всех строк. Такой сценарий часто встречается в аналитических приложениях и позволяет значительно сократить объем данных, требующих сканирования для выполнения запроса.</p>
<p>При хранении данных в виде столбцов одинаковые значения также располагаются рядом друг с другом, что позволяет эффективно кодировать столбцовые данные.</p>
<p>Один из распространенных методов &#8212; поиск повторяющихся значений и их токенизация. Это простой, но очень эффективный метод сжатия для столбцов с большим числом повторений.<br />
Даже если столбцы не содержат большого количества повторяющихся значений, в них может наблюдаться высокая избыточность. Предположим, что мы организовали сообщения службы поддержки клиентов в один столбец данных. Скорее всего, в этих сообщениях мы снова и снова будем встречать одни и те же темы и словосочетания, что позволяет алгоритмам сжатия данных достичь высокого коэффициента. По этой причине хранение на основе столбцов обычно сочетается со сжатием, что позволяет максимально эффективно использовать ресурсы диска и пропускной способности сети.</p>
<p><strong>У хранения на основе столбцов и сжатия есть и определенные недостатки.</strong></p>
<p>Отсутствие возможности легко получить доступ к отдельным записям данных влечет за собой необходимость восстанавливать записи путем считывания данных из нескольких файлов на основе столбцов.</p>
<p>Изменение записей также сопряжено с определенными трудностями. Чтобы изменить одно поле в одной записи, мы должны распаковать файл на основе столбцов, изменить его, снова запаковать и записать обратно в хранилище. Чтобы избежать полной перезаписи столбцов при каждом обновлении, столбцы разбиваются на множество файлов, обычно с использованием стратегий разбиения и кластеризации. Таким образом можно организовать данные в соответствии с шаблонами запросов и изменений для таблицы. Но даже в этом случае накладные расходы на обновление одной строки просто чудовищны.</p>
<p>Базы данных на основе столбцов плохо подходят для транзакционных рабочих нагрузок, поэтому в транзакционных базах данных обычно используется та или иная форма хранения, ориентированная на строки или записи.</p>
<h4><strong>Parquet</strong></h4>
<p><strong>Parquet</strong> хранит данные в формате столбцов и предназначен для обеспечения отличной производительности чтения и записи в среде озера данных. Формат Parquet решает несколько часто возникающих у инженеров данных проблем.</p>
<p><a href="https://datatalks.ru/wp-content/uploads/2025/06/parquet_file.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1515" src="https://datatalks.ru/wp-content/uploads/2025/06/parquet_file.png" alt="" width="1148" height="945" srcset="https://datatalks.ru/wp-content/uploads/2025/06/parquet_file.png 1148w, https://datatalks.ru/wp-content/uploads/2025/06/parquet_file-300x247.png 300w, https://datatalks.ru/wp-content/uploads/2025/06/parquet_file-1024x843.png 1024w, https://datatalks.ru/wp-content/uploads/2025/06/parquet_file-768x632.png 768w, https://datatalks.ru/wp-content/uploads/2025/06/parquet_file-450x370.png 450w, https://datatalks.ru/wp-content/uploads/2025/06/parquet_file-780x642.png 780w" sizes="(max-width: 1148px) 100vw, 1148px" /></a></p>
<p>В отличие от CSV, данные в кодировке Parquet содержат информацию о схеме и поддерживают вложенные данные.</p>
<p>Кроме того, Parquet &#8212; переносимый формат: если такие базы данных, как BigQuery и Snowflake, сериализуют данные в собственных форматах на основе столбцов и обеспечивают отличную производительность запросов к данным, хранящимся внутри, то при взаимодействии с внешними инструментами происходит огромный спад производительности. Данные должны быть десериализованы, пересортированы в удобный для обмена формат и экспортированы для использования таких инструментов для работы с озерами данных, как Spark и Presto.</p>
<p>Раrquеt-файлы в озере данных могут оказаться лучшим вариантом по сравнению с запатентованными облачными хранилищами данных в многоязыковой инструментальной среде.<br />
Формат Parquet используется с различными алгоритмами сжатия, особенно популярны оптимизированные по скорости алгоритмы, такие как <code>Snappy</code> (рассматривается далее в этом приложении).</p>
<h4><strong>ORC</strong></h4>
<p><strong>Optimized Row Columnar (ORC)</strong> &#8212; это столбцовый формат хранения данных, аналогичный Parquet. ORC был очень популярен в системе Apache Hive. Хотя он по прежнему широко используется, в целом мы видим его гораздо реже, чем Apache Parquet, и он пользуется несколько меньшей поддержкой в современных инструментах облачной экосистемы. Например, <strong>Snowtlake</strong> и <strong>BigQuery</strong> поддерживают импорт и экспорт файлов Parquet. Они также могут считывать данные из файлов ORC, но ни один из указанных инструментов не может экспортировать их в этот формат.</p>
<p><a href="https://datatalks.ru/wp-content/uploads/2025/06/orc_file.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1516" src="https://datatalks.ru/wp-content/uploads/2025/06/orc_file.png" alt="" width="1119" height="1058" srcset="https://datatalks.ru/wp-content/uploads/2025/06/orc_file.png 1119w, https://datatalks.ru/wp-content/uploads/2025/06/orc_file-300x284.png 300w, https://datatalks.ru/wp-content/uploads/2025/06/orc_file-1024x968.png 1024w, https://datatalks.ru/wp-content/uploads/2025/06/orc_file-768x726.png 768w, https://datatalks.ru/wp-content/uploads/2025/06/orc_file-450x425.png 450w, https://datatalks.ru/wp-content/uploads/2025/06/orc_file-780x737.png 780w" sizes="(max-width: 1119px) 100vw, 1119px" /></a></p>
<h4><strong>Apache Arrow или сериализация в памяти</strong></h4>
<p>Программное обеспечение может хранить данные в сложных объектах, разбросанных по памяти и связанных указателями, или в более упорядоченных, плотно упакованных структурах, таких как массивы в Фортране и Си.</p>
<p>Как правило, плотно упакованные структуры данных в памяти ограничивались простыми типами (например, фиксированной ширины (например, строками INT64) или структурами данных фиксированной ширины).</p>
<p>Более сложные структуры (например, JSОN-документы) не могут плотно храниться в памяти и требуют сериализации для хранения и передачи между системами.</p>
<p>Идея фреймворка Apache Arrow 1 заключается в том, чтобы переосмыслить сериализацию,  используя формат данных, подходящий как для обработки в памяти, так и для экспорта.</p>
<p>Это позволяет избежать накладных расходов на сериализацию и десериализацию &#8212; мы просто используем один и тот же формат для обработки в памяти, экспорта по сети и долговременного хранения. Arrow базируется на столбцовом хранении, где каждый столбец, по сути, получает свои собственные фрагменты памяти. Для вложенных данных мы используем технику измельчения, помогающую сопоставлять каждое место в схеме JSОN-документов с отдельным столбцом.</p>
<p>Эта техника означает, что можно хранить файл данных на диске, передавать его непосредственно в адресное пространство программы, используя виртуальную память, и начинать выполнять запрос к данным без накладных расходов на десериализацию. Фактически мы можем подкачивать фрагменты файла в память помере его сканирования, а затем выгружать их обратно, чтобы избежать нехватки памяти при работе с большими наборами данных.</p>
<p>Одно из очевидных неудобств при таком подходе заключается в том, что разные языки программирования по-разному сериализуют данные. Для решения этой проблемы в рамках проекта Arrow были созданы программные библиотеки для различных языков программирования (включая С, Go, Java, JavaScript, МА TLAB, Python, R и Rust), позволяющие этим языкам взаимодействовать с данными Arrow в памяти.</p>
<p>В некоторых случаях эти библиотеки используют интерфейс между выбранным языком и низкоуровневым кодом на другом языке (например, С) для чтения и записи из Arrow. Это обеспечивает высокую совместимость между языками без дополнительных накладных расходов на сериализацию.</p>
<p>Например, программа на языке Scala может использовать библиотеку Java для записи данных Arrow, а затем передать их в виде сообщения программе на языке Python.</p>
<p>Arrow быстро находит применение в различных популярных фреймворках, таких как Apache Spark. Компания Arrow также выпустила новый продукт для хранения данных &#8212; Dremio. Он представляет собой платформу, состоящую из системы запросов и хранилища данных, построенную на основе сериализации Arrow для поддержки быстрых запросов.</p>
<h3><strong>Гибридная сериализация</strong></h3>
<p>Мы используем термин «гибридная сериализация» для обозначения технологий, сочетающих несколько методов сериализации или интегрирующих сериализацию с дополнительными уровнями абстракции, такими как управление схемами. В качестве примеров приведем <code>Apache Hudi</code> и <code>Apache Iceberg</code>.</p>
<h4><strong>Hudi</strong></h4>
<p><strong>Hudi означает Hadoop Upserts Deletes Incrementals.</strong> Эта технология управления таблицами сочетает в себе несколько методов сериализации, что обеспечивает производительность столбцовых баз данных при аналитических запросах и одновременно поддерживает Hudi &#8212; атомарные, транзакционные обновления.</p>
<p><strong>Типичное приложение &#8212; это таблица, обновляемая из потока CDC, поступающего из базы данных транзакционного приложения.</strong> Поток перехватывается в формате сериализации, ориентированном на строки, а основная часть таблицы сохраняется в столбцовом формате. Запрос работает как со столбцами, так и со строками, возвращая результаты для текущего состояния таблицы. Периодически выполняется процесс переупаковки, объединяющий строковые и столбцовые файлы в обновленные файлы на основе столбцов для повышения эффективности запросов.</p>
<h4><strong>lceberg</strong></h4>
<p><strong>Iceberg представляет собой технологию управления таблицами.</strong> Iceberg может отслеживать все файлы, составляющие таблицу. Этот формат также позволяет отслеживать файлы в каждом моментальном снимке таблицы с течением времени, что дает возможность перемещаться во времени по таблице в среде озера данных. <strong>lceberg</strong> поддерживает эволюцию схемы и может легко управлять таблицами петабайтного масштаба.</p>
<p>По Iceberg рекомендую статью <a href="https://ivan-shamaev.ru/apache-iceberg-tutorial-architecture-how-to-work/" target="_blank" rel="noopener">&#171;Введение в Apache Iceberg. Основы, архитектура, как работает?&#187;</a></p>
<h2>Другие форматы</h2>
<h3><strong>Protocol Buffers (Protobuf)</strong></h3>
<p><strong>Protocol Buffers (или Protobuf)</strong> — это бинарный формат сериализации данных, разработанный Google. Он позволяет эффективно и компактно описывать и передавать структурированные данные между программами, особенно в распределённых и микросервисных системах.</p>
<p>Работает это примерно следующим образом:</p>
<ul>
<li>Пишется структура данных в <code>.proto</code>-файле.</li>
<li>С помощью <code>protoc</code> (компилятора) генерируются классы для нужного языка.</li>
<li>Эти классы позволяют сериализовать и десериализовать данные в бинарный формат.</li>
</ul>
<p><strong>Пример <code>.proto</code> файла:</strong></p><pre class="urvanov-syntax-highlighter-plain-tag">syntax = "proto3";

package events;

// Время — всегда полезно для потоков
import "google/protobuf/timestamp.proto";

message OrderEvent {
  string order_id = 1;
  string user_id = 2;
  repeated OrderItem items = 3;
  double total_amount = 4;
  google.protobuf.Timestamp created_at = 5;
  OrderStatus status = 6;
}

message OrderItem {
  string product_id = 1;
  int32 quantity = 2;
  double price = 3;
}

enum OrderStatus {
  UNKNOWN = 0;
  PENDING = 1;
  CONFIRMED = 2;
  SHIPPED = 3;
  CANCELLED = 4;
}</pre><p></p>
<h3><strong>FlatBuffers</strong></h3>
<p><strong>FlatBuffers</strong> &#8212; Бинарный формат сериализации от Google, как альтернатива Protobuf.</p>
<ul>
<li>Не требует десериализации — можно читать напрямую из байтовой строки (zero-copy).</li>
<li>Рекомендуется использовать в играх, мобильных и встраиваемых приложениях, где важна скорость и низкий overhead.</li>
<li>Быстрее всего, но сложнее в использовании и изменении схемы.</li>
</ul>
<h3><strong>CBOR (Concise Binary Object Representation)</strong></h3>
<p><strong>CBOR</strong> &#8212; Бинарная версия JSON, стандартизированная (RFC 8949).</p>
<ul>
<li>Компактнее JSON, но сохраняет его структуру и семантику.</li>
<li>Применяется в IoT, веб-протоколы (CoAP), когда нужен JSON‑like формат, но без избыточности.</li>
<li>Хороший компромисс: читаемость + компактность + универсальность.</li>
</ul>
<h3><strong>MessagePack</strong></h3>
<p><strong>MessagePack</strong> &#8212; Бинарный формат сериализации, максимально совместимый с JSON по структуре.</p>
<ul>
<li>В 2–5 раз меньше JSON, при этом так же прост для использования.</li>
<li>Используется в клиент-серверном общении, кэшировании, REST/gRPC, Redis (поддерживает MessagePack).</li>
<li>&#171;JSON, но быстрее и легче&#187; — удобен, если не нужна строгая схема.</li>
</ul>
<h3><strong>pickle</strong></h3>
<p><strong>pickle</strong> — это встроенный модуль сериализации в Python, предназначенный для сохранения и восстановления объектов Python в байтовом виде.</p>
<p><strong>Используется в следующих сценариях:</strong></p>
<ul>
<li>Быстро сохранить объект Python на диск (например, модель машинного обучения).</li>
<li>Кэшировать данные между запусками.</li>
<li>Локальная отладка и временные файлы.</li>
</ul>
<h3><strong>BSON (Binary JSON)</strong></h3>
<p><strong>BSON</strong> — это бинарный формат, разработанный MongoDB. Он расширяет JSON, добавляя поддержку дополнительных типов (например, даты, бинарные данные) и более эффективную машинную обработку.</p><pre class="urvanov-syntax-highlighter-plain-tag">$ hexdump -C atom.bson | head
00000000  51 d2 01 00 03 66 65 65  64 00 46 d2 01 00 02 40  |Q....feed.F....@|
00000010  78 6d 6c 6e 73 00 1c 00  00 00 68 74 74 70 3a 2f  |xmlns.....http:/|
00000020  2f 77 77 77 2e 77 33 2e  6f 72 67 2f 32 30 30 35  |/www.w3.org/2005|
00000030  2f 41 74 6f 6d 00 02 74  69 74 6c 65 00 0c 00 00  |/Atom..title....|
00000040  00 52 65 61 6c 20 50 79  74 68 6f 6e 00 04 6c 69  |.Real Python..li|
00000050  6e 6b 00 72 00 00 00 03  30 00 3f 00 00 00 02 40  |nk.r....0.?....@|
00000060  68 72 65 66 00 20 00 00  00 68 74 74 70 73 3a 2f  |href. ...https:/|
00000070  2f 72 65 61 6c 70 79 74  68 6f 6e 2e 63 6f 6d 2f  |/realpython.com/|
00000080  61 74 6f 6d 2e 78 6d 6c  00 02 40 72 65 6c 00 05  |atom.xml..@rel..|
00000090  00 00 00 73 65 6c 66 00  00 03 31 00 28 00 00 00  |...self...1.(...|</pre><p><strong>Рекомендуется применять при:</strong></p>
<ul>
<li>При работе с MongoDB.</li>
<li>Если нужен более мощный JSON (с типами, датами, бинарными данными).</li>
<li>Для API, где бинарный формат предпочтительнее текстового, но всё ещё нужен JSON‑подобный вид.</li>
</ul>
<h2>Бессхемный против основанного на схеме (Schemaless vs Schema-Based)</h2>
<p>Независимо от того, являются ли они текстовыми или бинарными, многие форматы сериализации данных требуют документ схемы , который является формальным описанием ожидаемой структуры сериализованных данных. В то же время некоторые форматы не имеют схемы, в то время как другие могут работать как со схемой, так и без нее:</p>
<p><a href="https://datatalks.ru/wp-content/uploads/2025/06/schemaless_schema_based.jpeg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1531" src="https://datatalks.ru/wp-content/uploads/2025/06/schemaless_schema_based.jpeg" alt="" width="591" height="192" srcset="https://datatalks.ru/wp-content/uploads/2025/06/schemaless_schema_based.jpeg 591w, https://datatalks.ru/wp-content/uploads/2025/06/schemaless_schema_based-300x97.jpeg 300w, https://datatalks.ru/wp-content/uploads/2025/06/schemaless_schema_based-450x146.jpeg 450w" sizes="(max-width: 591px) 100vw, 591px" /></a></p>
<h2>Подсистема хранения базы данных</h2>
<p><strong>Во всех базах данных есть базовый механизм хранения данных.</strong> Многие СУБД не представляют свои механизмы хранения данных в виде отдельной абстракции (например, <strong>BigQuery</strong>, <strong>Snowflake</strong>). Некоторые из них (в частности, MySQL) поддерживают полностью подключаемые механизмы хранения данных.</p>
<p>Другие (например, SQL Server) предлагают основные варианты конфигурации механизма хранения (столбцовое или строчное хранение), существенно влияющие на поведение базы данных.<br />
Как правило, механизм хранения данных представляет собой отдельный от механизма запросов программный уровень.</p>
<p>Механизм хранения управляет всеми аспектами хранения данных на диске, включая сериализацию, физическое расположение данных и индексы.</p>
<p>В 2000-2010-х годах в подсистемах хранения данных появились значительные инновации. Если раньше подсистемы хранения данных были оптимизированы для прямого доступа к вращающимся дискам, то современные системы гораздо лучше оптимизированы для поддержки характеристик производительности твердотельных накопителей. Подсистемы хранения также обеспечивают улучшенную поддержку современных типов и структур данных, таких как строки переменной длины, массивы и вложенные данные.</p>
<p>Еще одним важным изменением в подсистемах хранения данных стал переход к системам хранения на основе столбцов для приложений аналитики и хранилищ данных. Такие СУБД, как SQL Server, PostgreSQL и MySQL, обеспечивают надежную поддержку хранилищ на основе столбцов.</p>
<h2>Сжатие: gzip, bzip2, Snappy и т.д.</h2>
<p>Математика, лежащая в основе алгоритмов сжатия, сложна, но основную идею понять легко &#8212; <strong>алгоритмы сжатия ищут избыточность и повторы в данных, а затем перекодируют их для уменьшения избыточности.</strong></p>
<p>Когда требуется прочитать исходные данные, мы распаковываем их, меняя алгоритм на противоположный и помещая избыточность обратно. Например, вы заметили, что при чтении этой книги некоторые слова встречаются неоднократно. Проведя быстрый анализ текста, можно определить наиболее часто встречающиеся слова и создать для них сокращенные лексемы. Для сжатия необходимо заменить общие слова на их лексемы, а для распаковки &#8212; заменить лексемы на соответствующие им слова.</p>
<p>Возможно, с помощью этого наивного приема можно было бы реализовать коэффициент сжатия в соотношении 2 к 1 и более. Алгоритмы сжатия используют более сложные математические методы для выявления и устранения избыточности.</p>
<p>Зачастую они позволяют достичь коэффициента сжатия в соотношении 1О:1 для текстовых данных.</p>
<p>Заметим, что речь идет об <strong>алгоритмах сжатия без потерь</strong>. При декомпрессии данных, закодированных по алгоритму сжатия без потерь, восстанавливается бит в бит точная копия исходных данных.</p>
<p><strong>Алгоритмы сжатия с потерями для аудио, изображений и видео</strong> нацелены на сенсорную точность &#8212; при декомпрессии восстанавливается то, что звучит или выглядит как оригинал, но не является его точной копией. Инженеры данных могут сталкиваться с алгоритмами сжатия с потерями в конвейерах обработки мультимедиа, но не с сериализацией для аналитики, где требуется высочайшая достоверность данных.</p>
<p>Традиционные механизмы сжатия, такие как <code>gzip</code> и <code>bzip2</code>, очень хорошо сжимают текстовые данные. Их часто применяют для работы с <code>JSON</code>, <code>JSONL</code>, <code>XML</code>, <code>CSV</code> и другими текстовыми форматами данных.</p>
<p>В последние годы инженеры создали новое поколение алгоритмов сжатия, в которых приоритет отдается скорости и эффективности процессора, а не степени сжатия. Основными примерами служат <code>Snappy</code>, <code>Zstandard</code>, <code>LZFSE</code> и <code>LZ4</code>. Эти алгоритмы часто используются для сжатия в озерах данных или столбчатых базах данных с целью оптимизации быстродействия запросов.</p>
<h1>Сценарии использования сериализации</h1>
<h2>REST API</h2>
<p>В веб-приложениях клиент (браузер, мобильное приложение) общается с сервером через HTTP-запросы.</p>
<ul>
<li>Сервер отвечает сериализованными данными — чаще всего в JSON.</li>
<li>Клиент десериализует ответ и отображает его.</li>
</ul>
<p><strong>Пример:</strong></p><pre class="urvanov-syntax-highlighter-plain-tag">GET /users/1
→ Ответ:
{ "id": 1, "name": "Alice", "email": "alice@example.com" }</pre><p></p>
<ul>
<li>Python (FastAPI, Django REST) → JSON</li>
<li>Node.js (Express) → JSON</li>
<li>Java (Spring) → JSON/XML</li>
</ul>
<h2>Микросервисы</h2>
<p>В архитектуре микросервисов данные передаются между сервисами (например, аутентификация, платежи, каталог товаров).</p>
<p>Каждый сервис может быть написан на разном языке</p>
<p><strong>Данные передаются через:</strong></p>
<ul>
<li>REST (JSON)</li>
<li>gRPC (Protobuf)</li>
<li>Kafka (Avro, JSON, Protobuf)</li>
</ul>
<p><strong>Пример:</strong></p>
<p>Сервис заказов отправляет сериализованный заказ в сервис оплаты через Kafka в формате Avro или JSON.</p>
<h2>Распределённые системы</h2>
<p>Системы, разбитые на несколько узлов (кластеров, машин), требуют обмена данными между компонентами.</p>
<p>Пример: база данных (Cassandra, Redis), кэш, очереди (RabbitMQ, Kafka)</p>
<p><strong>Сериализация нужна для:</strong></p>
<ul>
<li>передачи объектов между узлами,</li>
<li>репликации,</li>
<li>логирования событий.</li>
</ul>
<p>Пример: Kafka брокер получает сообщение в Protobuf, десериализует его, и передаёт другому сервису.</p>
<h2>Big Data и Data Pipelines</h2>
<p>В системах обработки больших данных сериализация используется при:</p>
<ul>
<li>Чтении/записи файлов в HDFS или S3 (форматы: Avro, Parquet)</li>
<li>Передаче данных через Apache Kafka, Spark, Flink и др.</li>
<li>Поддержании схемы данных (schema registry)</li>
</ul>
<p><strong>Пример:</strong> ETL-пайплайн получает CSV, преобразует его в Avro, затем пишет в Parquet на Hadoop. Apache Spark читает Parquet-файл — десериализация.</p>
<h1>Литература для дополнительного ознакомления</h1>
<ul>
<li><a href="https://lectures.ostrov.ski/assets/pdf/25-persistence-beamer.pdf" target="_blank" rel="noopener">Хранение данных. Сериализация и объектно-реляционные</a><br />
отображения pdf (лекция)</li>
<li><a href="https://github.com/enhorse/java-interview/blob/master/serialization.md" target="_blank" rel="noopener">Вопросы для собеседования &#8212; Сериализация</a></li>
<li><a href="https://stackoverflow.com/questions/3316762/what-is-deserialize-and-serialize-in-json" target="_blank" rel="noopener">https://stackoverflow.com/questions/3316762/what-is-deserialize-and-serialize-in-json</a></li>
<li><a href="https://en.wikipedia.org/wiki/Serialization" target="_blank" rel="noopener">https://en.wikipedia.org/wiki/Serialization</a></li>
<li><a href="https://github.com/igorbarinov/awesome-data-engineering?tab=readme-ov-file#serialization-format" target="_blank" rel="noopener">https://github.com/igorbarinov/awesome-data-engineering?tab=readme-ov-file#serialization-format</a></li>
<li>Книга &#171;Основы инжинирии данных&#187;</li>
<li><a href="https://www.freecodecamp.org/news/what-is-serialization/" target="_blank" rel="noopener">https://www.freecodecamp.org/news/what-is-serialization/</a></li>
<li><a href="https://javarush.com/quests/lectures/ru.javarush.python.core.lecture.level12.lecture07" target="_blank" rel="noopener">https://javarush.com/quests/lectures/ru.javarush.python.core.lecture.level12.lecture07</a></li>
<li><a href="https://habr.com/ru/articles/60317/" target="_blank" rel="noopener">Habr &#8212; Сериализация в Java</a></li>
<li><a href="https://habr.com/ru/articles/431524/" target="_blank" rel="noopener">Сериализация в Java. Не все так просто</a></li>
<li><a href="https://spark-school.ru/blog/spark-serialization/" target="_blank" rel="noopener">Как происходит сериализация данных в Spark</a></li>
<li><a href="https://bigdataschool.ru/blog/news/airflow/serialization-in-airflow.html" target="_blank" rel="noopener">Сериализация в Apache AirFlow</a></li>
<li><a href="https://github.com/tekumara/notes/blob/main/spark-serialization.md" target="_blank" rel="noopener">Spark Serialization</a></li>
</ul>
<p>Сообщение <a href="https://datatalks.ru/data-serialization-and-deserialization/">Процессы сериализации и десериализации данных. Форматы сериализации</a> появились сначала на <a href="https://datatalks.ru">DataTalks.RU. Data Engineering / DWH / Data Pipeline</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://datatalks.ru/data-serialization-and-deserialization/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Awesome Data Engineering. Дорожная карта Data Engineer RoadMap</title>
		<link>https://datatalks.ru/awesome-data-engineering-learning-sources/</link>
					<comments>https://datatalks.ru/awesome-data-engineering-learning-sources/#respond</comments>
		
		<dc:creator><![CDATA[Data Engineer (Admin)]]></dc:creator>
		<pubDate>Sun, 08 Dec 2024 16:51:41 +0000</pubDate>
				<category><![CDATA[Data Engineering]]></category>
		<category><![CDATA[Data Engineer]]></category>
		<category><![CDATA[Data Engineer RoadMap]]></category>
		<category><![CDATA[Дата инженер]]></category>
		<category><![CDATA[Дата инженер курс]]></category>
		<category><![CDATA[Дата инженер обучение]]></category>
		<category><![CDATA[Инженер данных]]></category>
		<category><![CDATA[Инжиниринг данных]]></category>
		<category><![CDATA[Как стать инженером данных]]></category>
		<category><![CDATA[Курс по данным]]></category>
		<category><![CDATA[Курсы по Data Engineering]]></category>
		<category><![CDATA[Работа с данными]]></category>
		<guid isPermaLink="false">https://datatalks.ru/?p=177</guid>

					<description><![CDATA[<p>Data Engineer RoadMap &#8212; изучение тем по инженерии данных На странице &#171;Awesome Data Engineering Learning Sources&#187; вы найдете отобранный список ресурсов для изучения Data Engineering. Если Вы интересуетесь инженерией данных и хотите понять, какие знания необходимы и где их получить с минимальным бюджетом &#8212; Вы на правильной странице! Также рекомендую подписываться на мой телеграм канал [&#8230;]</p>
<p>Сообщение <a href="https://datatalks.ru/awesome-data-engineering-learning-sources/">Awesome Data Engineering. Дорожная карта Data Engineer RoadMap</a> появились сначала на <a href="https://datatalks.ru">DataTalks.RU. Data Engineering / DWH / Data Pipeline</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2><strong>Data Engineer RoadMap &#8212; изучение тем по инженерии данных</strong></h2>
<p>На странице &#171;Awesome Data Engineering Learning Sources&#187; вы найдете отобранный список ресурсов для изучения Data Engineering.</p>
<p>Если Вы интересуетесь инженерией данных и хотите понять, какие знания необходимы и где их получить с минимальным бюджетом &#8212; Вы на правильной странице!</p>
<p>Также рекомендую подписываться на мой телеграм канал <strong><a href="https://t.me/data_engineer_path" target="_blank" rel="noopener">Data Engineering</a></strong>.</p>
<h2><strong>SQL</strong></h2>
<p>1. <a href="https://sql-ex.ru" target="_blank" rel="noopener">sql-ex.ru</a> &#8212; один из лучших тренажеров по sql, который вы можете найти в рунете. Регистрируйтесь и занимайтесь абсолютно бесплатно. SQL &#8212; тот скилл, который нужно прокачать на 100%, чтобы работать с данными.<br />
2. <a href="https://stepik.org/course/95367/info" target="_blank" rel="noopener">Оконные функции SQL (Stepik)</a> &#8212; платно, но не запредельно. Пройдя этот курс вы на 99% закроете все вопросы с оконками (нужно очень постараться не понять этот великолепный метериал).</p>
<h3><strong>Базы данных</strong></h3>
<ul>
<li><a href="https://javarush.com/quests/QUEST_SQL_HIBERNATE_PUBLIC" target="_blank" rel="noopener">SQL &amp; Hibernate (лекции JavaRush)</a> &#8212; Этот квест посвящен продвинутому изучению БД в разрезе задач разработчика.</li>
<li><a href="https://stepik.org/course/551/syllabus" target="_blank" rel="noopener">Введение в базы данных (Stepik, бесплатно)</a> &#8212; хороший курс, чтобы погрузиться в проектирование и нормализацию БД, плюс бесплатно получить сертификат степика.</li>
</ul>
<h3><strong>Database fundamentals</strong></h3>
<p><strong>YouTube:</strong></p>
<ul>
<li><a href="https://www.youtube.com/watch?v=GQGTIP3QY8s" target="_blank" rel="noopener">Highload 6. Базы данных. Репликация. Шардинг</a></li>
<li>PlayList <a href="https://www.youtube.com/playlist?list=PLf30vI0hEi1v435cBmZSHkr1QAJdOk9mb" target="_blank" rel="noopener">&#171;Базы данных&#187; (Индексы, НФ, Внешние ключи, Транзакции и т.п.)</a></li>
<li>PlayList <a href="https://www.youtube.com/playlist?list=PLrCZzMib1e9oOFQbuOgjKYbRUoA8zGKnj" target="_blank" rel="noopener">Курс · Базы данных (весна 2017)</a></li>
<li><a href="https://www.youtube.com/watch?v=0kq99Y8m0gw" target="_blank" rel="noopener">Нормальные формы базы данных. Три нормальных формы, нормализация и денормализация БД</a></li>
<li><a href="https://www.youtube.com/watch?v=i-FFVM4cIXQ" target="_blank" rel="noopener">База по Базам Данных &#8212; Storage (Индексы, Paging, LSM, B+-Tree, R-Tree) | Влад Тен Систем Дизайн</a> &#8212; Очень рекомендую глянуть</li>
</ul>
<p><strong>Статьи:</strong></p>
<ul>
<li><a href="https://habr.com/ru/articles/254773/" target="_blank" rel="noopener">Нормализация</a></li>
<li><a href="https://habr.com/ru/articles/555920/" target="_blank" rel="noopener">ACID</a></li>
<li><a href="https://habr.com/ru/articles/328792/" target="_blank" rel="noopener">CAP теорема</a></li>
<li><a href="https://www.decosystems.ru/olap-i-oltp-otlichiya/" target="_blank" rel="noopener">OLTP vs OLAP</a></li>
<li><strong>Вертикальное и горизонтальное масштабирование:</strong>
<ul>
<li><a href="https://habr.com/ru/articles/440306/" target="_blank" rel="noopener">Масштабирование БД в высоконагруженных системах</a></li>
<li><a href="https://habr.com/ru/companies/oleg-bunin/articles/319526/" target="_blank" rel="noopener">Горизонтальное масштабирование. Что, зачем, когда и как?</a></li>
<li><a href="https://platformv.sbertech.ru/blog/masshtabirovanie-baz-dannyh" target="_blank" rel="noopener">Масштабирование баз данных</a></li>
</ul>
</li>
</ul>
<h3><strong>Подборка материалов по теме &#171;Индексы в БД&#187;</strong></h3>
<ul>
<li>Статья:
<ul>
<li><a href="https://worksolutions.ru/blog/vliyanie-indeksov-bd-na-proizvoditelnost-vyborki-dannyh/" target="_blank" rel="noopener">Влияние индексов БД на производительность выборки данных</a></li>
<li><a href="https://infostart.ru/1c/articles/2017724/" target="_blank" rel="noopener">Обслуживание индексов MS SQL Server: как, когда и, главное, зачем?</a></li>
<li><a href="https://sd.blackball.lv/articles/read/17488" target="_blank" rel="noopener">14 вопросов об индексах в SQL Server, которые вы стеснялись задать</a></li>
</ul>
</li>
<li>YouTube:
<ul>
<li><a href="https://www.youtube.com/watch?v=LpEwssOYRKA" target="_blank" rel="noopener">Что такое SQL ИНДЕКСЫ за 10 минут: Объяснение с примерами</a></li>
<li><a href="https://www.youtube.com/watch?v=DyqtBiDrz3g" target="_blank" rel="noopener">ИНДЕКСЫ В БАЗАХ ДАННЫХ. СОБЕС В OZON</a></li>
<li><a href="https://www.youtube.com/watch?v=A_Ro0KFAPcg" target="_blank" rel="noopener">Как устроен B-TREE индекс в базах данных</a></li>
<li><a href="https://www.youtube.com/watch?v=XoKNb7txd5c" target="_blank" rel="noopener">EXPLAIN в базах данных за 10 минут</a></li>
<li><a href="https://www.youtube.com/watch?v=ju9F8OvnL4E" target="_blank" rel="noopener">Андрей Сальников — Индексы в PostgreSQL. Как понять, что создавать</a></li>
<li><a href="https://www.youtube.com/watch?v=-62RlA0erW8" target="_blank" rel="noopener">Оптимизация запросов с помощью индексов</a></li>
<li><a href="https://www.youtube.com/watch?v=F12Q0U30Wrw" target="_blank" rel="noopener">Какие бывают индексы | ХЭШ-ИНДЕКС, SSTABLES, LSM-TREE, B-TREE</a></li>
</ul>
</li>
</ul>
<h2><strong>Data Engineering</strong></h2>
<ol>
<li><a href="https://datalearn.ru/" target="_blank" rel="noopener">https://datalearn.ru/</a> &#8212; бесплатно, Дмитрий Аношин с коллегами проделали большую работу (подписывайтесь и занимайтесь)</li>
<li><a href="https://datatalks.club/blog/guide-to-free-online-courses-at-datatalks-club.html" target="_blank" rel="noopener">A Guide to Free Online Courses at DataTalks.Club</a>
<ul>
<li><a href="https://github.com/DataTalksClub/data-engineering-zoomcamp" target="_blank" rel="noopener">Data Engineering Zoomcamp</a> &#8212; на английском языке периодически проходят занятия бесплатно.</li>
</ul>
</li>
<li><a style="font-size: revert;" href="https://stepik.org/course/137235/info" target="_blank" rel="noopener">Data Engineer с нуля до junior (Stepik)</a><span style="font-size: revert;"> &#8212; платно, но очень бюджетно можно пройтись почти по всем нужным инструментам. Плюс электронный сертификат получите!</span></li>
<li>Книга на русском языке: <a href="https://www.ozon.ru/product/osnovy-inzhenerii-dannyh-1667691658" target="_blank" rel="noopener">Основы инженерии данных (ссылка на озон, перевод o&#8217;reilly)</a> &#8212; очень советую купить и читать постоянно (описаны базовые вещи по всему, что касается работы DE, без привязки к инструментам).</li>
<li><a href="https://dataengineering.wiki/Index" target="_blank" rel="noopener">Data Engineering Wiki</a></li>
<li><a href="https://karlchris.github.io/data-engineering/" target="_blank" rel="noopener">Data Engineering Handbook for beginners and everyone</a> (источник <a href="https://github.com/karlchris/data-engineering" target="_blank" rel="noopener">github</a>)</li>
<li>YouTube:
<ul>
<li><a href="https://www.youtube.com/playlist?list=PLPeVqE9owWec-mSYPqVxliaO9d0s_1t1p" target="_blank" rel="noopener">курс Инженерия данных v1 PlayList</a></li>
</ul>
</li>
<li><strong>Data Engineering Handbook</strong>
<ul>
<li>Сайт: <a href="https://karlchris.github.io/data-engineering/" target="_blank" rel="noopener">https://karlchris.github.io/data-engineering/</a></li>
<li>GitHub: <a href="https://github.com/karlchris/data-engineering/" target="_blank" rel="noopener">https://github.com/karlchris/data-engineering/</a></li>
</ul>
</li>
</ol>
<h3><strong>Skills: Навыки дата инженера. Матрица компетенций</strong></h3>
<p>В этом пункте описаны компетенции, которыми должен обладать дата инженер в зависимости от грейда.</p>
<ul>
<li><a href="https://github.com/avito-tech/playbook/" target="_blank" rel="noopener">Профили инженеров Авито Playbook</a> (здесь не про data engineer, но будет полезно тоже)</li>
<li><strong>Habr:</strong>
<ul>
<li><a href="https://habr.com/ru/articles/690834/" target="_blank" rel="noopener">Матрица уровней дата инженеров Amazon</a></li>
<li><a href="https://habr.com/ru/companies/tbank/articles/652373/" target="_blank" rel="noopener">Кто такой data-инженер в Тинькофф и как им стать</a></li>
</ul>
</li>
<li><strong>YouTube:</strong>
<ul>
<li><a href="https://www.youtube.com/watch?v=39iwf3N1juo" target="_blank" rel="noopener">Data Engineer 2022 | Дорожная карта | Александр Савченко | karpov.courses</a></li>
</ul>
</li>
<li><strong>Другое:</strong>
<ul>
<li><a href="https://www.reddit.com/r/dataengineering/comments/1hz5ytw/become_a_data_engineer_in_2025_based_on_100_jobs/" target="_blank" rel="noopener">Become a Data Engineer in 2025 (Based on 100 jobs data!)</a> &#8212; список скиллов на основе зарубежных вакансий (Eng)</li>
</ul>
</li>
</ul>
<h2><strong>Python</strong></h2>
<p>Для старта 2 варианта:<br />
1. <a href="https://stepik.org/course/67/" target="_blank" rel="noopener">Программирование на Python (этот вариант быстрее)</a> &#8212; бесплатно<br />
или<br />
1. <a href="https://stepik.org/course/58852/promo" target="_blank" rel="noopener">&#171;Поколение Python&#187;: курс для начинающих (сильно дольше)</a> &#8212; бесплатно</p>
<p>После начала точно стоит пройти курс:<br />
2. <a href="https://stepik.org/course/68343/info" target="_blank" rel="noopener">&#171;Поколение Python&#187;: курс для продвинутых</a> &#8212; бесплатно, очень советую этот курс.</p>
<p>Для тех, кто хочет дальше развиваться в Python:</p>
<p>3. <strong>Поколение Python Курс для профессионалов и ООП.</strong> Купить можно на степике, или же на самом сайте со скидкой в разделе акции <a href="https://pygen.ru/sale#promo" target="_blank" rel="noopener">https://pygen.ru/sale#promo</a> (сам купил оба со скидкой, не реклама).</p>
<p><strong>YouTube Python ООП:</strong></p>
<ul>
<li><a href="https://www.youtube.com/playlist?list=PLA0M1Bcd0w8zPwP7t-FgwONhZOHt9rz9E" target="_blank" rel="noopener">Объектно-ориентированное программирование (ООП) на Python 3</a></li>
<li><a href="https://www.youtube.com/playlist?list=PLQAt0m1f9OHvyjJNjZK_unnLwMOXPTja8" target="_blank" rel="noopener">Объектно-ориентированное программирование (ООП) Python</a></li>
<li><a href="https://www.youtube.com/playlist?list=PLe-iIMbo5JOK17gsY2dEi90RP5fLemd9U" target="_blank" rel="noopener">Объектно-ориентированное программирование (ООП) Python &#8212; для начинающих (+практика)</a></li>
</ul>
<h2><strong>Алгоритмы и структуры данных</strong></h2>
<ol>
<li><a href="https://coderun.yandex.ru/catalog" target="_blank" rel="noopener">https://coderun.yandex.ru/catalog</a> &#8212; Каталог задачек от Яндекса &#8212; альтернатива LeetCode</li>
<li><a href="https://ru.algorithmica.org/" target="_blank" rel="noopener">https://ru.algorithmica.org/</a> &#8212; Алгоритмика</li>
<li><a href="https://github.com/TheAlgorithms/Python" target="_blank" rel="noopener">GitHub: All algorithms implemented in Python &#8212; for education</a></li>
<li><a href="https://leetcode.com" target="_blank" rel="noopener">https://leetcode.com</a> &#8212; основной ресурс, где разработчики качают навыки решения алгоритмических задач</li>
</ol>
<p><strong>Разработка:</strong></p>
<ul>
<li><a href="https://bool.dev/blog/detail/checklist-dlya-deva-po-podgotovke-tech-interview" target="_blank" rel="noopener">Чеклист для разработчиков по подготовке к техническому собеседованию</a> &#8212; не про data engineering, но будет полезно</li>
</ul>
<p><strong>Книги:</strong></p>
<ul>
<li>Грокаем алгоритмы. 2-е изд. | Бхаргава Адитья &#8212; погуглите, чтоб найти книжку</li>
</ul>
<p><strong>YouTube:</strong></p>
<ul>
<li>PlayList <a href="https://www.youtube.com/playlist?list=PLrCZzMib1e9rvDqeX2jRXrEWoTqUxrqUA" target="_blank" rel="noopener">Курс · Алгоритмы и структуры данных</a></li>
</ul>
<p><strong>Stepik:</strong></p>
<ul>
<li><a href="https://stepik.org/course/1547/promo">Алгоритмы: теория и практика. Структуры данных</a> (бесплатно + сертификат Stepik)</li>
<li><a href="https://stepik.org/course/217/promo">Алгоритмы: теория и практика. Методы</a> (бесплатно + сертификат Stepik)</li>
<li><a href="https://stepik.org/course/180830/promo" target="_blank" rel="noopener">Алгоритмы и структуры данных: ознакомительный курс</a> (бесплатно + сертификат Stepik)</li>
<li><a href="https://stepik.org/course/181477/promo" target="_blank" rel="noopener">Алгоритмы и структуры данных</a> (курс без сертификата)</li>
<li><a href="https://stepik.org/course/82478/promo" target="_blank" rel="noopener">Алгоритмы: теория и практика. Структуры данных. МНМЦ СПбГУ</a> (курс без сертификата)</li>
</ul>
<h2><strong>Airflow</strong></h2>
<ol>
<li><a href="https://stepik.org/course/99527/info" target="_blank" rel="noopener">Apache Airflow для аналитика</a> &#8212; платно (пока курс не доступен, цена временно высокая)</li>
<li>Habr:
<ul>
<li><a href="https://habr.com/ru/articles/682384/" target="_blank" rel="noopener">Все, что вам нужно знать об Airflow DAGs, ч.1 — Основы и расписания</a></li>
<li><a href="https://habr.com/ru/articles/682460/" target="_blank" rel="noopener">Все, что вам нужно знать об Airflow DAGs, ч.2 — Операторы и Датчики</a></li>
<li><a href="https://habr.com/ru/articles/682714/" target="_blank" rel="noopener">Все, что вам нужно знать об Airflow DAGs, ч.3 — Проектирование DAG</a></li>
<li><a href="https://habr.com/ru/companies/alfa/articles/676926/" target="_blank" rel="noopener">Знакомство с Apache Airflow: установка и запуск первого DAGа</a></li>
</ul>
</li>
<li>Sber: <a href="https://developers.sber.ru/docs/ru/sdp/sdpanalytics/airflow/guidelines-airflow" target="_blank" rel="noopener">Руководство по использованию AirFlow (оркестратор для задач ETL)</a></li>
<li>YouTube: <a href="https://www.youtube.com/watch?v=cVDIbEsCTow" target="_blank" rel="noopener">ВВЕДЕНИЕ В AIRFLOW / ПОНЯТИЕ DAG&#8217;а / НАСТРОЙКА DAG&#8217;а В AIRFLOW</a></li>
<li>Книга <a href="https://dmkpress.com/catalog/computer/data/978-5-97060-970-5/" target="_blank" rel="noopener">«Apache Airflow и конвейеры обработки данных»</a> (платно купить)</li>
<li>YouTube Eng:
<ul>
<li><a href="https://www.youtube.com/playlist?list=PLwFJcsJ61oujAqYpMp1kdUBcPG0sE0QMT" target="_blank" rel="noopener">Apache Airflow Tutorial for Beginners PlayList</a></li>
</ul>
</li>
<li>YouTube Ru:
<ul>
<li>5 <a href="https://www.youtube.com/watch?v=Tvzc_2P6Evo" target="_blank" rel="noopener">Оркестраторы и работа с Airflow</a></li>
</ul>
</li>
<li>Еще есть такой вот бесплатный курс <a href="https://startdatajourney.com/ru/course/apache-airflow-2" target="_blank" rel="noopener">Apache Airflow 2.2: практический курс</a></li>
</ol>
<h2><strong>dbt</strong></h2>
<ol>
<li><a href="https://learn.getdbt.com/courses/dbt-fundamentals" target="_blank" rel="noopener">dbt Fundamentals</a> &#8212; бесплатный курс от вендора на английском языке</li>
<li>YouTube 5 video на русском (<a href="https://www.youtube.com/playlist?list=PLwOX8ulmFSV7vigeN5QE-wmKZuQUyPVPj" target="_blank" rel="noopener">плейлист</a>):
<ul>
<li><a href="https://www.youtube.com/watch?v=ntiM0SaZZSo" target="_blank" rel="noopener">Введение в dbt. Что это такое и зачем нужно</a></li>
<li><a href="https://www.youtube.com/watch?v=Jnq8KKBO7_Y" target="_blank" rel="noopener">Модели в dbt</a></li>
<li><a href="https://www.youtube.com/watch?v=CxeGjK8MN0g" target="_blank" rel="noopener">dbt: источники и сиды</a></li>
<li><a href="https://www.youtube.com/watch?v=Omvs0AC-sjQ" target="_blank" rel="noopener">dbt. Снэпшоты и метрики</a></li>
<li><a href="https://www.youtube.com/watch?v=lFi0C5KoW5k" target="_blank" rel="noopener">dbt. Jinja и шаблоны</a></li>
</ul>
</li>
<li>Статьи Хабр:
<ul>
<li><a href="https://habr.com/ru/articles/670062/" target="_blank" rel="noopener">Введение в dbt шаг за шагом</a></li>
<li><a href="https://habr.com/ru/companies/otus/articles/501380/" target="_blank" rel="noopener">Data Build Tool или что общего между Хранилищем Данных и Смузи</a></li>
<li><a href="https://habr.com/ru/articles/552542/" target="_blank" rel="noopener">Что такое dbt и зачем он нужен маркетинг-аналитику</a></li>
</ul>
</li>
<li>YouTube 2 видео &#171;Курс по dbt с нуля&#187;:
<ul>
<li><a href="https://www.youtube.com/watch?v=fXt-VmqsVPA" target="_blank" rel="noopener">Занятие 1. Преимущества dbt. Запускаем dbt из docker в связке с ClickHouse</a></li>
<li><a href="https://www.youtube.com/watch?v=wSUbJ5lUahw" target="_blank" rel="noopener">Занятие 2.2. Особенности установки на Windows. Запуск Clickhouse в wsl 2</a></li>
</ul>
</li>
<li>DataLearn
<ol>
<li>YouTube <a href="https://www.youtube.com/watch?v=btaH7P0U_2g" target="_blank" rel="noopener">ВВЕДЕНИ В DBT / СОЗДАНИЕ МОДЕЛЕЙ ПРИ ПОМОЩИ DBT / УПРАВЛЕНИЕ ТРАНСФОРМАЦИЕЙ ДАННЫХ / РИШАТ МИНГАЗОВ</a></li>
<li>Telegram <a href="https://t.me/rockyourdata/4977" target="_blank" rel="noopener">Запись трансляции <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> dbt: С ЧЕГО НАЧАТЬ? | Вебинар с Дмитрием Аношиным</a></li>
<li>Telegram <a href="https://t.me/rockyourdata/4983" target="_blank" rel="noopener">Начало работы с DBT | Часть 2</a></li>
</ol>
</li>
<li>Статья: <a href="https://ivan-shamaev.ru/dbt-clickhouse-tutorial-run-model-data/" target="_blank" rel="noopener">Обучение dbt. dbt-clickhouse Tutorial. Описание run model data</a></li>
<li><a href="https://youtube.com/playlist?list=PLc2EZr8W2QIBegSYp4dEIMrfLj_cCJgYA&amp;si=RXZY3jcHCOQ9A4Sz" target="_blank" rel="noopener">DBT Tutorial 12 videos YouTube Playlist</a> &#8212; видео на английском</li>
<li><a href="https://www.youtube.com/watch?v=BSge0lPJeHk" target="_blank" rel="noopener">YouTube Video Введение в dbt: основы моделирования данных</a> &#8212; на русском языке</li>
<li>YouTube <a href="https://www.youtube.com/watch?v=i1Bq2CRp8WE" target="_blank" rel="noopener">Марк Порошин — Data Vault на Greenplum c помощью DBT</a></li>
<li><a href="https://datatalks.ru/unlocking-dbt-data-build-tool-part-1/" target="_blank" rel="noopener">Перевод главы «Введение в dbt» из книги Unlocking dbt</a></li>
<li>YouTube &#8212; <a href="https://youtube.com/playlist?list=PLzvuaEeolxkyx7XruoatSFdYDyLji_o1J&amp;si=oH5Bne-fU2lCqJl1" target="_blank" rel="noopener">Курс по dbt для инженеров данных</a> &#8212; большой подробный курс на русском языке</li>
</ol>
<h2><strong>GitLab</strong></h2>
<ol>
<li>YouTube:
<ul>
<li><a href="https://www.youtube.com/playlist?list=PLqVeG_R3qMSzYe_s3-q7TZeawXxTyltGC" target="_blank" rel="noopener"><strong>Git. GitLab &#8212; плейлист</strong></a><strong>:</strong>
<ul>
<li><a href="https://www.youtube.com/watch?v=n_21ya2MoKg" target="_blank" rel="noopener">01-GitLab. Devops система. Установка в локальной сети. Настройка</a></li>
<li><a href="https://www.youtube.com/watch?v=znnMmnVgD_w" target="_blank" rel="noopener">Git и GitHub для начинающих</a></li>
<li><a href="https://www.youtube.com/watch?v=u3r_DGLXmgA" target="_blank" rel="noopener">02-GitLab clone по SSH. Настройка SSH для Linux и Windows</a></li>
<li><a href="https://www.youtube.com/watch?v=jAIhhULc7YA" target="_blank" rel="noopener">03- DevOps практика: GitlLab CI+Runners. Создание CI CD Pipeline</a></li>
<li><a href="https://www.youtube.com/watch?v=G-WmX1um5cc" target="_blank" rel="noopener">04 GitLab: Свой Docker Registry. Создание и подключение</a></li>
</ul>
</li>
<li><a href="https://www.youtube.com/watch?v=O00FTZDxD0o" target="_blank" rel="noopener">GIT &#8212; Полный Курс Git и GitHub Для Начинающих [4 ЧАСА]</a></li>
<li><a href="https://www.youtube.com/watch?v=d5rvy5XPyzk" target="_blank" rel="noopener">GIT: Merge или Rebase? В чем разница?</a></li>
<li><a href="https://www.youtube.com/watch?v=zZBiln_2FhM" target="_blank" rel="noopener">Git и GitHub Курс Для Новичков</a></li>
</ul>
</li>
</ol>
<h2><strong>Docker</strong></h2>
<ol>
<li><strong>YouTube:</strong>
<ul>
<li><a href="https://www.youtube.com/watch?v=n9uCgUzfeRQ" target="_blank" rel="noopener">Docker для Начинающих – Полный Курс</a></li>
<li><a href="https://www.youtube.com/watch?v=lr1rYnUubpQ&amp;t=17s" target="_blank" rel="noopener">Docker Для Начинающих за 1 Час | Docker с Нуля</a></li>
</ul>
</li>
<li>Статья <a href="https://ivan-shamaev.ru/docker-compose-tutorial-container-image-install/" target="_blank" rel="noopener">Docker и Docker-Compose Tutorial</a></li>
</ol>
<h2><strong>Spark</strong></h2>
<ol>
<li><strong>PySpark:</strong>
<ul>
<li><a href="https://www.sparkplayground.com/tutorials" target="_blank" rel="noopener">https://www.sparkplayground.com/tutorials</a> &#8212; здесь можно изучить работу со спарком (на английском)</li>
<li><a href="https://www.sparkplayground.com/playground" target="_blank" rel="noopener">https://www.sparkplayground.com/playground</a> &#8212; здесь можно потренироваться онлайн</li>
</ul>
</li>
<li><strong>YouTube:</strong>
<ul>
<li><a href="https://www.youtube.com/watch?v=Gj0oSVmv7k4" target="_blank" rel="noopener">Apache Spark для Джуна | Что такое Spark и как он работает?</a></li>
<li><a href="https://www.youtube.com/watch?v=xuMe6OFyQ2s" target="_blank" rel="noopener">МИТАП &#171;Apache Spark за 2 часа &#8212; для нетерпеливых&#187;_20 апреля 2022г</a></li>
<li><a href="https://www.youtube.com/watch?v=If1xyQQEIvg&amp;list=PL1nFVl41dGiU6RvfCw2B7nCAeWzAfxbY6&amp;index=7" target="_blank" rel="noopener">МИТАП: «Установка Apache Spark &#8212; это просто»_11 мая 2022г</a></li>
<li><a href="https://www.youtube.com/watch?v=o6NcE-yGXJY" target="_blank" rel="noopener">МИТАП: «Spark или pandas? Spark и pandas!»</a></li>
<li><a href="https://www.youtube.com/watch?v=Har07GTdv24" target="_blank" rel="noopener">МИТАП: «Работа с источниками данных в Apache Spark»_ 14 июня 2022 года</a></li>
<li><a href="https://www.youtube.com/watch?v=rwd34-R0iVI" target="_blank" rel="noopener">МИТАП: «Использование SQL для работы с данными в Apache Spark»_29 июня 2022г</a></li>
<li><a href="https://www.youtube.com/watch?v=McXK_ObP00c">Анализируем данные с помощью фреймворка Spark</a></li>
</ul>
</li>
<li><strong>YouTube DataLearn:</strong>
<ul>
<li>PlayList &#8212; <a href="https://www.youtube.com/playlist?list=PLkcP_moW_BpMuwnpqNlE_wuLy-FI8vaJd" target="_blank" rel="noopener">DE-101 | Модуль 7 &#8212; APACHE SPARK</a></li>
<li>Отдельный вебинар &#8212; <a href="https://www.youtube.com/live/OfS5o8vz-O8" target="_blank" rel="noopener">ВВЕДЕНИЕ В PYSPARK И SPARKSQL / ОЛЕГ АГАПОВ</a></li>
</ul>
</li>
<li><strong>Stepik:</strong>
<ul>
<li><a href="https://stepik.org/course/210272/promo" target="_blank" rel="noopener">pySpark: Spark на Python</a></li>
</ul>
</li>
</ol>
<h3><strong>Scala</strong></h3>
<p><strong>Youtube:</strong></p>
<ul>
<li><a href="https://www.youtube.com/playlist?list=PLr3MOSSJVvAFnT_qUrcFr1EpZqjEBKiUl" target="_blank" rel="noopener">Курс Scala 2022</a></li>
<li><a href="https://www.youtube.com/playlist?list=PLtX3ATr7wKKlhdq3unb2TiyoOcT8jVUGC" target="_blank" rel="noopener">Уроки Scala</a></li>
<li><a href="https://www.youtube.com/watch?v=M5k6uFe82qc" target="_blank" rel="noopener">Основы и особенности языка Scala //Демо-занятие курса «Scala-разработчик»</a></li>
</ul>
<h2><strong>ClickHouse</strong></h2>
<ol>
<li><a href="https://stepik.org/course/215412/promo" target="_blank" rel="noopener">Оптимизация SQL запросов на примере ClickHouse (Stepik)</a> &#8212; бесплатный курс</li>
<li><a href="https://stepik.org/course/100210/promo" target="_blank" rel="noopener">ClickHouse для аналитика (курс будет доступен с 1 Января, цена снизится &#8212; пока курс на доработке)</a></li>
<li>Статья: <a href="https://ivan-shamaev.ru/clickhouse-101-course-on-learn-clickhouse-com/" target="_blank" rel="noopener">Заметки про ClickHouse. Tutorial 101 — Большая подборка информации</a></li>
<li>Статья: <a href="https://ivan-shamaev.ru/how-data-is-storing-in-mergetree-table-in-clickhouse-physically/" target="_blank" rel="noopener">Как данные физически хранятся в таблице MergeTree() в ClickHouse?</a></li>
<li><strong>YouTube:</strong>
<ul>
<li><a href="https://www.youtube.com/watch?v=Jp1SEm4UU48" target="_blank" rel="noopener">Kafka и Clickhouse &#8212; как организовать взаимодействие // Демо-занятие курса «Apache Kafka»</a></li>
<li><a href="https://www.youtube.com/watch?v=7ziBC_lb6TY" target="_blank" rel="noopener">Что правда из того, что говорят про Clickhouse</a></li>
<li><a href="https://youtube.com/playlist?list=PLzvuaEeolxkwI70QKwtZGXiXCJH7RZpGe&amp;si=7SA_QkfKPGLwA6fd" target="_blank" rel="noopener">Курс по ClickHouse (Амелин Владимир)</a></li>
</ul>
</li>
<li><strong>Курсы от Яндекса (бесплатные):</strong>
<ul>
<li><a href="https://yandex.cloud/ru/training/clickhouse" target="_blank" rel="noopener">Managed Service for ClickHouse</a> &#8212; можно получить сертификат, бесплатно</li>
<li><a href="https://stepik.org/course/231939/info" target="_blank" rel="noopener">ClickHouse для инженеров и аналитиков (Stepik, без сертификата)</a></li>
</ul>
</li>
</ol>
<h2><strong>Kafka</strong></h2>
<ol>
<li><strong> YouTube:</strong>
<ul>
<li><a href="https://www.youtube.com/watch?v=-AZOi3kP9Js" target="_blank" rel="noopener">Про Kafka (основы)</a></li>
<li><a href="https://www.youtube.com/watch?v=hbseyn-CfXY" target="_blank" rel="noopener">Лучший Гайд по Kafka для Начинающих За 1 Час</a></li>
<li><a href="https://www.youtube.com/watch?v=llBCFID167E" target="_blank" rel="noopener">Андрей Серебрянский — Грузим в Kafka из базы: с CDC и без</a></li>
<li><a href="https://www.youtube.com/watch?v=x4k1XEjNzYQ" target="_blank" rel="noopener">Kafka vs. RabbitMQ vs. Messaging Middleware vs. Pulsar</a></li>
<li><a href="https://www.youtube.com/watch?v=hrvx8Nv9eQA" target="_blank" rel="noopener">Unlock the Power of Event-Driven Architecture: How Netflix &amp; Uber Handle Billions of Events</a></li>
<li><a href="https://www.youtube.com/watch?v=PWBzLMsXr3A&amp;list=PL2OS_ZLmYX_ayY2BpIFXZzLvgeqOpoOtV" target="_blank" rel="noopener">Основы Kafka для тестировщиков. Apache Kafka for QA</a></li>
</ul>
</li>
</ol>
<h2><strong>DuckDB</strong></h2>
<ol>
<li>YouTube RU: <a href="https://www.youtube.com/watch?v=biyPV-4glN4" target="_blank" rel="noopener">Разработка data приложений на DuckDB</a></li>
<li>YouTube Eng:
<ul>
<li><a href="https://www.youtube.com/watch?v=AjsB6lM2-zw" target="_blank" rel="noopener">DuckDB Tutorial &#8212; DuckDB course for beginners</a></li>
<li><a href="https://www.youtube.com/watch?v=ZX5FdqzGT1E" target="_blank" rel="noopener">DuckDB Tutorial For Beginners</a></li>
</ul>
</li>
</ol>
<h2><strong>Apache Iceberg</strong></h2>
<ol>
<li>Книги:
<ul>
<li><a href="https://www.ozon.ru/product/apache-iceberg-polnoe-rukovodstvo-1747017860/" target="_blank" rel="noopener">Apache Iceberg. Полное руководство (ozon, перевод книги на русский язык)</a></li>
</ul>
</li>
<li>Подборка материалов на английском про айсберг &#8212; <a href="https://www.dremio.com/blog/apache-iceberg-101-your-guide-to-learning-apache-iceberg-concepts-and-practices/" target="_blank" rel="noopener">Apache Iceberg 101 – Your Guide to Learning Apache Iceberg Concepts and Practices на сайте dremio.com</a></li>
<li>На канале YouTube <a href="https://www.youtube.com/@Dremio/playlists" target="_blank" rel="noopener">Dremio тоже много плейлистов по Apache Iceberg</a></li>
<li>YouTube Eng:
<ul>
<li><a href="https://www.youtube.com/watch?v=hFFP2OYFlTA" target="_blank" rel="noopener">Data Lake Fundamentals, Apache Iceberg and Parquet in 60 minutes on DataExpert.io</a></li>
<li><a href="https://www.youtube.com/watch?v=6tjSVXpHrE8" target="_blank" rel="noopener">What is Apache Iceberg?</a></li>
</ul>
</li>
<li>YouTube Ru:
<ul>
<li><a href="https://www.youtube.com/watch?v=lIxHB1eyWZY" target="_blank" rel="noopener">Зачем Apache Iceberg, если уже есть много других форматов</a></li>
</ul>
</li>
<li>Статья по Apache Iceberg: <a href="https://ivan-shamaev.ru/apache-iceberg-tutorial-architecture-how-to-work/" target="_blank" rel="noopener">Введение в Apache Iceberg. Основы, архитектура, как работает?</a></li>
</ol>
<h2><strong>Trino</strong></h2>
<ol>
<li>Статьи:
<ul>
<li><a href="https://habr.com/ru/companies/cedrusdata/articles/744934/" target="_blank" rel="noopener">Почему Trino такой быстрый: архитектура оптимизатора SQL-запросов</a></li>
<li><a href="https://bigdataschool.ru/blog/news/what-is-trino.html" target="_blank" rel="noopener">MPP-движок для Big Data: архитектура и принципы работы Trino</a></li>
<li><a href="https://habr.com/ru/articles/863854/" target="_blank" rel="noopener">Мой опыт эксплуатации кластера Trino</a></li>
</ul>
</li>
<li>smartdataconf:
<ul>
<li><a href="https://www.youtube.com/watch?v=Y8-wILItT5w" target="_blank" rel="noopener">Владимир Озеров — Быстрая обработка данных в Data Lake с помощью Trino</a></li>
<li><a href="https://datatalks.ru/wp-content/uploads/2024/12/2023_SmartData_Быстрая_обработка_данных_в_Data_Lake_с_помощью_Trino.pdf" target="_blank" rel="noopener">Презентация PDF</a></li>
</ul>
</li>
<li>YouTube:
<ul>
<li><a href="https://www.youtube.com/watch?v=ouQ73Q5lagg" target="_blank" rel="noopener">Trino Meetup #1: Как пересесть на Trino после Vertica: реальный кейс Авито, Дмитрий Рейман</a></li>
<li><a href="https://www.youtube.com/watch?v=pPpy32xpip8" target="_blank" rel="noopener">Trino Meetup #1: Архитектура оптимизатора Trino, Владимир Озеров</a></li>
<li><a href="https://www.youtube.com/watch?v=254f-fyAcWw" target="_blank" rel="noopener">Trino Meetup #2: Trino в Тинькофф, Дмитрий Зуев</a></li>
<li><a href="https://www.youtube.com/watch?v=luCSPtwPPRw" target="_blank" rel="noopener">Trino Meetup #2: Как ускорить работу Trino с Data Lake c помощью кэширования, Владимир Озеров</a></li>
</ul>
</li>
</ol>
<h2><strong>Проектирование хранилищ данных + методологии построения DWH</strong></h2>
<p><strong>Общая статья:</strong></p>
<ul>
<li><a href="https://ivan-shamaev.ru/data-modeling-dwh-kimball-scd-types-data-vault-2-anchor-modeling/" target="_blank" rel="noopener">Проектирование DWH. Data Modeling. Kimball, Data Vault 2.0, Anchor Modeling</a></li>
</ul>
<p><strong>Статьи по Data Vault:</strong></p>
<ul>
<li><a href="https://datatalks.ru/data-vault-2-0-chapter-1-introduction-to-data-warehousing/" target="_blank" rel="noopener">Перевод 1 Главы — Введение в хранилища данных</a></li>
<li><a href="https://datatalks.ru/data-vault-2-0-chapter-2-scalable-data-warehouse-architecture/" target="_blank" rel="noopener">Перевод 2 Главы — Масштабируемая архитектура хранилища данных</a></li>
<li><a href="https://datatalks.ru/chapter-3-data-vault-2-0-methodology/" target="_blank" rel="noopener">Перевод 3 Главы — Методология Data Vault 2.0</a></li>
<li><a href="https://datatalks.ru/chapter-4-data-vault-2-0-modeling/" target="_blank" rel="noopener">Перевод 4 Главы — Моделирование Data Vault 2.0 — Что такое Hub / Link / Satellite?</a></li>
<li><a href="https://datatalks.ru/data-vault-chapter-5-intermediate-data-vault-modeling/" target="_blank" rel="noopener">Перевод 5 Главы – Intermediate Моделирование Data Vault</a></li>
<li><a href="https://datatalks.ru/chapter-6-data-vault-advanced-data-vault-modeling/" target="_blank" rel="noopener">Перевод 6 Главы — Продвинутое моделирование Data Vault 2.0 — Advanced Data Vault Modeling</a></li>
<li><a href="https://datatalks.ru/chapter-7-data-vault-2-0-dimensional-modeling/" target="_blank" rel="noopener">Перевод 7 Главы — Dimensional Modeling (Data Vault 2.0)</a></li>
</ul>
<h2><strong>Системный дизайн</strong></h2>
<p><strong>YouTube:</strong></p>
<ul>
<li>PlayList <a href="https://www.youtube.com/playlist?list=PLPkuArhPxxQGvr3qKy6bwh0ZKDiVyMOcn" target="_blank" rel="noopener">System Design (Interview Pen)</a> &#8212; English</li>
<li><a href="https://www.youtube.com/watch?v=6n92YA6UXlQ" target="_blank" rel="noopener">Data Engineer тренирует System Design секцию. Собеседует @halltape | rzv_de | Aug 2024</a></li>
<li><a href="https://www.youtube.com/watch?v=d6BtxBKhQoc" target="_blank" rel="noopener">System Design &#8212; теория шардирования | Как масштабировать базы данных</a></li>
<li><a href="https://www.youtube.com/watch?v=iLMlYgQoTIE" target="_blank" rel="noopener">Как кэшировать данные | Теория кэширования &#8212; System Design</a></li>
<li><a href="https://www.youtube.com/watch?v=8cP6x9pTIy0" target="_blank" rel="noopener">Проектирование баз данных за 40 минут. Практика</a></li>
<li>PlayList <a href="https://www.youtube.com/playlist?list=PLlsMRoVt5sTMeuJdODTAF6gD6x8CFiHXW" target="_blank" rel="noopener">Системный дизайн (Eugene Suleimanov)</a></li>
<li>PlayList <a href="https://www.youtube.com/playlist?list=PLCRMIe5FDPsd0gVs500xeOewfySTsmEjf" target="_blank" rel="noopener">System Design Fundamentals (ByteByteGo)</a></li>
<li>PlayList <a href="https://www.youtube.com/playlist?list=PLsvdqJRjAOZstptcYolYA12Mv96q5rwT0" target="_blank" rel="noopener">System Design. Kleppman (Владимир Невзоров)</a> &#8212; Разбор глав книги &#171;Высоконагруженные приложения&#187;</li>
<li><a href="https://www.youtube.com/watch?v=jUbOm0B-eKQ" target="_blank" rel="noopener">Как подготовиться и пройти System Design Interview. Александр Поломодов</a></li>
<li><a href="https://www.youtube.com/watch?v=popkBBjbAv8" target="_blank" rel="noopener">Владимир Маслов — System Design. Как построить распределенную систему и пройти собеседование</a></li>
</ul>
<p>Другое:</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=UhaZb0r8TlE" target="_blank" rel="noopener">01. SAGA pattern. Хореография и Оркестрация</a> &#8212; микросервисы</li>
<li><a href="https://www.youtube.com/watch?v=yqhITl97HwU" target="_blank" rel="noopener">ЭТОТ Паттерн Спрашивают на 99% Собесов</a></li>
<li><a href="https://www.youtube.com/watch?v=P98oMiVCnq8" target="_blank" rel="noopener">Филипп Вагнер «Распределенные транзакции в условиях микросервисной архитектуры»</a></li>
</ul>
<h2><strong>Форматы хранения данных</strong></h2>
<h3><strong>Apache Parquet</strong></h3>
<ol>
<li>YouTube Eng:
<ul>
<li><a href="https://www.youtube.com/watch?v=KLFadWdomyI" target="_blank" rel="noopener">An introduction to Apache Parquet</a></li>
<li><a href="https://www.youtube.com/watch?v=5NA57Pfpdr4" target="_blank" rel="noopener">Parquet File Format &#8212; Explained to a 5 Year Old!</a></li>
</ul>
</li>
</ol>
<h3><strong>Apache Arrow</strong></h3>
<ul>
<li>YouTube:
<ul>
<li><a href="https://www.youtube.com/watch?v=GYZcwlvfn7Q" target="_blank" rel="noopener">Игорь Селивёрстов — Apache Arrow. В погоне за скоростью</a></li>
</ul>
</li>
</ul>
<h2><strong>Linux &amp; DevOps</strong></h2>
<ul>
<li>YouTube:
<ul>
<li><a href="https://www.youtube.com/playlist?list=PL_jzYoo7u8dErAbv4gKmOaoNSJ1ZD0kZL" target="_blank" rel="noopener">PlayList &#171;Linux by REBRAIN&#187; &#8212; Онлайн-практикумы Linux для специалистов в IT</a> (40 видео) &#8212; системных администраторов, сетевых инженеров, разработчиков, Devops-инженеров, технических / релизных менеджеров.</li>
<li><a href="https://www.youtube.com/playlist?list=PLZ9fQ9qFI0PVwNkWw87jesflzcoKtUOmz" target="_blank" rel="noopener">PlayList &#171;Обучение DevOps&#187;</a> &#8212; 7 базовых видео</li>
</ul>
</li>
</ul>
<h2><strong>Тестирование</strong></h2>
<ul>
<li><a href="https://www.youtube.com/playlist?list=PLeLN0qH0-mCVdHgdjlnKTl4jKuJgCK-4b" target="_blank" rel="noopener">YouTube Pytest Курс</a></li>
</ul>
<h2><strong>Сборники информации по Awesome Data Engineering</strong></h2>
<ul>
<li><a href="https://github.com/igorbarinov/awesome-data-engineering" target="_blank" rel="noopener">https://github.com/igorbarinov/awesome-data-engineering</a> &#8212; A curated list of awesome things related to Data Engineering.</li>
<li><a href="https://github.com/halltape/HalltapeRoadmapDE" target="_blank" rel="noopener">https://github.com/halltape/HalltapeRoadmapDE</a> &#8212; Roadmap для Data Engineer. Цель роадмапа – устроиться тебе на работу!</li>
<li><a href="https://github.com/data-burst/data-engineering-roadmap" target="_blank" rel="noopener">https://github.com/data-burst/data-engineering-roadmap</a> &#8212; Data Engineering Roadmap</li>
<li><a href="https://github.com/sonhmai/data-systems-design" target="_blank" rel="noopener">https://github.com/sonhmai/data-systems-design</a> &#8212; System Design, Solution Architecture, Data Systems Practice</li>
<li><a href="https://github.com/DataExpert-io/data-engineer-handbook" target="_blank" rel="noopener">https://github.com/DataExpert-io/data-engineer-handbook</a> &#8212; The Data Engineering Handbook</li>
<li><a href="https://github.com/DataTalksClub/data-engineering-zoomcamp" target="_blank" rel="noopener">https://github.com/DataTalksClub/data-engineering-zoomcamp</a> &#8212; Data Engineering Zoomcamp: A Free 9-Week Course on Data Engineering Fundamentals</li>
<li><a href="https://github.com/Data-Learn/data-engineering" target="_blank" rel="noopener">https://github.com/Data-Learn/data-engineering</a> &#8212; Getting Started with Data Enngineering &#8212; <a href="https://datalearn.ru" target="_blank" rel="noopener">datalearn.ru</a></li>
<li><a href="https://maelfabien.github.io/bgd/#" target="_blank" rel="noopener">https://maelfabien.github.io/bgd/#</a> &#8212; A series of articles dedicated to Big Data analytics and Data Engineering.</li>
</ul>
<h2><strong>Подборка каналов на YouTube про DWH/DataLake/Data Engineering на русском языке</strong></h2>
<ol>
<li><a href="https://www.youtube.com/playlist?list=PLknJ4Vr6efQF6BATjplZ9EU4w2aCqgqCa" target="_blank" rel="noopener">Avito DWH Плейлист</a></li>
<li><a href="https://www.youtube.com/playlist?list=PLLrf_044z4Jp8l6GauGEmbZXIwABfrbRQ" target="_blank" rel="noopener">Т-Банк (T-Meetup) &#8212; DWH, GreenPlum</a></li>
<li><a href="https://www.youtube.com/@SmartDataConf/playlists" target="_blank" rel="noopener">SmartData все плейлисты</a></li>
<li><a href="https://www.youtube.com/playlist?list=PL1x4ET76A10awoGRia_EmYnEU_RPmRsRz" target="_blank" rel="noopener">Data Platform Yandex</a></li>
<li><a href="https://www.youtube.com/@dataoffice7577/playlists" target="_blank" rel="noopener">DataOffice Ростелеком PlayList YouTube</a></li>
<li><a href="https://www.youtube.com/playlist?list=PL9rviSZTe5ajrgBiqdGeQxvWmCEpTVkkx" target="_blank" rel="noopener">Лекции в МГТУ им. Баумана: Deep dive into SQL and DWH. Пишем эффективные аналитические запросы</a></li>
<li>Отдельно хочется выделить канал <a href="https://www.youtube.com/@HighLoadChannel/videos" target="_blank" rel="noopener">HighLoadChannel</a>, на котором много ИТ докладов не только по Data</li>
<li><a href="https://www.youtube.com/@otus_education/videos" target="_blank" rel="noopener">OTUS IT Онлайн &#8212; образование</a> &#8212; здесь можно посмотреть какие-то вводные вебинары по инструментам, а дальше по документации продолжить изучение</li>
<li>YouTube PlayList: <a href="https://www.youtube.com/playlist?list=PLzvuaEeolxky94E_QnkR9OfRujx15RhCM" target="_blank" rel="noopener">Создание хранилища данных &#8212; Владимир Амелин</a></li>
</ol>
<p>Сообщение <a href="https://datatalks.ru/awesome-data-engineering-learning-sources/">Awesome Data Engineering. Дорожная карта Data Engineer RoadMap</a> появились сначала на <a href="https://datatalks.ru">DataTalks.RU. Data Engineering / DWH / Data Pipeline</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://datatalks.ru/awesome-data-engineering-learning-sources/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
