Data Engineering / reposts & drafts
35 subscribers
227 photos
22 videos
40 files
557 links
Download Telegram
Forwarded from Summarize300Bot
DATABASE DESIGN
Майкл Стоунбрейкер: «Всё новое — это хорошо забытое старое. Продолжение» От редакции: Майкл Стоунбрейкер - один из самых известных в IT мире ученых и отец-основатель Postgres. В соавторстве с Энрю Павло, недавно опубликовал большой обзор всех актуальных…
Майкл Стоунбрейкер: «Всё новое — это хорошо забытое старое. Продолжение»

• Статья посвящена обзору актуальных технологий СУБД и их развитию за последние 20 лет.Link
• Реляционная модель с расширяемой системой типов (объектно-реляционная) доминирует на рынке СУБД.Link
• SQL аккумулировал лучшие идеи языков запросов для расширения поддержки современных приложений.Link
• Хранилища "ключ-значение" (KV) - самая простая из возможных моделей данных.Link
• Документоориентированные базы данных (DOC) - модель данных документов, активно разрабатывалась в течение нескольких десятилетий.
Forwarded from Summarize300Bot
DATABASE DESIGN
Майкл Стоунбрейкер: «Всё новое — это хорошо забытое старое. Продолжение» От редакции: Майкл Стоунбрейкер - один из самых известных в IT мире ученых и отец-основатель Postgres. В соавторстве с Энрю Павло, недавно опубликовал большой обзор всех актуальных…
Link
• Базы данных типа "Семейство столбцов" (COL) - упрощение документной модели, поддерживающее только один уровень вложенности.Link
• Текстовые поисковые движки (TEXT) - системы, основанные на инвертированных индексах и ориентированные на точный поиск совпадений.Link
• Базы данных массивов (ARRAY) - СУБД, использующие модель данных массивов для хранения и запроса данных массивов.Link
• Пересказана только часть. Для продолжения перейдите в режим подробного пересказа.Link
Forwarded from Инжиниринг Данных (Dmitry)
Все чаще мелькает информация про YAML инженера.

Вот несколько статей:
YAML developers and the declarative data platforms

The rise of the YAML engineer

From Data Engineer to YAML Engineer

Data Orchestration Trends: The Shift From Data Pipelines to Data Products

Dbt модели у меня безусловно лидируют, так же использовал для Mock тестов в Pytest и Helm Charts и Kubernetes.
Forwarded from BeOps
Книга Kubernetes in Action (2nd edition by Marko Lukša, Kevin Conner) — отличный старт для знакомства с Kubernetes

Когда я начал читать книгу Kubernetes in Action, сразу понял — это не просто теория. Автор делает акцент на понятном объяснении того, что такое Kubernetes, как он работает и почему его популярность так стремительно выросла. Честно говоря, я был впечатлен уже с первых страниц.

Что мне особенно понравилось

Во-первых, в книге есть множество наглядных иллюстраций, которые помогают понять, как Kubernetes управляет приложениями и как он абстрагирует инфраструктуру. Эти схемы не просто украшают текст, они на самом деле помогают видеть общую картину, особенно если вы еще новичок в этой теме. Ну и, конечно, материал изложен очень просто — так, как будто вы говорите с опытным наставником, а не читаете технический мануал.

Теперь давайте разберем основные идеи первых глав (1.1 Introducing Kubernetes - 1.2 Understanding Kubernetes), которые привлекли мое внимание.

---

Введение в Kubernetes: Зачем это нужно?

Kubernetes — это по сути штурман для ваших приложений. Он автоматизирует процесс их деплоя и управления, решает за вас повседневные задачи, как настоящий помощник капитана. Вся идея в том, чтобы вы сосредоточились на развитии проекта, а Kubernetes сам справился с рутиной, следя за тем, чтобы приложения работали бесперебойно.

Причем, как отмечает автор, имя Kubernetes символично. Как штурман направляет корабль, так Kubernetes направляет ваше приложение, оставляя за вами только ключевые решения.

---

Почему Kubernetes стал таким популярным?

