5 minutes of data – Telegram
5 minutes of data
1.88K subscribers
190 photos
4 videos
2 files
511 links
I’m making my life less dull by spending time learning and researching “how it works“ in the data engineering field.

Интерактивный учебник SQL
https://querynomic.one/#/

по всем вопросам @just_vanich
Download Telegram
Netflix Tech Stack - Databases

Команда инжинеров Netflix выбирает различные базы данных
для обеспечения возможности потоковой передачи в больших масштабах.

В качестве реляционной базы данных: Netflix выбирает MySql
для выставления счетов, подписок, налогов и доходов.
Они также используют CockroachDB для поддержки многорегиональной архитектуры,
глобальных транзакций и data pipeline workflows.

Колоночные базы данных: Netflix в основном использует их в аналитических целях.
Они используют Redshift и Druid для структурированного хранения данных, Spark и конвейерную обработку данных,
а также Tableau для визуализации данных.

В качестве key-value базы данных: Netflix в основном использует EVCache,
построенный на основе Memcached. EVCache работает с Netflix более 10 лет
и используется для большинства сервисов, кэшируя различные данные,
такие как домашняя страница Netflix и персональные рекомендации.

Wide-column база данных: Cassandra обычно является выбором по умолчанию в Netflix.
Они используют его практически для всего, включая информацию о видео/актере,
пользовательские данные, информацию об устройстве и историю просмотров.

Time-series база данных: Netflix создал базу данных в памяти с открытым исходным кодом
под названием Atlas для хранения и агрегирования показателей.

Неструктурированные данные: S3 является выбором по умолчанию и хранит практически все,
что связано с файлами изображений, видео, показателей и журналов. Apache Iceberg также используется с S3 для хранения больших данных.
Не так давно я писал про PeerDb.

Подъехали бенчмарки, где сравнивают PeerDb и Airbyte.

На обработку 1.5 тб данных, точнее перегнать их в Snowflake:
Airbyte заняло 83 часа
PeerDb заняло 5 часов.

А по заявлениям ребят из PeerDb, Fivetran будет медленнее чем Airbyte.

Такая скорость в PeerDb достигается, за счёт параллелизма.

Подробнее тут.
Подготовил лонгрид:
Правда о Airflow, Prefect, Dagster и Mage.

Добро пожаловать под кат.

тык
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
How do companies ship code to production?
👍6
Шаг 1. Процесс начинается с того, что владелец продукта создает пользовательские истории на основе требований.

Шаг 2. Команда разработчиков собирает пользовательские истории из бэклога и запускает их в спринт в течение двухнедельного цикла разработки.

Шаг 3. Разработчики помещают исходный код в репозиторий кода Git.

Шаг 4: В Jenkins запускается сборка. Исходный код должен пройти модульные тесты, порог покрытия кода и шлюзы в SonarQube.

Шаг 5. После успешного завершения сборки она сохраняется в артефакте. Затем сборка развертывается в среде разработки.

Шаг 6. Над разными функциями может работать несколько команд разработчиков. Функции необходимо тестировать независимо, поэтому они развертываются на QA1 и QA2.

Шаг 7. Команда контроля качества выбирает новые среды контроля качества и выполняет тестирование качества, регрессионное тестирование и тестирование производительности.

Шаг 8. Как только сборки QA проходят проверку команды QA, они развертываются в среде UAT.

Шаг 9. Если тестирование UAT пройдет успешно, сборки станут кандидатами на выпуск и будут развернуты в производственной среде по графику.

Шаг 10. Команда SRE (Site Reliability Engineering) отвечает за production мониторинг.
System design 101

Этот репозиторий содержит руководство, объясняющее сложные системы с помощью визуальных средств и простых терминов. Он предназначен для людей, готовящихся к собеседованию по проектированию систем, или для тех, кто хочет просто понять, как системы работают под поверхностью. В руководстве рассматриваются протоколы связи, CI/CD, шаблоны архитектуры, архитектура микросервисов, платежные системы и многое другое.
👍54
У dagster, тот что убийца airflow есть достаточно не плохой блог, где они рассказывают про best practices в дата инжиниринге.

Серии статей о Python для дата инжиниринга , призванной помочь инженерам данных, специалистам по данным, аналитикам данных, инженерам машинного обучения или другим людям, которые плохо знакомы с Python, освоить основы. На сегодняшний день это руководство для начинающих состоит из следующих статей:

