Data Engineering / Инженерия данных / Data Engineer / DWH – Telegram
Data Engineering / Инженерия данных / Data Engineer / DWH
2.28K subscribers
50 photos
7 videos
53 files
356 links
Data Engineering: ETL / DWH / Data Pipelines based on Open-Source software. Инженерия данных.

DWH / SQL
Python / ETL / ELT / dbt / Spark
Apache Airflow

Рекламу не размещаю
Вопросы: @iv_shamaev | datatalks.ru
Download Telegram
How we built fast UPDATEs for the ClickHouse column store

▫️Part 1: Purpose-built engines

▫️Part 2: SQL-style UPDATEs

В первой части автор Том Шрайбер поясняет, как ClickHouse обходится без традиционного обновления строк, превращая UPDATE/DELETE в вставки с помощью специальных движков вроде ReplacingMergeTree, CollapsingMergeTree и др., которые позднее сливаются фоновым процессом, обеспечивая высокую скорость и масштабируемость на аналитических нагрузках. Это решение позволило объединить эффективность вставок и возможность правки данных без ущерба для быстрого чтения.

Вторая статья рассказывает о новой архитектуре патч‑партиций (patch parts), благодаря которым ClickHouse наконец поддерживает классический синтаксис UPDATE … WHERE, но без затрат на перестройку колонок: патч‑партиции содержат только изменённые значения и сливаются в фоновом режиме, обеспечивая мгновенную видимость изменений и высокую производительность. Автор подробно описывает эволюцию от тяжёлых мутаций до экономных, декларативных обновлений на основе SQL, вдохновлённых механизмами MergeTree.

#ClickHouse
👍15
Глава 4. Хранение и извлечение

Продолжение перевода книги «Designing Data-Intensive Applications, 2nd Edition»

Глава объясняет ключевые отличия между движками хранения, оптимизированными под OLTP (такими как лог‑структурированные, LSM‑деревья и B‑деревья), и OLAP/аналитическими хранилищами, где используются колоночные форматы сжатия, векторной обработкой и материализованными представлениями, чтобы эффективно работать с большими объёмами и аналитическими запросами

https://datatalks.ru/chapter-4-storage-and-retrieval/


#DesigningDataIntensiveApplications
🔥191👍1
Небольшая статья "Введение в gRPC: Python, proto Protocol Buffers, client и server"

с коротким упрощенным примером "gRPC Unary Client <---> Server" на github grpc-protobuf-example

Краткий алгоритм "Как начать работать с gRPC":
1. Установить зависимости (grpcio, grpcio-tools)
2. Определить контракт (.proto файл)
3. Сгенерировать код из .proto через grpc_tools.protoc
4. Реализовать сервер
5. Реализовать клиент (вызов RPC)

Если вам необходимо интегрироваться с каким-либо сервисом, который поддерживает gRPC, то алгоритм действий следующий:
1. Получить/скачать из репозитория .proto файл
2. Сгенерировать Python-клиентский код из .proto с помощью grpc_tools.protoc
3. Импортировать сгенерированный код в ваш проект
4. Подключиться к gRPC-endpoint через channel
5. Вызывать методы через stub

#gRPC #ProtoBuf
👍53
Глава 5. Кодирование и Эволюция (Encoding and Evolution)

Продолжение перевода книги «Designing Data-Intensive Applications, 2nd Edition»

Статья рассматривает, как различные форматы кодирования данных (JSON, XML, Protocol Buffers, Avro и др.) обеспечивают поддержку эволюции — то есть возможности изменять структуры данных (схемы), сохраняя совместимость между старым и новым кодом.

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

Также статья показывает, как схемы и кодирование применяются при передачи данных между компонентами (базы данных, RPC, веб-сервисы, события), и какие практики и форматы (например, Avro, вызовы сервисов) подходят для поддержания эволюции в распределённых системах.


https://datatalks.ru/chapter-5-encoding-and-evolution/

#DesigningDataIntensiveApplications
🔥9👍1
Если хотели поиграться с trino iceberg и minio, тот вот репозиторий с docker compose настройками.

Можно провалиться в кишки таблицы iceberg на s3, ну и посмотреть на логику работы trino в ui.

Для развертывания трино необходим новый тип CPU, не везде может запуститься. Но в крайнем случае можно VPS арендовать на время 😉

https://github.com/ivanshamaev/trino-iceberg-minio

#trino #iceberg #minio
🔥304👍4
Оптимизация запросов в Trino

Наковырял из документации основные термины и понятия по Trino (плюс настройки из последней версии 478, которые могут пригодиться для оптимизации). Получился в некотором виде конспект.

https://ivan-shamaev.ru/trino-query-optimizer/

Также на днях вышел перевод книги Trino. Анализ больших данных.

Первая глава и оглавление доступны для просмотра

#trino #iceberg
🔥20👍71
Как устроена работа Iceberg на примере Trino и Rest Catalog?

Iceberg - это табличный формат хранения данных в datalake, который управляется через библиотеку на Java (есть также реализации на Go, Rust, C++ и Python). Но базово работает через Java.
В статье кратко рассматривается как устроено Trino и как устроен Iceberg Java API (без погружения в разработку).

Ну и ссылочки на deepwiki по Iceberg/Trino/Rest Catalog.

https://ivan-shamaev.ru/how-iceberg-works-using-trino-and-rest-catalog/

#Trino #Iceberg #RestCatalog #Java
🔥102👍2👀1
Trino vs Starrocks.pdf
1 MB
Обзор Trino vs Starrocks

Кажется, что Trino выигрывает по популярности, как единый SQL инструмент под разные источники данных и возможность их объединить (Federated queries). Еще в Трино имеется фича по динамическому расширению воркеров и Velox на C++.

На одном из meetup команда Авито говорила, что в Starrocks плохо обстоят дела с ограничениями по ресурсам на query. То есть может случиться, что несколько запросов заберут все ресурсы и кластер может "упасть" (возможно ошибаюсь в пересказе). Может быть уже это пофиксили в новых версиях. В трино похожая ситуация может быть, если включить FTE Task mode, то может закончиться память.
Еще в Starrocks при рестарте загружаются заново детальные Iceberg statistics.

Пока по обзорам Starrocks выглядит лучше, но вероятно есть детали. Нужно иметь ввиду, что у Trino ОЧЕНЬ много различных настроек и конфигураций. Взять тот же FTE (aka spills). Поэтому только по одним графикам сложно утверждать однозначно, что Starrocks лучше.

Не воспринимайте этот пост как рекомендацию 😇
👍9
Настроение четверга
😁16💯8