Развитие микросервисов и контейнеров изменило весь подход к разработке ПО. Если раньше приложения представляли собой большие монолитные системы, которые было сложно масштабировать и управлять, то теперь мы работаем с десятками и сотнями микросервисов. Kubernetes автоматизирует их управление, делая развертывание и масштабирование микросервисов тривиальной задачей. Автор книги подчеркивает: то, что раньше было сложно, с Kubernetes стало простым и очевидным.

---

Как Kubernetes решает повседневные задачи?

Читая книгу, я понял: Kubernetes — это не просто система для развертывания приложений. Это целая экосистема, которая позволяет автоматически управлять масштабированием, следить за здоровьем приложения и даже восстанавливаться после сбоев. Если ваше приложение упало — Kubernetes сам перезапустит его. А если произошел сбой оборудования, Kubernetes перенесет работу на здоровые узлы. Все это экономит время и нервы.

---

Основные компоненты Kubernetes

Автор подробно объясняет архитектуру Kubernetes, разделяя её на две главные плоскости: Control Plane и Workload Plane. Control Plane управляет состоянием всего кластера, а Workload Plane — это место, где запускаются приложения. Все выглядит логично, и благодаря иллюстрациям с каждым компонентом становится легче разобраться.

---

Личный опыт

Для меня этот материал стал отличным введением в тему. Книга Kubernetes in Action помогает понять не только теоретические основы, но и показывает, как Kubernetes действительно работает на практике. А самое главное — автор делает это легко и доступно, с примерами и наглядными пояснениями. Если вы хотите погрузиться в мир Kubernetes — это идеальная отправная точка.

От себя же я составил Mind Map первых двух частей, которым хотел бы поделиться в этом посте (пока что ссылкой на dropbox)

- https://www.dropbox.com/scl/fi/9fv5og1cchp44kofi9h0p/Kubernetes-in-Action-till-1.3.pdf?rlkey=vus4tw7vsrqf15naerns2x12v&st=6miusxfn&dl=0

Обзор следующих частей опубликую очень скоро🛥
AI tutor

Недавно мне скинули ссылку на AI Tutor для ChatGPT-4 https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor и я решил посмотреть, как это может помочь дата инженеру.

- Задача: Я хотел изучить внутренний движок запросов Apache Spark. Сам чат можно посмотреть на этой странице Notion: https://bakanchevn.notion.site/AI-Learning-782d325ffbee44ab88467bfcd9e6bc12

- Подача материала: В целом, формат ответов выглядит довольно хорошо, хотя есть некоторые недочеты (поэтому надо прокачивать скилл prompt engineering! в том числе). Я предполагаю, что для более программистских тем задачи сами по себе будут более детализированными. Иногда мне приходилось задавать вопрос несколько раз, чтобы действительно добраться до сути.

- Надежность и качество материала : Конечно, есть вопрос корректности материала, и однозначно, ориентироваться только на этот механизм не стоит 👨‍🦳, но в целом ссылки на код спарка и методы плюс минус валидные. Думаю, попробую другие темы и посмотрю, будет ли лучше или хуже.

- Тестирование. Я попробовал систему тестов и попробовал поделать ошибки в ответах. Кажется, что бот слишком вежливый, надо бы поиграться с параметрами 🤔 Фидбек выглядит валидным.

В целом, впечатление положительное, и думаю, что это может помочь людям, кто предпочитает формат самообучения, если конечно через пару лет AI не поработит нас окончательно 😡

P.S. В моем английском на скриншотах есть ошибки и недочеты, прошу этот момент игнорировать
Please open Telegram to view this post
VIEW IN TELEGRAM
Mentoring

Я участвую в менторинг программе SIngularis.AI. Моя анкета находится на борде https://mathshub.notion.site/Singularis-AI-Mentoring-Program-d562243465964a94b9debfc11d2a073b#72811df65806428dadde1428e3a9786b под именем NBK. Но в целом рекомендую посмотреть различные анкеты людей и в целом слак сообщество.