Part 1: Python Packages: a Primer for Data People (part 1 of 2)

Part 2: Python Packages: a Primer for Data People (part 2 of 2)

Part 3: Best Practices in Structuring Python Projects

Part 4: From Python Projects to Dagster Pipelines

Part 5: Environment Variables in Python

Part 6: Type Hinting

Part 7: Factory Patterns

Part 8: Write-Audit-Publish in data pipelines

Part 9: CI/CD and Data Pipeline Automation (with Git)
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Лучшие способы проверить функциональность системы

Тестирование функциональности системы,
является важным шагом в разработке программного обеспечения и процессах проектирования.

Оно гарантирует, что система или программное приложение работают должным образом,
соответствуют требованиям пользователя и работают надежно.

Здесь мы рассмотри лучшие основные способы тестирования:

Модульное тестирование: обеспечивает правильную работу отдельных компонентов кода по отдельности.

Интеграционное тестирование: проверяет, что различные части системы работают без сбоев.

Тестирование системы: оценивается соответствие всей системы требованиям пользователя и производительности.

Нагрузочное тестирование: проверяет способность системы справляться с высокими рабочими нагрузками и выявляет проблемы с производительностью.

Тестирование на ошибки: оцените, как программное обеспечение обрабатывает неверные входные данные и ошибочные состояния.

Автоматизация тестирования: автоматизирует выполнение тестовых примеров для повышения эффективности, повторяемости и уменьшения количества ошибок.

Как вы подходите к тестированию функциональности системы в своих проектах по разработке программного обеспечения?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Подъехал "убийца DBT"

Встречаем SQL Mesh

SQLMesh можно использовать через CLI/ноутбук или в веб-IDE с открытым исходным кодом.
SQLMesh создает эффективные среды разработки и промежуточного хранения с помощью «Виртуальных витрин данных» с использованием представлений,
что позволяет вам плавно откатывать или накатывать изменения!
С помощью простой замены указателя вы можете перенести свои «промежуточные» данные в рабочую среду.
Это означает, что вы получаете неограниченные среды copy-on-write при записи,
которые делают исследование данных и предварительный просмотр изменений дешевыми, простыми и безопасными.

Основной концепцией SQLMesh является идея виртуальных сред данных,
которые представляют собой набор представлений в схеме,
указывающих на материализованные таблицы, хранящиеся в отдельной схеме

Некоторые другие ключевые особенности:

- Автоматическое создание DAG путем семантического анализа и понимания сценариев SQL или Python.

- Модульные и интеграционные тесты CI-Runnable с возможностью преобразования в DuckDB.

- Обнаружение и согласование изменений на уровне столбца

- Нативная интеграция с Airflow

- Импортируйте существующий проект DBT и запустите его в среде выполнения SQLMesh(в превью)

Выглядит достаточно интересно
chDB — это встроенный SQL OLAP Engine,
который использует ClickHouse для обработки. Это устраняет необходимость отдельной установки ClickHouse и сводит к минимуму копирование данных между C++ и Python с помощью MemoryView.
chDB поддерживает широкий спектр форматов ввода и вывода, включая Parquet, CSV, JSON, Arrow, ORC и другие.

#database
Как работают C++, Java, Python?

Скомпилированные языки компилируются в машинный код компилятором.
Машинный код позже может быть выполнен непосредственно процессором. Примеры: C, C++, Go.

Язык байт-кода, такой как Java, сначала компилирует исходный код в байт-код, а затем JVM выполняет программу.
Иногда JIT-компилятор (Just-In-Time) компилирует исходный код в машинный код, чтобы ускорить выполнение. Примеры: Java, C#.

Интерпретируемые языки не компилируются.
Они интерпретируются интерпретатором во время выполнения. Примеры: Python, Javanoscript, Ruby.

Компилируемые языки обычно работают быстрее, чем интерпретируемые.
👍1
ScratchDB — это оболочка над Clickhouse,
которая позволяет пользователям вводить произвольные данные JSON и легко выполнять аналитические запросы.
Он автоматически генерирует таблицы и столбцы по мере поступления новых данных.
Less Components, Higher Performance: Apache Doris Instead of ClickHouse, MySQL, Presto, and HBase
Оригинальная статья на Medium (5 min read)


Стоит прочитать или нет? Сделали краткое содержание 🙌


