Forwarded from SmartData — конференция по инженерии данных
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
SmartData 2024
Share your videos with friends, family, and the world
🔥1
Как выглядит кошмар аналитика
В честь Хеллоуина решили обсудить с вами кое-что действительно жуткое — страшнее приведений или клоунов.
Плохой SQL. 👻
Потому что приведений не существует, а вот кривой код очень даже реален и иметь с ним дело приходится регулярно. Для затравки нашли для вас целую подборку примеров, среди которых:
🔵 нагромождение
🔵 несколько уровней подзапросов, разобраться в которых не может даже сам автор,
🔵 вьюхи поверх вьюх поверх других вьюх — сначала это может быть удобно и красиво, но со временем система рискует стать слишком непонятной, еще и создает нагрузку на базу,
🔵 попытки «подчистить» результат запроса с помощью
Встречались с чем-то подобным? Или даже видели что-нибудь похуже? Делитесь в комментариях!👀
В честь Хеллоуина решили обсудить с вами кое-что действительно жуткое — страшнее приведений или клоунов.
Плохой SQL. 👻
Потому что приведений не существует, а вот кривой код очень даже реален и иметь с ним дело приходится регулярно. Для затравки нашли для вас целую подборку примеров, среди которых:
CASE WHEN, создающее хаос, в котором может разобраться только автор кода (но это не точно),DISTINCT для того, которые прячут проблему вместо того, чтобы ее решать.Встречались с чем-то подобным? Или даже видели что-нибудь похуже? Делитесь в комментариях!
Please open Telegram to view this post
VIEW IN TELEGRAM
Substack
SQL Anti-Patterns You Should Avoid
Introduction
Forwarded from DE
DE_Cheatsheet.pdf
106.1 KB
В качестве регулярных напоминаний, всяческий полезный [и бесполезный] код утилит для командной строки которые я когда-то делал и иногда продолжаю развивать когда это необходимо для работы,
например, для Dateno. Лично я испытываю глубокую привязанность к работе в командной строке отсюда и все эти инструменты:
- undatum - многофункциональная утилита для обработки данных изначально в формате JSON lines, делалась как xsv для JSON/JSON lines, я её лично активно и везде применяю.
- docx2csv - утилита по извлечению таблиц из файлов MS Word (.docx), настолько простая что надо её с чем-то объединить
- mongo2md - инструмент автоматизации документирования коллекций в MongoDB было полезно когда MongoDB была в основе технологического стека разных проектов, сейчас скорее буду переводить в статус легаси, но полезно как пример автодокументирования.
- metawarc утилита по извлечению метаданных из файлов WARC, умеет собирать данные из pdf, doc, docx, pdf, png, jpg, xls, xlsx и других файлов документов и изображений. Полезна для разного рода OSINT задач и для автоматизированного анализа WARC файлов
- apibackuper утилита для сбора данных из API через декларативно заданные правила. Использую её повсеместно и всё время хочу переписать чтобы вместо cfg файлов использовать yaml/toml, заменить zip контейнеры на базу duckdb и в целом сделать удобнее. Но и так работает
- wparc архиватор API и данных из Wordpress и файлов заодно. Одна из утилит для архивации сайтов для RuArxive
- lazyscraper скрейпер сайтов для лентяев, когда хочется извлечь данные минимальными усилиями и без программирования. Я её чуть-чуть не доделал чтобы даже xpath не использовать, но в остальном вполне рабочий инструмент
- metacrafter мой любимый инструмент идентификации структуры таблиц в файлах и таблицах с данными. Надо объединить с undatum её конечно же
- apicrafter утилита по быстрому созданию API поверх коллекций в MongoDB. Когда-то использовалась в проектах где основной стек был на MongoDB, сейчас всё по другому я бы делал
например, для Dateno. Лично я испытываю глубокую привязанность к работе в командной строке отсюда и все эти инструменты:
- undatum - многофункциональная утилита для обработки данных изначально в формате JSON lines, делалась как xsv для JSON/JSON lines, я её лично активно и везде применяю.
- docx2csv - утилита по извлечению таблиц из файлов MS Word (.docx), настолько простая что надо её с чем-то объединить
- mongo2md - инструмент автоматизации документирования коллекций в MongoDB было полезно когда MongoDB была в основе технологического стека разных проектов, сейчас скорее буду переводить в статус легаси, но полезно как пример автодокументирования.
- metawarc утилита по извлечению метаданных из файлов WARC, умеет собирать данные из pdf, doc, docx, pdf, png, jpg, xls, xlsx и других файлов документов и изображений. Полезна для разного рода OSINT задач и для автоматизированного анализа WARC файлов
- apibackuper утилита для сбора данных из API через декларативно заданные правила. Использую её повсеместно и всё время хочу переписать чтобы вместо cfg файлов использовать yaml/toml, заменить zip контейнеры на базу duckdb и в целом сделать удобнее. Но и так работает
- wparc архиватор API и данных из Wordpress и файлов заодно. Одна из утилит для архивации сайтов для RuArxive
- lazyscraper скрейпер сайтов для лентяев, когда хочется извлечь данные минимальными усилиями и без программирования. Я её чуть-чуть не доделал чтобы даже xpath не использовать, но в остальном вполне рабочий инструмент
- metacrafter мой любимый инструмент идентификации структуры таблиц в файлах и таблицах с данными. Надо объединить с undatum её конечно же
- apicrafter утилита по быстрому созданию API поверх коллекций в MongoDB. Когда-то использовалась в проектах где основной стек был на MongoDB, сейчас всё по другому я бы делал
GitHub
GitHub - datacoon/undatum: undatum: a command-line tool for data processing. Brings CSV simplicity to NDJSON, BSON, XML and other…
undatum: a command-line tool for data processing. Brings CSV simplicity to NDJSON, BSON, XML and other dat files - datacoon/undatum
Forwarded from System Design & Highload (Alexey Rybak)
Завтра стрим с Владимиром Перепелицей
Уже завтра, 6-го ноября в 18:00 MSK состоится очередная Q&A сессия. На этот раз у нас в гостях Владимир Перепелица, эксперт в больших проектах, cоздатель S3 в облаке VK, Solution Architect в Exness, бессменный автор и ведущий одного их самых популярных курсов Devhands - интенсива по очередям (Kafka, NATS и др.).
Обсудим:
- Kafka 4: какие принципиальные изменения принес этот релиз? Поменялось ли что-то в Кафке в плане HA и катастрофо-устойчивости?
- Действительно ли с ростом производительности железа и возможностей облаков наступает конец хайлоада as we know it? Какие инженерные знания сейчас наиболее востребованы?
А так же многие другие вопросы (преимущественно по брокерам и очередям), которые мы собираем в клубе выпускников Devhands и в комментариях к этому посту.
Встреча состоится в Zoom в четверг 6-ноября 18:00 MSK. Встреча свободна, но нужно быть авторизованным в Zoom.
Можно добавить ics в календарь.
Приходите, приводите друзей! И присылайте ваши вопросы в комментарии.
Уже завтра, 6-го ноября в 18:00 MSK состоится очередная Q&A сессия. На этот раз у нас в гостях Владимир Перепелица, эксперт в больших проектах, cоздатель S3 в облаке VK, Solution Architect в Exness, бессменный автор и ведущий одного их самых популярных курсов Devhands - интенсива по очередям (Kafka, NATS и др.).
Обсудим:
- Kafka 4: какие принципиальные изменения принес этот релиз? Поменялось ли что-то в Кафке в плане HA и катастрофо-устойчивости?
- Действительно ли с ростом производительности железа и возможностей облаков наступает конец хайлоада as we know it? Какие инженерные знания сейчас наиболее востребованы?
А так же многие другие вопросы (преимущественно по брокерам и очередям), которые мы собираем в клубе выпускников Devhands и в комментариях к этому посту.
Встреча состоится в Zoom в четверг 6-ноября 18:00 MSK. Встреча свободна, но нужно быть авторизованным в Zoom.
Можно добавить ics в календарь.
Приходите, приводите друзей! И присылайте ваши вопросы в комментарии.
Полезные ссылки про данные, технологии и не только:
- A Deep Dive into DuckDB for Data Scientists о том как дата сайентистам использовать DuckDB. Если коротко, то всё довольно просто и понятно.
- ClickHouse welcomes LibreChat: Introducing the open-source Agentic Data Stack Clickhouse поглотил LibreChat, инструмент с открытым кодом для создания ИИ чатботов. Инструмент был хороший, надеюсь таким и останется.
- Hannes Muhleisen - Data Architecture Turned Upside Down отличное выступление Hannes Muhleisen про ключевые изменения в архитектуре данных последних лет. Полезно и по смыслу и по визуальному представлению хорошо
- agor: Next-gen agent orchestration for AI coding ИИ агент для управления ИИ кодированием, автор его создатель Superset и позиционирует этот проект как думай об асситентах для кодирования как о Figma. С открытым. кодом. Любопытно, но ИМХО автор плохо объясняет преимущества, как подхода, так и интерфейса.
- A Deep Dive into DuckDB for Data Scientists о том как дата сайентистам использовать DuckDB. Если коротко, то всё довольно просто и понятно.
- ClickHouse welcomes LibreChat: Introducing the open-source Agentic Data Stack Clickhouse поглотил LibreChat, инструмент с открытым кодом для создания ИИ чатботов. Инструмент был хороший, надеюсь таким и останется.
- Hannes Muhleisen - Data Architecture Turned Upside Down отличное выступление Hannes Muhleisen про ключевые изменения в архитектуре данных последних лет. Полезно и по смыслу и по визуальному представлению хорошо
- agor: Next-gen agent orchestration for AI coding ИИ агент для управления ИИ кодированием, автор его создатель Superset и позиционирует этот проект как думай об асситентах для кодирования как о Figma. С открытым. кодом. Любопытно, но ИМХО автор плохо объясняет преимущества, как подхода, так и интерфейса.
CodeCut
A Deep Dive into DuckDB for Data Scientists
Discover how DuckDB simplifies data querying with zero configuration and outperforms pandas for large datasets.
- quackstore расширение для DuckDB для кеширования облачных дата файлов, позволяет сильно ускорить выполнение запросов к облачным файлам благодаря их частичному сохранению. Полезная штука, её можно бы и сразу внутрь DuckDB ибо логично
- Catalog of Patterns of Distributed Systems для тех разработчиков кто хотят не только кодировать, но и двигаться в сторону архитектуры ПО.
- The Data Engineering Agent is now in preview Гугл запустили ИИ агента для дата инженеров внутри BigQuery, конечно же на базе Gemini. Дайте мне такой же только с открытым кодом и без инфраструктуры Google и с поддержкой всех основных инструментов и СУБД!
- Catalog of Patterns of Distributed Systems для тех разработчиков кто хотят не только кодировать, но и двигаться в сторону архитектуры ПО.
- The Data Engineering Agent is now in preview Гугл запустили ИИ агента для дата инженеров внутри BigQuery, конечно же на базе Gemini. Дайте мне такой же только с открытым кодом и без инфраструктуры Google и с поддержкой всех основных инструментов и СУБД!
GitHub
GitHub - coginiti-dev/QuackStore
Contribute to coginiti-dev/QuackStore development by creating an account on GitHub.
Если хотели поиграться с trino iceberg и minio, тот вот репозиторий с docker compose настройками.
Можно провалиться в кишки таблицы iceberg на s3, ну и посмотреть на логику работы trino в ui.
Для развертывания трино необходим новый тип CPU, не везде может запуститься. Но в крайнем случае можно VPS арендовать на время 😉
https://github.com/ivanshamaev/trino-iceberg-minio
#trino #iceberg #minio
Можно провалиться в кишки таблицы iceberg на s3, ну и посмотреть на логику работы trino в ui.
Для развертывания трино необходим новый тип CPU, не везде может запуститься. Но в крайнем случае можно VPS арендовать на время 😉
https://github.com/ivanshamaev/trino-iceberg-minio
#trino #iceberg #minio
GitHub
GitHub - ivanshamaev/trino-iceberg-minio: Тестовый проект по Trino + Iceberg + Rest Catalog + Minio s3
Тестовый проект по Trino + Iceberg + Rest Catalog + Minio s3 - ivanshamaev/trino-iceberg-minio
Основные идеи Apache Iceberg одной картинкой
1 Метаданные важнее данных. Может лежать много паркетов, но если нет их описания в манифестах, то никто их читать не будет
2 Древовидная структура данных и метаданных, сходящаяся к одному корневому файлу. Записать и удалить много файлов - не-атомарная операция, но заменить один главный файл можно атомарно всегда в любой системе хранения. Отсюда почти-транзакционность.
3 Хранение предыдущих состояний, таблица превращается в лог состояний с возможностью прочитать любую точку в истории. Но только старые версии надо потом подчищать через обсуживающие процедуры.
4 (Мета)Каталог как вспомогательный сервис. Для MVCC и честного ACID, для хранения статистики, RBAC и других обслуживающих функций
1 Метаданные важнее данных. Может лежать много паркетов, но если нет их описания в манифестах, то никто их читать не будет
2 Древовидная структура данных и метаданных, сходящаяся к одному корневому файлу. Записать и удалить много файлов - не-атомарная операция, но заменить один главный файл можно атомарно всегда в любой системе хранения. Отсюда почти-транзакционность.
3 Хранение предыдущих состояний, таблица превращается в лог состояний с возможностью прочитать любую точку в истории. Но только старые версии надо потом подчищать через обсуживающие процедуры.
4 (Мета)Каталог как вспомогательный сервис. Для MVCC и честного ACID, для хранения статистики, RBAC и других обслуживающих функций
Как устроена работа 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/
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/
Персональный блог Data Engineer | Ex-TeamLead BI Developer
Как устроена работа Iceberg на примере Trino и Rest Catalog?
В статье 5 Things in Data Engineering That Have Changed In The Last 10 Years автор поделился как поменялась индустрия (западная) за последние 10 лет.
1) Компании хотят только сеньоров
Команды сильно сократились, и бизнес требует быстрых результатов → поэтому нанимают в основном опытных инженеров + AI-копилоты усилили продуктивность сеньоров. Джуниорам сложнее входить.
Это произошло в последние 2-3 года. Никому не нужны малыши без опыта. Все хотят опытных людей, чтобы пришли и сразу решали конкретные задачи. В больших компаниях еще сохранилась возможность пройти стажировку и прийти сразу с универа. Но надо, чтобы универ был топчик. Все кто ходят на курсы - мимо. Поэтому мой подход прийти seniorом без опыта выглядит особенно привлекательно в текущих реалиях. Улучшений в будущем для данной ситуации не видно. Специалисты и эксперты в ИТ появляются как грибы. Доступность образования и реклама успешных айтишников в Дубаях и на Патриках делает свое дело.🚶♀️ Все хотят хорошую зарплату и удаленную работу, но места на всех не хватит.😞
2) Cloud стал дефолтом
Раньше облако было опцией, сейчас — стандарт. Все мигрируют: Snowflake, BigQuery, Databricks. Почти никто не строит аналитику он-прем.
Полностью согласен. Я могу открыть любую вакансию в Северной Америке, Южной Америке, Европе, Австралии и тп, и там будет облако и MPP облачное хранилище с вероятностью 95%. Хотя недавно познакомился с инженером, кто пришел к нам из Comcast. Он рассказал, что у них был свой дата центр и он ставил Kafka на bare metal. Ну красавчик, только получает в несколько раз меньше.🏆
3) Перестали писать кастомные пайплайны
10 лет назад везде были самописные ETL на cron/SSIS/python скриптах. Сейчас сразу используют готовые инструменты: Airflow, dbt, EventBridge, Coalesce, etc. Нужно быстрее приносить ценность, а не строить платформу с нуля.
Доступность инструментов low-code/no-code очень сильно упрощают работу. Можно фокусироваться на бизнес проблемах и ценностях, а не трабалшуить legacy/technical debt код. Хотя уже с развитием AI IDE уже все превращается в no-code/low code. Главное базу знать и понимать основу и свою ценность для бизнеса.
4) SQL победил
Споры между SQL vs что-то ещё закончились — SQL стал универсальным стандартом. Job-market требует SQL практически везде. dbt усилил этот тренд.
Если ваш продукт не поддерживает SQL, то у вас плохой продукт. SQL наше все. Хотя некоторые аналитики обожают Pandas, и пишут что-то в своих ноутбуках. А потом инженерам нужно все это разгребать.🙅♂️
5) AI изменил рабочие процессы
AI ускоряет работу, но создаёт риск «движения вместо прогресса»: люди меньше понимают код, больше копипастят из LLM. Выигрывают те, кто умеет совмещать AI + инженерное мышление.
100% все поменялось. Я общаюсь со многими командами и вижу, что люди на самом деле не очень сильно используют все возможности. Большинство не любят перемен и не умеют учиться быстро и эффективно. Когда говорят, что AI заменит людей, чаще всего имеют в виду тех, кто не хочет или не умеет учиться. Сейчас настоящий FOMO в AI и очень важно смотреть куда дует ветер и стараться использовать в работе AI и собирать полезные use cases для вашей индустрии и вашей специализации.
Самое главное, что произошло за 10 лет, то это обесценивание денег, повышение налогов, снижение покупательной способности, отмена job security, и отсутствие стабильности.
1) Компании хотят только сеньоров
Команды сильно сократились, и бизнес требует быстрых результатов → поэтому нанимают в основном опытных инженеров + AI-копилоты усилили продуктивность сеньоров. Джуниорам сложнее входить.
Это произошло в последние 2-3 года. Никому не нужны малыши без опыта. Все хотят опытных людей, чтобы пришли и сразу решали конкретные задачи. В больших компаниях еще сохранилась возможность пройти стажировку и прийти сразу с универа. Но надо, чтобы универ был топчик. Все кто ходят на курсы - мимо. Поэтому мой подход прийти seniorом без опыта выглядит особенно привлекательно в текущих реалиях. Улучшений в будущем для данной ситуации не видно. Специалисты и эксперты в ИТ появляются как грибы. Доступность образования и реклама успешных айтишников в Дубаях и на Патриках делает свое дело.
2) Cloud стал дефолтом
Раньше облако было опцией, сейчас — стандарт. Все мигрируют: Snowflake, BigQuery, Databricks. Почти никто не строит аналитику он-прем.
Полностью согласен. Я могу открыть любую вакансию в Северной Америке, Южной Америке, Европе, Австралии и тп, и там будет облако и MPP облачное хранилище с вероятностью 95%. Хотя недавно познакомился с инженером, кто пришел к нам из Comcast. Он рассказал, что у них был свой дата центр и он ставил Kafka на bare metal. Ну красавчик, только получает в несколько раз меньше.
3) Перестали писать кастомные пайплайны
10 лет назад везде были самописные ETL на cron/SSIS/python скриптах. Сейчас сразу используют готовые инструменты: Airflow, dbt, EventBridge, Coalesce, etc. Нужно быстрее приносить ценность, а не строить платформу с нуля.
Доступность инструментов low-code/no-code очень сильно упрощают работу. Можно фокусироваться на бизнес проблемах и ценностях, а не трабалшуить legacy/technical debt код. Хотя уже с развитием AI IDE уже все превращается в no-code/low code. Главное базу знать и понимать основу и свою ценность для бизнеса.
4) SQL победил
Споры между SQL vs что-то ещё закончились — SQL стал универсальным стандартом. Job-market требует SQL практически везде. dbt усилил этот тренд.
Если ваш продукт не поддерживает SQL, то у вас плохой продукт. SQL наше все. Хотя некоторые аналитики обожают Pandas, и пишут что-то в своих ноутбуках. А потом инженерам нужно все это разгребать.
5) AI изменил рабочие процессы
AI ускоряет работу, но создаёт риск «движения вместо прогресса»: люди меньше понимают код, больше копипастят из LLM. Выигрывают те, кто умеет совмещать AI + инженерное мышление.
100% все поменялось. Я общаюсь со многими командами и вижу, что люди на самом деле не очень сильно используют все возможности. Большинство не любят перемен и не умеют учиться быстро и эффективно. Когда говорят, что AI заменит людей, чаще всего имеют в виду тех, кто не хочет или не умеет учиться. Сейчас настоящий FOMO в AI и очень важно смотреть куда дует ветер и стараться использовать в работе AI и собирать полезные use cases для вашей индустрии и вашей специализации.
Самое главное, что произошло за 10 лет, то это обесценивание денег, повышение налогов, снижение покупательной способности, отмена job security, и отсутствие стабильности.
Please open Telegram to view this post
VIEW IN TELEGRAM
Substack
5 Things in Data Engineering That Have Changed In The Last 10 Years
What Will Change Next?