Но поскольку вы в этом канале и если вам почему-то интересен менторинг от меня или просто 1-он-1 созвон, то я также вполне доступен - https://calendly.com/d/z5w-f38-3qv/1h-mentoringу (календарь пока тестовый, если вдруг не смогу в конкретное время проговорю заранее, лучше указывать ник в телеграме, если будете сет апить митинг)

В целом, формат обсуждения довольно свободный, главное, чтобы он был связан с дата тематикой, в которой я хоть как-то могу вам помочь =) (Так же могу помочь с мок интервью форматом, формата coding sql interview, easy coding python interview, и system/data design)

P.S. Я не особо опытен именно в онлайн-менторинге, но люблю формат random cofee (встречи с разными людьми) и опыт менторинга внутри компании у меня также есть.

Мой линк для референса - https://www.linkedin.com/in/bakanchevn
И снова безработный

Пару дней назад был мой последний день в компании, так что можно порефлексировать, что удалось и что не удалось за 2 года.

Что удалось 👍

Когда я присоединился к компании, в ней было всего два дата инженера, и мы были частью BI команды. Однако мне 😃 (ну или не только мне :D) удалось продвинуть идею создания Data Platform или централизованной дата команды.

За полтора года мы смогли нанять и организовать Core Data команду до 8 фулл стек дата инженеров, 2 специалистов по DataOps и MLOps, менеджера (в виде меня) и дата архитектора. И есть планы по дальнейшему расширению команды. Команда получилась очень интернациональной, в ней работают люди из 9 разных стран, и это был довольно интересный вызов. Удалось организовать внутри сессию шейринга информации и внутреннего обучения.

Расширение команды стейкхолдеров - по факту на данный момент, команда стала централизацией по решению задач по дата инженерии для бизнеса, причем у нас была как прямая работа с департаментами, так и организация меж департаментовой кросс-интеграции

Мы успешно внедрили такие инструменты, как Snowflake, Hevodata и множество дата сервисов на GCP стеке. Кроме того. мы организовали Reverse-ETL и использовали различные подходы, включая batch и event-driven обработку данных.

Что осталось недостигнутым на момент ухода 👋

Хотя мы добились довольно неплохих результатов есть ряд областей, в которых не удалось достичь полной реализации на момент моего ухода.

В первую очередь, процессы CI/CD были только частично организованы, но я уверен, что к концу 2023 года они будут завершены.

Мониторинг данных все еще представляет собой набор несвязанных логов 🙆, и пока только в планах организация централизованного хранения. Однако мы уже внедрили критические алерты и систему уведомлений для пользователей.

Еще одной областью, которую мы не полностью освоили, является Data Quality. Хотя мы покрыли тестами часть данных с помощью dbt и создали более 500 тестов для моделей, есть еще много работы в области интеграции данных, которую мы покрыли лишь на 10-15% 👨‍🦳.

Data Lineage - это еще одна область, где мы не продвинулись дальше общения с интересными экспертами из dwh.dev и alvin.ai. 😟

Эстония в целом 🇪🇪

Эстония офигенна, отличная дигитализация, Таллинн в целом супер крутой город, довольно маленький по размеру, но у меня не было проблем в получении каких-либо услуг. Также я получил опыт аренды жилья (впервые в жизни!) и проживания в советских пяти- и девяти- этажках (не самый позитивный 😡). К сожалению, с моим паспортом в странах Балтии могут быть сюрпризы, поэтому, как минимум на время, еду в другую локацию

Что дальше 🍷

Пока могу озвучить только, что я в процессе переезда и куда переезжаю - это Берлин (или его окрестности в будущем), Германия 🇩🇪

P.S. В планах по этому двухлетнему опыту сделать докладик - Modern Data Stack - стоила ли игра свеч
Please open Telegram to view this post
VIEW IN TELEGRAM
EU зарплаты

https://medium.com/@mikldd/europe-data-salary-benchmark-2023-b68cea57923d

Некий EU бенчмарк для DE/AE/DS/DA, говорящий о том, что лучше всего денег дают Амстердам 🇳🇱, Дублин 🇮🇪 и Лондон 🏴󠁧󠁢󠁥󠁮󠁧󠁿 , при этом:

