Оптимизация хранилищ
148 subscribers
3 photos
38 links
Около Bigdata. По вопросам: @pihel
Download Telegram
Релизы бд Oracle значительно ускорились. Вроде, еще недавно писал про новые возможности 20 версии, как уже доступна информация по 21.
Пролистал мельком доку и не увидел ничего принципиально нового для разработчика. В большинстве своем развитие функций Oracle 20.
Из интересного только пакет DBMS_MLE для исполнения javascript кода. Немного удивляет такое нововведение, кому бы оно могло понадобиться?
Вдохновился докладом Optimizing Apache Spark UDFs на Databricks Summit Europe и разобрал подробней в блоге, как создать свою native scala UDF для Spark.
Дополнительно сравнил производительности разных вариантов: Udf vs Native code vs Native udf.
Дополнил статью по работе с Hive способами решения проблем перекоса данных:
Skew Join
* Проявление
* Исправление через Union и Broadcast
* Исправление через Salting
* Исправление встроенными средства Hive
* Исправление в Spark
Сделал небольшое сравнение стоимости и производительности Azure Databricks и Azure HDInsight.
Тесты показали:
* Job кластера Databricks на 40% дороже аналогичных HDInsight (Интерактивные x2 дороже)
* Производительность Databricks на одном железе лучше в сравнении с HDInsight на 20%

Из странного: тестовые запросы в Databricks отрабатывают быстрей на старом Spark 2.4
Поделюсь интересным видео Алексея Миловидова с последнего HL++, где он на примерах показывает, что хорошее колоночное сжатие может быть быстрей in-memory хранения.
Весь секрет в том, что хорошо сжатые данные быстро читаются за счет малого размера и хорошо обрабатываются, т.к. разжатие и фильтрация происходит на нескольких ядрах не выходя из процессорного кэша. Что по итогу обеспечивает пропускную способность выше ОЗУ.
В новой статье хочу рассказать как встроить ETL инструмент SAP DS в потоки Airflow.

Если в компании много SAP, но не хватило денег на Hana Enterprise, то единственный способ копирования данных во вне - это использовать DS через сервера приложений SAP.
Минусы этой схемы - это старый, неудобный инструмент и что запуски DS нельзя встроить в потоки Airflow (мониторинг, расписание).
От неудобного интерфейса и nocode никуда не деться, но можно вынести запуски job заданий SAP DS внутрь Airflow.

Об этом пойдет речь в статье: Удаленный запуск SAP DS job используя Python
Написал 2 статьи для закрепления знаний:
1. По python - в ней старался затронуть больше неочевидных вещей.
2. По docker и kubernetes - базовый уровень
👍6
У меня не так много опыта в тестировании, но хотел поделиться подходами к Unit и Интеграционному тестированию.
В чем разница , требования к коду, примеры на python и scala
http://blog.skahin.ru/2023/11/unit-integration-testing.html
👍4
Новая статья описывает основные группы leetcode задач.
Краткое описание, текст программы и ее сложность.
Полезно для периодического повторения разработчикам, которые не так часто реализуются алгоритмы на работе собственноручно (такие как я) и соответственно их забывают.
http://blog.skahin.ru/2024/03/leetcode.html?v
🔥4👍1
Опубликовал статью, которая лежала в черновиках несколько лет:
http://blog.skahin.ru/2024/03/cdc-debezium-kafka-connect.html
Статья начального уровня, описывает шаги по настройке онлайн CDC репликации между классической субд и Kafka средствами Kafka Connect и Debezium.

Если хочется подробней узнать что такое журнал отката (для согласованного чтения) и наката (для восстановление после сбоя и, как видим, для репликации), то в блоге есть древняя статья http://blog.skahin.ru/2016/04/oracle.html#consistent , которая описывает принципы работы этих журналов в Oracle, но есть и примечание про PG.
👍3🔥3
Часто для DA/DS нужно расчитать множество разрезов одного агрегата.
При расчете не нужны join, но наличие distinct не дает свести к подходу от большего к меньшему.
В этой заметке попытался понять степень преимущества ClickHouse перед Spark и где есть недостатки в реалиях ЯО (спойлер: стоимость и IO при работе с S3).

http://blog.skahin.ru/2024/04/clickhouse-vs-spark.html
👍4
Статья заметка, на основании прохождения курса Grokking Modern System Design Interview for Engineers & Managers