Цель: Создание единой OLAP-платформы для страховой компании для выполнения задач анализа данных.

Основные задачи:
- Самостоятельный запрос на страховой контракт для клиентов.
- Многомерный анализ для аналитиков.
- Инструменты для визуализации тенденций продаж страхования.

Первоначальная архитектура: Архитектура Lambda с разделением на пакетную и потоковую обработку.

Используемые инструменты:

ClickHouse: Для чтения плоской таблицы. Столкнулись с проблемами при соединении таблиц и обновлениях в реальном времени.

MySQL: Используется для хранения метрических данных. Столкнулись с проблемами производительности при увеличении данных.

Apache Hive + Presto: Hive для пакетной обработки и Presto для интерактивного анализа.

Apache HBase: Для запросов по основному ключу. Ограниченная возможность чтения столбцов, не являющихся основными ключами.

Проблемы: Сложность из-за множества компонентов, требования к обучению и риски задержек.

Решение: Переход к Apache Doris, который предлагает:

- Анализ данных в реальном времени и в офлайн-режиме.
- Интерактивный анализ с высокой пропускной способностью.
- Запросы с высокой параллельностью.

Преимущества Apache Doris:
- Упрощенная архитектура данных.
- Сокращение человеческих усилий и затрат.
- Высокая эффективность с быстрыми ответами на запросы.
- Улучшенная доступность услуг и функции восстановления после сбоев.

#почитать
JetBrains выпустили новый продукт.

Writerside — инструмент технической документации. Он имеет множество функций, таких как встроенный пользовательский интерфейс Git, автоматические тесты, поддержка Markdown, предварительный просмотр в реальном времени и многое другое. Так же есть генерация документации для REST API.
2
Streamdal — open-source инструмент, который позволяет в режиме реального времени отслеживать следующие показатели:

🔵 Data observability

🔵 Data governance & enforcement

🔵 Data quality monitoring

🔵 Data transformation + obfuscation + masking + stripping

Вам не нужно устанавливать сервер, консоль или какое-либо из ваших приложений, чтобы увидеть Streamdal в действии.
Есть живая демо-версия :)

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

Так же можно почитать манифест разработчиком, зачем и какие цели решает продукт.

Выглядит на самом деле достаточно красиво и достаточно простая интеграция

#opensource
#obsevability
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1🐳1
Увидел интересный пост на Reddit.
Инструменты/технологии, которые вы изучали(потратили много времени), но в дальнейшем не использовали.
Отдельно доставляют комментарии)

Есть ли у вас примеры таких технологий?

Я как то изучал Talend, даже записал пару видео на YouTube, но так и не использовал его на работе.
Git for Data

Dolt - это база данных, которую можно форкать, клонировать, делать merge, pull, push.
Вообщем все тоже самое что и в git.
Подключиться можно так же как и к MySQL, выполнять обычные запросы к бд.

Dolt полностью совместим с MySQL, поэтому может быть развернуть, как реплика MySQL.

It's like Git and MySQL had a baby. 😅
На канале был пост про супер быстрый линтер для Python ruff, где я спрашивал, зачем скорость для линтера?

Сегодня посмотрел видео в YouTube от evrone, где рассказывают про ruff и почему, он скорее всего вам не нужен.
This media is not supported in your browser
VIEW IN TELEGRAM
В DBeaver есть плагин для работы с OpenAI.
Сегодня попробовал его, простые задачи решает правильно.

Есть конечно вопросы к data privacy, но пишут
We prioritize data safety and user privacy.

- No Table Data: Only metadata like table and column names are shared with OpenAI. Actual table data is not transmitted.

- User Consent: On the first use of AI completion for a specific connection, DBeaver will prompt for your confirmation to send metadata.
This confirmation is mandatory to use the feature.

upd: закинул пару задач со StrataScratch, тоже решил правильно.
👍1
Подъехала новая архитектура ELTP.

Extract, Load, Transform, and Publish.

Этап publish похож на Reverse ETL, но как пишет автор статьи, вы не понимаете - это другое.

All Reverse ETL destinations are Publish-type destinations, but not all Publish destinations are Reverse ETL.

Сама статья в блоге Airbyte.

Похоже теперь каждая компания хочешь придумать модный buzz word, как DBT делают с modern data stack.
И потом продвигать новую концепцию на всех конференциях.
👍32