If you want to earn more than $200k in an IC data role in Europe, you’re most likely to do so if you work at a larger tech company such as Meta, Amazon and Booking.com 🤔

Про Мету, кажется, что для 200k TC для Senior Data Engineer нужно еще иметь контр оффер на руках для торговоли, базовый пакет E5 чуть меньше, для Букинга - не знаю в виду реджекта на фите 👨‍🦳, но вроде сеньоры там 130-180+ TC

Сам пост подсмотрел в Singularis.
Please open Telegram to view this post
VIEW IN TELEGRAM
Будни SQLщика в Clickhouse

1. Рассмотрим базовый запрос

select a1, a2, a3 from (
select a1, a2, a3 from
(
select 1 as a1
) a1
any left join
(
select 1 as a2
) a2
on a1.a1 = a2.a2
any left join
(
select 1 as a3
) a3
on a1.a1 = a3.a3
)


Запрос прекрасно работает

2. Добавим полное именование во внутренний запрос


select a1, a2, a3 from (
select a1.a1, a2.a2, a3.a3 from
(
select 1 as a1
) a1
any left join
(
select 1 as a2
) a2
on a1.a1 = a2.a2
any left join
(
select 1 as a3
) a3
on a1.a1 = a3.a3
)


Запрос перестает работать с ошибкой missing columns a1, a2, a3

3. Добавив alias во внутренний подзапрос все снова работает



select a1, a2, a3 from (
select a1.a1 as a1, a2.a2 as a2, a3.a3 as a3 from
(
select 1 as a1
) a1
any left join
(
select 1 as a2
) a2
on a1.a1 = a2.a2
any left join
(
select 1 as a3
) a3
on a1.a1 = a3.a3
)



Ну, кажется, логика плюс-минус понятна, полный алиасинг не прокидывается во внешний запрос


4. Однако!


select a1, a2 from (
select a1.a1, a2.a2 from
(
select 1 as a1
) a1
any left join
(
select 1 as a2
) a2
on a1.a1 = a2.a2
)


Работает!

(На этом месте автор ушел пить мяту и думать о вечном)

P.S. Автор понимает, что покопавшись в планах и коде самого КХ логическое объяснение может быть получено довольно просто, однако страдания обычного SQLщика от этого меньше не становятся
Буду рассказывать про modern data stack 😅на одном митапе с такими легендами dbt комьюнити как Артемий Козырь 💪 и Станислав Лысиков👉

Детали тут - https://cutt.ly/bwi8covj

Залетайте!

Вторая неделя выглядит тоже супер интересной!
Please open Telegram to view this post
VIEW IN TELEGRAM
Вторая неделя dbt meetup - https://space307.team/dbt-meetup

Расскажут про dbt и DataVault, как мигрировать 40+ DS/PA на dbt и не грустить и что такое экпозиция в dbt!
Любой дата проект в одной картинке
Data System Design Interview

Что это за зверь 🤔

Data system design - это подмножество сисдиз интервью, но с упором на data-driven задачу, где кандидат показывает способность построения систем в области хранения, управления и обработки данных.

Пример задачи 💁‍♂️
(Пример подробный, часто кандидат сам формулирует требования через диалог)

Мы компания Х, новая платформа для авторов. У каждого автора есть свое пространство и люди могут подписываться или отписываться от них. Запрос отписки может приходит либо от пользователя из UI интерфейса, отдельного запроса от департамента Customer Success или Legal (может содержать в себе большое число пользователей за один раз)

Нам необходимо разработать решение, у которого будет:
1. Возможность отправлять near real-time событие в уже разработанный UnsubMe сервис для отписки
2. Финальный отчет для сеньор менеджмента для анализа воронки отписок (с возможностью работы на разных уровнях агрегаций и времени)
3. Возможность для аналитиков осуществлять ad-hoc аналитику

Как проходит интервью 😅

Формат интервью обычно соответствует тем же временным рамкам, что и сис дизайн интервью (пример для интервью в 90 минут):