Составные части системы:
DNS, Load Balancer, Базы данных, KV Store, CDN, Sequencer, Распределенный мониторинг, Распределенный кэш, Распределенная шина данных, Pub-Sub, Rate Limiter, Blob storage, Распределенный поиск, Distribute Logging, Распределенный шедуллер, Распределенный счетчик,
Дизайн на реальных примерах:
Общие вопросы до начала, YouTube, Quora, Google Map, Yelp, Uber, Twitter, News feed, Инстраграмм, Сокращатель ссылок, Индексатор для поиска, WhatsApp, Система подсказок в форме ввода, Гугл. документ

http://blog.skahin.ru/2024/07/grokking-system-design-interview-for.html
🔥6👍1
Один из способов изучения любимого инструмента - это чтение релиз нот. Это дает понимание что нового добавилось и что можно было бы использовать.
В этой заметке собрал интересные для меня нововведения в Spark 3.2 - 4.0 preview
http://blog.skahin.ru/2024/11/spark-32-4-whats-new.html
👍6🔥2
Недавно прошел курс Инженер облачных сервисов от Яндекса и остался доволен. Полезные прикладные задачи на практике, знания которые могут пригодиться не только в ЯО, т.к. многие сервисы совместимы по апи с Amazon.
По традиции сделал статью с заметками на полях в блоге http://blog.skahin.ru/2024/12/yandex.html
👍53
Python прочно занял нишу bigdata, вытеснив большинство других языков.
По этому решил актуализировать знания и статьи в блоге на эту тему:

http://blog.skahin.ru/2024/12/api-fastapi-python.html
Часто вижу в требованиях к DE знание фреймворка FastApi для создания конечного api к рассчитанным данным.
Преимущества фреймворка:
- легкий старт за счет декораторов
- встроенный веб сервер
- async io из коробки для асинхронной работы с http
- валидация данных на основе схемы
- автоматическая swagger дока
- авторизация и прочее

Систематизировал знания о генераторах и итераторах http://blog.skahin.ru/2023/05/python.html#iter

Прошелся по основным возможностям asyncio http://blog.skahin.ru/2024/06/python.html#asyncio и деталям venv+airflow http://blog.skahin.ru/2023/05/python.html#venv
👍9🔥4
Iceberg - набирающий популярность формат данных поддерживающий конкурентное обновление, DML, эволюцию схемы, скрытое партицирование и другое.

Расширил статью по типам хранения данных orc, parquet еще и на iceberg:
http://blog.skahin.ru/2019/08/orc.html#iceberg
- Схема формата данных
- Конкурентный доступ
- Улучшение партицирования
- Версионирование
- Компакция и распределение
👍81
Продолжаю актуализацию старых ключевых статей в блоге.
На этот раз расширил статью по Kubernetes.
Добавил новые пункты, но главное - добавил практический пример по деплою своего python приложения в kuber. Мне, как инженеру, проще изучать на практике, чем на сухой документации.

http://blog.skahin.ru/2023/05/docker-kuber.html#example
В примере создадим python fastapi сервис, запакуем его в docker, опубликуем в registry Яндекс облака, развернем YO managed kuber, задеплоим туда наше приложение, настроим отказоустойчивость, через ingress сделаем балансировку и сетевой доступ.
👍5🔥3
Dbt прочно занял нишу analytics engineers.
Но я все больше занимаюсь Spark и не имел опыта работы с Dbt. По этому решил обзорно погрузиться в возможности этого фреймворка.
Законспектировал в статье: http://blog.skahin.ru/2025/02/dbt.html?more
- Установка
- Модели
- Макросы
- Внешние таблицы
-- Загрузка данных
- Материализация
-- Incremental models
-- Insert overwrite
-- Ephemeral models
- Jinja интерпретатор
-- Переменные
-- Условия
-- Циклы
-- Функции
- Пакеты функций
-- Создание своего пакета
- Тесты
-- Создание своих тестов
-- Тесты для конкретной таблицы
- Таргет подключения
- Снапшоты
-- Timestamp стратегия
-- Check стратегия
- События
- ADHoc анализ
- Документация
- Трекинг изменений
- Версионирование моделей
🔥12
ClickHouse одна из самых популярных баз для финальных витрин.

По этому для закрепления основных возможностей базы прошел курс "Managed Service for ClickHouse" и записал краткие заметки в статье
http://blog.skahin.ru/2025/06/clickhouse.html

- Клиенты и подключение
- Таблицы
- Пользовательский доступ
- Типы таблиц
- Типы данных
-- Агрегатные типы данных
- Индексы
- Zookeeper
- SQL
- Партицирование
- Реплицируемые таблицы
- Matview
- Проекции
- Distributed таблицы
- Explain
- Join
- Словари
- Интеграция с внешними источниками
- Мониторинг
- Квоты и ограничения
- Изоляции транзакций
- Оптимизация запросов
12