1. Интро (5 минут)
• Вы представляетесь друг другу и пара слов о бекграунде каждого. Для больших компаний обычно присутствуют 2 интервьюера.
2. Понимание проблемы и сбор требований (10-15 минут)
• Интервьюер описывает вам проблему и предлагает задавать вопросы
• Ваша задача проговорить функциональные и нефункциональные требования и те ограничения, которые будут приняты в виду ограничения по времени (например, если у вас задача по имплементации GDPR, то вы обсуждаете только часть удаления пользовательских данных)
• Также вы обсуждаете текущую нагрузку на систему и как это изменится в краткосрочной и среднесрочной перспективе
• В какой среде будет задача (клауд/гибрид/on-prem)? Есть ли доп ограничения вида Cloud Agnostic?
3. Высокоуровневый дизайн (15-20 минут)
• Вы совместно рисуете и обсуждает общую схему решения на уровне компонетов / сервисов / технологий. Тут часто бывают общие обсуждения уровня нужен ли нам дополнительной слой DWH, выбора синхронного или асинхронного метода передачи сообщения, необходимости какой-то шины данных и т.п.
4. Детальное обсуждения какого-то компонента (20-35 минут)
• Идет углубленное обсуждение какого-то компонента. В виду дата ориентированности, обычно это завязано на какой-то компонент стриминга, етл, дата модели и т.п.
5. (Опционально) Обсуждение оптимизаций, масштабирования или каких-то адаптаций для решения (10-15 минут)
• Такие обсуждения часто бывают в процессе предыдущих этапов или кандидат инициирует их
• Интервьюер может предложить изменение требований и спросить, какие адаптации надо сделать под них (например, подключение 3rd party vendor в примере компании X, который может работать с отписками)
6. Q&A и Вопросы Кандидата
• Обычная Q&A сессия, которая позволяет кандидату спросить про работу в компании

Примеры детальных обсуждений 👨‍🦳

Неполный список тем, который может быть в детальном обсуждении

• CDC. Как организовать, зачем, какой тип выбрать
• Message Broker, какой выбрать, какой критерий выбор, формат сообщений, какая модель обработки
• DWH. Нужен? Какая модель данных? Какие основные сущности будут?
• Качество данных. на каком этапе, какие тулзы, что покрыть
• Мониторинг. Что мониторить, как мониторить?
• Batch Processing. Как будет организована загрузка? Как выглядит инициализирующая / инкрементальная загрузка? Как ускорить загрузку?
• Оркестрация, как организовать, на каком этапе?

Как готовиться 😺
Курс/книги по системному дизайну (educative / карпов / System Design Interview от Alex Xu), общие книги по дата инженерии (Fundamentals of Data Engineering / DDIA) и более глубокое погружение в конкретные темы, которые могут всплыть.

Если времени не много, попробовать поделать мок интервью и по фидбеку пытаться что-то доизучить, но мок-интервьюеры смотрят на то, что интересно им, и могут упустить часть вещей. Я также провожу их в рамках моих менторинг сессий =)
Please open Telegram to view this post
VIEW IN TELEGRAM
Опыт собеседования на позицию Senior Staff Data Engineer 🤔

Недавно я принял участие в собеседовании на должность Senior Staff Data Engineer (Data Architecture) в компанию из сферы foodtech. Хотя я и не ищу совсем работу, мне было интересно пощупать немецкий рынок и попробовать себя в интервью на позицию Staff DE и роль была связана с дата моделированием.

Первоначальный контакт с рекрутером ☎️

Рекрутер нашёл меня в LinkedIn был краткий 10-15 минутный звонок. Обсуждали вакансию, мои ожидания, текущее состояние компании, мои интересы к роли и следующие шаги.

Собеседование с hiring manager 😃

Следующим этапом было интервью с непосредственным менеджером, которое было смесью проектного и подходящего интервью. Обсуждали весь скоуп по дата инженерии, особое внимание уделили end-to-end и CI/CD процессам, где у меня меньше опыта и я часто работаю с нестандартными решениями. На Q&A довольно откровенно отвечали о текущих болячках и что нужно улучшать.

Coding 👩‍💻

Техническое интервью по программированию было нестандартным и ориентированным на Data Engineering. За 90 минут предполагалось решить 2-3 задачи (batch, SQL, streaming). Собесил Staff DE.
Batch-задача - написать ETL на псевдо-Spark, включая базовые вопросы о partition pruning, partitioning и обработке dataframe.
SQL-задача - классика около-FAANG – создание модели данных и написание инкрементного заполнения. Как SQL-гик я постоянно докидывал corner case :D.
Streaming решили не делать поскольку оставалось 25 минут, и была расширенная Q&A сессия, где я поспрашивал про работу стаффом, организацию внутри команды, компании, и процессам.

СисДиз 😵

Интервью по системному дизайну было довольно стандартным. Было 2 интервьюера - Senior Staff DE и Staff SWE (или наоборот :D). Задача была связана с данными, но не требовала серьёзного масштабирования после анализа входных параметров.
На детальной части обсуждали Kafka, топики и схемы. А затем мы похоливарили с интервьюерам, так как они вели к одному решению, но оно мне не нравилось :D. Q&A было 5 минутным, так что просто спросил про работу стаффом в компании.

Обратная связь №1 👍

Рекрутер сделал фидбек по интервью.
По кодингу был strong go 😂, но был сделан акцент на то, что я усложнил SQL-часть, постоянно увеличивая сложность задачи.
По системному дизайну дали фидбек как улучшить процесс в целом.
По менеджерскому интервью было отмечено отсутствие глубины знаний CI/CD, частично из-за использования DBT Cloud, а не DBT Core.

Поведенческое интервью 👋

Финальный этап - интервью с VP of Data. Сначала он 20 минут рассказывал о компании, затем задавал поведенческие вопросы и обсуждал мои вопросы о работе в компании, практиках и сочетании data vault и data mesh. Почти не было bullshit, а были довольно четкие ответы с неплохой глубиной, но послевкусие было как будто бы не случилось фита.

Обратная связь №2 🚩

Перед второй сессией обратной связи мне уже сообщили об отказе, так что я был готов 👨‍🦳

В качестве фидбека  сказали, что решение принято уже на совместном обсуждении
Как плюсы - сильная ориентация на данные и аналитический подход, ориентация на клиента, предпочтение долгосрочного и стратегического подхода.
Отказ был обусловлен рядом факторов: неясные цели в отношении роли IC, не показал Learning never stops принцип, сомнения в том что буду адаптировн к быстроизменчивым средам.

Выводы ⚡️

Оценка рекрутеру - 5, компании и процессу интервью - 4, себе - 3+.
Что надо улучшить: начать уже готовиться к behaivoral interview, улучшить знания по сис дизу и английский с точки зрения коммуникации

А что по деньгам 💰
Компания была тир2 и была ожидаемой для вилки стаффа. Сам вилка, по моим ощущениям, это 105-130k  EUR base + 10-50k EUR bonus/RSU.
Please open Telegram to view this post
VIEW IN TELEGRAM
Database in 2023 A Year in Review

Обзор 2023 от Andy Pavlo. https://ottertune.com/blog/2023-databases-retrospective

- Векторные базы данных (ну или векторные поисковые движки) сильно в тренде в DS кругах. Я лично о них услышал в декабре, но в 2024 потрачу время на изучение. В статье сравнивают vector database и relational databases - https://www.youtube.com/watch?v=jDhVEjgCHGk&t=3s
- Обзор SQL: 2023 стандарта и SQL/PGQ. Property Graph Queries (SQL/PGQ): выглядят офигенно. Надо бы сделать еще 1 попытку прочитать современный стандарт 🙂
- Проблемы MariaDB. Мы только недавно добавили интеграцию с MariaDB на проекте, но до корпоратов это докатится года через 3-4, если будет поворо обратно к MySQL
- Рынок VS-финансирования СУБД проектов уменьшился, но есть интересные проекты в списке. Также Andy написал, что большему числу студентов потребовалась помощь в поиске internship.
- В конце обсуждается американская специфика о Larry Ellison, Elon Musk, и их взаимотношения. Рад, что Oracle снова на коне. Oracle как СУБД для меня точно в топ-3 по удобству и широты использования.
#никчитает
Обзор на Analytics Engineering with SQL and dbt

Сегодня узнал о выходе книги Analytics Engineering в O'Reilly with SQL and dbt - https://www.oreilly.com/library/view/analytics-engineering-with/9781098142377/

Автор был бы не автором, если бы ее уже не прочитал =)

Пройдемся по главам

1. Analytics Engineering. Обзорная глава про историю, появление и кто такие эти analytics engineers. Корни AE, откуда взялся BI, как в Cloud Era появились решения, демократизирующие инструментарий. Рассказ про жизненный цикл дата аналитики (-> Определение проблемы -> Моделирование данных -> Внедрение данных и трансформация -> Хранение данных и структурирование -> Визуализация данных -> DQ, мониторинг, тестированик и документировние ).
Обсуждают роль и ответственность AE, базовое обсуждение Data mesh и Data product, переход от легаси BI/ETL систем (с visual-coding etl и процедурными расширениями) в modern data stack (с visual-coding etl и процедурными расширениями, прим. Nik 🙂)

2. Data Modeling. Глава про моделирование данных. КМД, ЛМД и ФМД, нормализацию (да-да, нормальные формы в 2к24 😂), базовое ведение в схему звезда/снежинка с упоминанием Кимбала и Инмона, и невнятный параграф про Data Vault 😡. Обсуждается переход от монолитного дата моделирования к модульному дата моделировани. В конце вводят Medallion Architecture Pattern. Последнее, это просто Bronze-Silver-Gold layers - https://www.databricks.com/glossary/medallion-architecture

3. SQL For Analytics. 🔥 Рассказывают про основы SQL с оконками, join как обычно через диграммы Венна 😺. Вторая часть - про SQL for Distributed Data Processing, используя DuckDB, Polaris, и FugueSQL 🤯 (новое для меня).

4. Data Transformation with dbt.😃 Основы dbt, причем показывают как запускать только для dbt cloud (никакой core настройки не описано).

5. Dbt Advanced Topics😃. Кратко обсуждают такие понятия, как материализация, jinja шаблоны, макросы, пакеты и semantic layer.

6. Building An End-to-End Analytics Engineering Use Case 👍. Показывают полноценное "end-to-end" решение от заливки сырых данных в BigQuery из MySQL до финальной витрины данных и ad-hoc аналитики. 😎Треть главы уделена тому, как делать архитектуру дата решения (как определяем бизнес-процесс, понимаем, какие данные нужны, моделируем). Сначала проектируем - потом кодим. 🔥

⚡️Книга оставила смешанное впечатление. В плюс занесу 1 и 6 главу. В главе 2 про дата моделирование получилась какая-то каша терминов, и я не увидел какой-то раскрытости. 3 глава представляет собой базовое введение в SQL, и добавление про DuckDB, которое дальше вообще никак не используется 4 и 5 главы про dbt, уступают dbt мануалам.
Из минусов таже отмечу отсутствие Further Reading или доп материалов.
Читая книгу, я словил дежавю, как будто это мини-курс Analytics Engineer (Аналитик DWH) на ОТУС времен 2022 годов. Разрозненный материал, с разными доменными примерами и технологиями от главы к главе, который надо собрать как-то у себя в голове.


🙆Оценка 3/5. Подойдет, как доп. материал к dbt курсам, если у вас есть подписка O'Reilly.
Please open Telegram to view this post
VIEW IN TELEGRAM
#datadesign
WAP Pattern

Знаете ли вы, что такое WAP (Write - Audit - Publish. ) паттерн в дата инженерии? Скорее всего, многие из вас им уже пользуются! 🤔
Я объясню это на коленке, желающим детальных кишочек -> в ссылки снизу. 📌

Представим, я инженер в компании Colt 👍, и мы занимаемся доставкой еды. Моя зона ответственности - end-to-end решение для ежедневной отчетности в разрезе городов (прибыль, количество доставок, средний чек, среднее время доставки, ...).

У меня есть проблема с источником данных по возвратам денег (допустим кому-то что-то не доставили, и вам возвращают денег на счет). Он обновляется непостоянно, так еще и иногда там часто бывают ошибки в данных. 🆗

Когда менеджеры смотрят мой отчет, они недовольны тем, что цифры, которые они видели вчера резко меняются после обновлений. Они не верят нашим данным, поэтому продолжают использовать свои проверенные эксели. А я не получаю свой заслуженный promotion.😂

Что же делать? Мы можем добавить тесты! 👍 Но возникает дилемма - скорость доставки vs качество. Если взять dbt как инструмент, то базовая имплементация тестов выглядит следующим образом -> прогнали модель, запустили тест над моделью, если тест упал, анализируем. Но если это уже презентационный слой, то конечные пользователи уже увидят эти данные. Мы можем настроить алертинг, но кто будет в него смотреть.👨‍🦳

Поэтому в случае критичных отчетов / дата продуктов, можно применить подход WAP.

- Write. Записываем данные в stage таблицу / объект
- Audit. Проверяем качество и полноту данных на уровне stage таблицы. Есть проблема -> автоматический алерт команде и on-call инженер с радостью разбирается 😮 (можно еще больше автоматизировать в случае повторяемых случаев, например сразу с ноги выбивать дверь к коллегам с источника писать письмо / заводить инцидент ).
- Publish. Если все тесты успешно прошли, кладем в Publish слой. Это можно делать как логически (синонимы, линки на файловой системы, переопределение view, alter/modify partition, ...) или физически (ETL).

Есть еще один use-case применения WAP паттерна. Далеко не все системы поддерживают ACID транзакции, а те, которые поддерживают, не всегда готовы часами ждать тяжелых расчетов. Для организации консистентности (ну или чаще уменьшения неконсистентного промежутка по времени) вы можете подготовить свои 20+ таблиц в стейдже, а потом переключить их одновременно в презентационном слое. 🍷

Недостатки? Данные будут устаревшие, поэтому нам надо быстро сообщить об этом пользователям, чтобы они не сообщили об этом нам!🙂

Кроме этого, далеко не всегда причина может быть устранена быстро, но что с этим делать, обсудим в следующих постах.😵




Cсылочки 💻
- Верхнеуровневое обсуждение - https://lakefs.io/blog/data-engineering-patterns-write-audit-publish/
- Пример имплементации - https://lakefs.io/blog/write-audit-publish-with-lakefs/ , продолжение - https://lakefs.io/blog/write-audit-publish-with-lakefs/ и https://dagster.io/blog/python-write-audit-publish
- Видео - https://www.youtube.com/watch?v=fXHdeBnpXrg (в целом хорошее видео, сам WAP pattern с 16 минуты)
- Презентация для Iceberg - https://www.dremio.com/wp-content/uploads/2022/05/Sam-Redai-The-Write-Audit-Publish-Pattern-via-Apache-Iceberg.pdf
Please open Telegram to view this post
VIEW IN TELEGRAM
Залетел на подкаст / разговоры в FAANGTalk кекспертом эскпертом по DE 😂 на выпуск про дата инженерию.

Главным спикером был Vladimir Elfimov и видео стоит послушать ради него и презентации.
Я врывался пару раз с крайне важными вопросами, по типу мертв ли Hadoop 👋 и является ли Excel Reverse-ETL или ML системой 🤯

Обсудили такие темы:
- История развития Data Engineering
- «Большие данные» и его отличие от «средних данных».
- Инструменты Data Engineering, и отличия от Data Science и Data Analytics
- C-level в сфере Data Engineering (CDO, CIO, CAO).

Немного затронули:
- Обработка данных. Отличия между pull и push системами, batch и streaming обработкой данных
- Data Warehouse, Data Marts, Data Lake, Data Platform, Data Mesh и Data LakeHouse
- Планирование дата-архитектуры и сложности, связанные с этим процессом

Само видео: https://www.youtube.com/watch?v=VyUqrYfj_yY
Please open Telegram to view this post
VIEW IN TELEGRAM