upsert & new version
Интересно, насколько сужается твое зрение, когда долго пользуешься какими-то базами данных или сервисами и начинаешь использовать такие же подходы везде. Когда переносил два больших потока данных в starrocks как обычно сделал в конце проверку на уникальность ключа (кстати, кто знает разницу в использовании данной проверки с навешиванием констрейнта на пк - возьмите с полка пирожок). И вот этот тест считается каждый час, ресурсов жрет немеренно - для ср так вообще такие запросы антипаттерн.
А потом бах - мы везде используем primary key таблицы, у которых в случае совпадения ключа происходит операция upsert без этих всех ваших дополнительных условий. Рука-лицо, дубли невозможны в принципе. Но как обычно, это порождает и обратную ситуацию - крайне легко затереть то, что не надо. У нас шардированные продакшн базы имеют сквозные идентификаторы как раз за счет проверки на уникальность в едином месте - платформе аналитики... Вот тебе и два стула.
А тем временем для версии 3.5 уже выпустили RC1. Темпы просто поражают.
Интересно, насколько сужается твое зрение, когда долго пользуешься какими-то базами данных или сервисами и начинаешь использовать такие же подходы везде. Когда переносил два больших потока данных в starrocks как обычно сделал в конце проверку на уникальность ключа (кстати, кто знает разницу в использовании данной проверки с навешиванием констрейнта на пк - возьмите с полка пирожок). И вот этот тест считается каждый час, ресурсов жрет немеренно - для ср так вообще такие запросы антипаттерн.
А потом бах - мы везде используем primary key таблицы, у которых в случае совпадения ключа происходит операция upsert без этих всех ваших дополнительных условий. Рука-лицо, дубли невозможны в принципе. Но как обычно, это порождает и обратную ситуацию - крайне легко затереть то, что не надо. У нас шардированные продакшн базы имеют сквозные идентификаторы как раз за счет проверки на уникальность в едином месте - платформе аналитики... Вот тебе и два стула.
А тем временем для версии 3.5 уже выпустили RC1. Темпы просто поражают.
👍7
CDO и его проблемы
Забавная игрушка - https://www.whoisthebestcdo.com. В первый раз прошел без напряга, а вот последующие разы были уже интересней. Все это выглядит достаточно жизненно, и знаете что самое прикольное? Вот эти циферки в каждом письме, которые +5 авторитета, -100 000$ бюджета, +50 000$ прибыли компании - это ведь ровно то, что жаждет получить бизнес для каждого своего решения от этого самого CDO :) А там каждый раз мрак.
Внедрение СР тоже происходит без циферок, их даже не угадать. ROI в дате? Мне кажется, что для малых/средних компаний, кто не торгует этими самыми данными оно выглядит очень нереально.
Забавная игрушка - https://www.whoisthebestcdo.com. В первый раз прошел без напряга, а вот последующие разы были уже интересней. Все это выглядит достаточно жизненно, и знаете что самое прикольное? Вот эти циферки в каждом письме, которые +5 авторитета, -100 000$ бюджета, +50 000$ прибыли компании - это ведь ровно то, что жаждет получить бизнес для каждого своего решения от этого самого CDO :) А там каждый раз мрак.
Внедрение СР тоже происходит без циферок, их даже не угадать. ROI в дате? Мне кажется, что для малых/средних компаний, кто не торгует этими самыми данными оно выглядит очень нереально.
Whoisthebestcdo
Who is the Best CDO?
Vote for the coolest cat in the office!
👍4
День, когда мой мир рухнул
Этот пост снова не про SR :)
Так вот, с школьной скамьи (ну почти, практически с первого собеседования в дату или бек) спрашивают про ACID в базах, и везде крутится речь про транзакции. И вроде бы из общения со всеми базами данных мы знаем, что если у нас появилась ошибка, то значит что транзакция не была закомичена. Как всегда, например, в mysql надо читать мелкий шрифт вдоговор..документации: транзакция будет закомичена, но клиент не обязательно об этом узнает. 😱
В бд отправляется запрос на запись, он не укладывается в таймаут на клиенте и клиент отпадает. БД при этом завершает запрос и успешно завершает транзакцию. В клиенте у нас фейл, по факту успех.
А при чем тут аналитика? Та самая realtime аналитика на событийке, в которой события отправляются после успешной транзакции в бд. А у нас не отправляются, потому что запись в бд прошла не успешно. Но данные там появились и вовремя. И тут иногда думаешь, что CDC не так уж и плоха. Какой-то замкнутый круг это все: от батчей уходишь на cdc, от cdc на событийку, от событийки на батчи - и все это сверками, сверками поверху.
Этот пост снова не про SR :)
Так вот, с школьной скамьи (ну почти, практически с первого собеседования в дату или бек) спрашивают про ACID в базах, и везде крутится речь про транзакции. И вроде бы из общения со всеми базами данных мы знаем, что если у нас появилась ошибка, то значит что транзакция не была закомичена. Как всегда, например, в mysql надо читать мелкий шрифт в
В бд отправляется запрос на запись, он не укладывается в таймаут на клиенте и клиент отпадает. БД при этом завершает запрос и успешно завершает транзакцию. В клиенте у нас фейл, по факту успех.
А при чем тут аналитика? Та самая realtime аналитика на событийке, в которой события отправляются после успешной транзакции в бд. А у нас не отправляются, потому что запись в бд прошла не успешно. Но данные там появились и вовремя. И тут иногда думаешь, что CDC не так уж и плоха. Какой-то замкнутый круг это все: от батчей уходишь на cdc, от cdc на событийку, от событийки на батчи - и все это сверками, сверками поверху.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🙈1
StarRocks 3.4
Была у меня привычка писать про каждый релиз версий 3.3, а тут релизнулась и следующая ветка 3.4, а теперь и вовсе уже озвучена 3.5. Больше хотелось написать про 3.5, потому что там для меня прям классные фичи озвучены, но как же пропускать большой релиз :) Тем более ожидать 3.5 можно не раньше нового года с учетом доведения той версии до стабильной работы.
Вот видео, как всегда все классно нарисовано: https://youtu.be/NHi-0QpMXBA?si=lprLlghiH0JkZok1
И вот почему 3.4 для меня не очень интересна - она идет ровно в том векторе, что озвучивали на новый год: очень сильный упор на SR как lakehouse движок. Повышение скорости работы - тут завезли и асинхронный листинг каталогов, и оптимизации кешей, примочки для iceberg с цифрами в 20% прироста скорости в стандартных бенчмарках.
Для себя увидел прикольное:
* прокачали бекапы - они стали быстрым (утилизация всей пропускной способности сети), они выкидывают в бекап все сущности, которыми может оперировать SR
* протокол arrow flight допонительно к mysql - выгружать в модельки данные станет очень быстро
* python udf - ну куда же без них
Еще прикольно видел, что на FE ноды пришли снепшоты состояния при синке фоловеров с мастера. Архитектура почти везде одинаковая - что знали в hadoop, то дальше можно встретить везде :)
И напоследок - подготовка к митапу почти завершена, анонс случится буквально на этой неделе. Будет классно.
Была у меня привычка писать про каждый релиз версий 3.3, а тут релизнулась и следующая ветка 3.4, а теперь и вовсе уже озвучена 3.5. Больше хотелось написать про 3.5, потому что там для меня прям классные фичи озвучены, но как же пропускать большой релиз :) Тем более ожидать 3.5 можно не раньше нового года с учетом доведения той версии до стабильной работы.
Вот видео, как всегда все классно нарисовано: https://youtu.be/NHi-0QpMXBA?si=lprLlghiH0JkZok1
И вот почему 3.4 для меня не очень интересна - она идет ровно в том векторе, что озвучивали на новый год: очень сильный упор на SR как lakehouse движок. Повышение скорости работы - тут завезли и асинхронный листинг каталогов, и оптимизации кешей, примочки для iceberg с цифрами в 20% прироста скорости в стандартных бенчмарках.
Для себя увидел прикольное:
* прокачали бекапы - они стали быстрым (утилизация всей пропускной способности сети), они выкидывают в бекап все сущности, которыми может оперировать SR
* протокол arrow flight допонительно к mysql - выгружать в модельки данные станет очень быстро
* python udf - ну куда же без них
Еще прикольно видел, что на FE ноды пришли снепшоты состояния при синке фоловеров с мастера. Архитектура почти везде одинаковая - что знали в hadoop, то дальше можно встретить везде :)
И напоследок - подготовка к митапу почти завершена, анонс случится буквально на этой неделе. Будет классно.
YouTube
Introducing StarRocks 3.4
StarRocks 3.4 has arrived, packed with powerful new features! Take an in-depth look at the latest advancements in data lake analytics, query performance, vector search, and data ingestion—so you can make the most of this update!
-------------------------…
-------------------------…
👍7❤2🥰2🔥1👏1
StarRocks meetup
Всем привет.
Рады пригласить вас на первый онлайн митап по восходящей звезде аналитических баз данных StarRocks 19 июня в 19:00МСК. Митап состоится онлайн, регистрация по ссылке.
Сообщество пользователей подготовило 2 доклада, охватывающие весь спектр задач - от типичного dwh небольшой компании до использования lakehouse движка поверх S3 и открытых форматов. От часовых витрин до bi безумия из сотен тысяч запросов. Мы постараемся ответить - жив ли еще опенсорс, есть ли альтернатива кликхаузу, гринпламу или трино. А если вдруг что-то забудем, то после докладов приглашаем вас на сессию вопросов и ответов в zoom к докладчикам 👍
Всем привет.
Рады пригласить вас на первый онлайн митап по восходящей звезде аналитических баз данных StarRocks 19 июня в 19:00МСК. Митап состоится онлайн, регистрация по ссылке.
Сообщество пользователей подготовило 2 доклада, охватывающие весь спектр задач - от типичного dwh небольшой компании до использования lakehouse движка поверх S3 и открытых форматов. От часовых витрин до bi безумия из сотен тысяч запросов. Мы постараемся ответить - жив ли еще опенсорс, есть ли альтернатива кликхаузу, гринпламу или трино. А если вдруг что-то забудем, то после докладов приглашаем вас на сессию вопросов и ответов в zoom к докладчикам 👍
🔥19👍3
П - прокрастинация и б - бекапы
Последние 2 недели почти целиком ушли на срочное переписывание сервиса последней мили до пользователей нашей платформы, который уже даже после биай системы. Было весело, и за это даже получил сердечко от ceo утречком в субботу. Приятно - значит сервис нужен.
И вот настало время вернуться к СР и наша сегодняшняя тема - бекапы. Актуально для ребят с shared nothing.
Что же там хорошего:
- очень прозрачный механизм создания бекапа и восстановления
- интеграция с объектными файловыми системами (от hdfs до s3)
- работает быстро (снять снепшот со схемы целиком и записать в локальных хадуп заняло около 2 минут, 112 гигабайт в СР превратились в 77 в хадупе)*
- бекапить можно таблицы, схемы как и когда угодно
* в версии 3.4 обещали значительное ускорение, но перейти ради этого на ветку 3.4 не решился :)
Что плохого:
- If the RESTORE job overwrites an existing database, table, or partition, the overwritten data cannot be restored after the job enters the COMMIT phase. If the RESTORE job fails or is canceled at this point, the data may be corrupted and inaccessible. Восстанавливаться надо осторожно, как и всегда.
- нет бекапа меты самой бд - аккаунтов (это спорная история и можно поспорить: в моем кейсе он бы помог, а абстрактно это дыра)
А при чем тут прокрастинация? Завтра надо иметь на руках черновик презентации на митап, а его еще нет :)
Последние 2 недели почти целиком ушли на срочное переписывание сервиса последней мили до пользователей нашей платформы, который уже даже после биай системы. Было весело, и за это даже получил сердечко от ceo утречком в субботу. Приятно - значит сервис нужен.
И вот настало время вернуться к СР и наша сегодняшняя тема - бекапы. Актуально для ребят с shared nothing.
Что же там хорошего:
- очень прозрачный механизм создания бекапа и восстановления
- интеграция с объектными файловыми системами (от hdfs до s3)
- работает быстро (снять снепшот со схемы целиком и записать в локальных хадуп заняло около 2 минут, 112 гигабайт в СР превратились в 77 в хадупе)*
- бекапить можно таблицы, схемы как и когда угодно
* в версии 3.4 обещали значительное ускорение, но перейти ради этого на ветку 3.4 не решился :)
Что плохого:
- If the RESTORE job overwrites an existing database, table, or partition, the overwritten data cannot be restored after the job enters the COMMIT phase. If the RESTORE job fails or is canceled at this point, the data may be corrupted and inaccessible. Восстанавливаться надо осторожно, как и всегда.
- нет бекапа меты самой бд - аккаунтов (это спорная история и можно поспорить: в моем кейсе он бы помог, а абстрактно это дыра)
А при чем тут прокрастинация? Завтра надо иметь на руках черновик презентации на митап, а его еще нет :)
❤2
Кроилово и попадалово
Задача: изменить количество подключенных дисков в кластер StarRocks.
Статус: кроилово привело к попадалову.
Kubernetes очень классная штука: делает вжух-вжух, имеет встроенный балансировщик и больше никаких шеллов и ансиблов. Но вот там ишью в текущем операторе starrocks - Can't change storage for existing cluster. То есть в созданном кластере нельзя изменить все, связанное с дисками никак через оператор и это ограничение самого k8s (а я то надеялся, что форкну оператор, подмахну пару строчек и поеду дальше). Удалить и создать кластер по новой - в случае использования shared data это задачка на 30 секунд, в случае shared nothing и бекапов - задачка пропорциональная размеру базы данных (вчера на такое потратил около 2 часов). Но есть загвоздка, про которую писал чуть выше - мы не стали использовать LDAP аутентификацию и храним пароли пользователей внутри бд. Бекапить эту информацию СР не умеет (да и не должен), и пересоздание кластера приведет к сбросу паролей - чего хотелось бы избежать.
В ишью выше пишут про удаление хельма, после чего оператор заново его накатит и разделы даже подключатся обратно. Вот только ArgoCD накатывает не helm, а манифесты от него.
У вас есть решение? :)
Да, этой проблемы вообще бы не случилось при установке на железо. И второй истории про то, как старрокс переживает удаление части дисков на всех нодах кластера (очень интересно, вплоть до полной неработоспособности с зелеными индикаторами). Напишу попозже.
Задача: изменить количество подключенных дисков в кластер StarRocks.
Статус: кроилово привело к попадалову.
Kubernetes очень классная штука: делает вжух-вжух, имеет встроенный балансировщик и больше никаких шеллов и ансиблов. Но вот там ишью в текущем операторе starrocks - Can't change storage for existing cluster. То есть в созданном кластере нельзя изменить все, связанное с дисками никак через оператор и это ограничение самого k8s (а я то надеялся, что форкну оператор, подмахну пару строчек и поеду дальше). Удалить и создать кластер по новой - в случае использования shared data это задачка на 30 секунд, в случае shared nothing и бекапов - задачка пропорциональная размеру базы данных (вчера на такое потратил около 2 часов). Но есть загвоздка, про которую писал чуть выше - мы не стали использовать LDAP аутентификацию и храним пароли пользователей внутри бд. Бекапить эту информацию СР не умеет (да и не должен), и пересоздание кластера приведет к сбросу паролей - чего хотелось бы избежать.
В ишью выше пишут про удаление хельма, после чего оператор заново его накатит и разделы даже подключатся обратно. Вот только ArgoCD накатывает не helm, а манифесты от него.
У вас есть решение? :)
Да, этой проблемы вообще бы не случилось при установке на железо. И второй истории про то, как старрокс переживает удаление части дисков на всех нодах кластера (очень интересно, вплоть до полной неработоспособности с зелеными индикаторами). Напишу попозже.
❤4
привет
ссылка на трансляцию митапа по StarRocks: https://kinescope.io/0cphQxWPC9cVwaRJDuXej5
ссылка на трансляцию митапа по StarRocks: https://kinescope.io/0cphQxWPC9cVwaRJDuXej5
kinescope.io
StarRocks meetup
Watch “StarRocks meetup” powered by Kinescope, the ecosystem of video solutions for business of any size.
👍3
Saint highload'25
Забавно как иногда все поворачивается. Сижу на докладе от яндекса как хорош ydb по сравнению с спарк и трино, и в конце докладчик получает вопрос: а чем ydb лучше starrocks? :)
Хах, я на докладе про старрокс получил ровно обратный - чем старрокс лучше ydb.
А ответ - они не знают про него и не смотрят, сейчас основной конкурент трино и гринплам.
Забавно как иногда все поворачивается. Сижу на докладе от яндекса как хорош ydb по сравнению с спарк и трино, и в конце докладчик получает вопрос: а чем ydb лучше starrocks? :)
Хах, я на докладе про старрокс получил ровно обратный - чем старрокс лучше ydb.
А ответ - они не знают про него и не смотрят, сейчас основной конкурент трино и гринплам.
😁9👍3❤1🔥1
Saint highload'25 немного выводов
Сравниваю исключительно с моим прошлым посещением году в 23 или 22. По самой конфе - доклады стали лучше, даже не 1 и не 2 достаточно интересные. И даже сбер-вк-яндекса стало меньше, а там где есть они стали более техничными. И эта техничность видна по аудитории, общий уровень в айтишечке прыгнул достаточно сильно и высоко. Теперь от мала до велика все умеют патчить опенсорс и не боятся писать сервисы под свои потребности, включая выкладывание в апстрим крупных и больших проектов. И кажется, что на это не только повлиял уход западных вендоров, но и наше импортозамещение с сумасшедшими ценниками за перекомпиляцию и пару фич сверху. И конечно смена технических лидеров в компаниях или смена ветров - все эти разговоры про надежность поставщиков и 2-3 линию поддержку остались в прошлом. Рынок меняется.
Вот такие выводы высосал из пальца и общения :) И да, питерский летний хайлоад - это +15 и проливной дождь.
Сравниваю исключительно с моим прошлым посещением году в 23 или 22. По самой конфе - доклады стали лучше, даже не 1 и не 2 достаточно интересные. И даже сбер-вк-яндекса стало меньше, а там где есть они стали более техничными. И эта техничность видна по аудитории, общий уровень в айтишечке прыгнул достаточно сильно и высоко. Теперь от мала до велика все умеют патчить опенсорс и не боятся писать сервисы под свои потребности, включая выкладывание в апстрим крупных и больших проектов. И кажется, что на это не только повлиял уход западных вендоров, но и наше импортозамещение с сумасшедшими ценниками за перекомпиляцию и пару фич сверху. И конечно смена технических лидеров в компаниях или смена ветров - все эти разговоры про надежность поставщиков и 2-3 линию поддержку остались в прошлом. Рынок меняется.
Вот такие выводы высосал из пальца и общения :) И да, питерский летний хайлоад - это +15 и проливной дождь.
👍9
StarRocks meetup 19.06: итоги
Запишу сюда, чтобы висело в закрепе: youtube, rutube, vk.
И немного статистики по мероприятию, которую обычно никто не пишет :)
Число регистраций: 282.
Число уникальных зрителей: 220.
Средний онлайн на протяжении всех докладов: 90-130.
Хороший такой зал собрали, спасибо всем.
Запишу сюда, чтобы висело в закрепе: youtube, rutube, vk.
И немного статистики по мероприятию, которую обычно никто не пишет :)
Число регистраций: 282.
Число уникальных зрителей: 220.
Средний онлайн на протяжении всех докладов: 90-130.
Хороший такой зал собрали, спасибо всем.
👍10
Решение кроилова
За всей движухой постоянно коплю долги на канале в виде постов, попробую нагонять.
Решение поста с отключением 50% дисков от кластера в к8с.
Как и писалось, в кубике через оператор нельзя менять для существующих statefulset ничего кроме количества реплик, энв переменных, лейблов и всяких других описательных куб штук. Удалить, изменить или добавить volume нельзя. Поэтому планируйте заранее свой кластер с умом, а не как я :) Так вот, если нельзя, но очень хочется - просто при живом операторе удаляем statefulset для be нод. Поды будут удалены один за другим, и после исчезновения сущности SF оператор заново её создаст и подключит старые диски с данными. Ни один байт не пострадал, хотя я уже стал мастером бекапов.
Но на самом деле это самая простая часть этой операции, и самая надёжная. А вот изменение конфига старрокс с удалением из него директорий хранения на живом кластере убивает все данные вне зависимости от количества реплик. И делает это весьма некрасиво. Данные между всеми директориями и на бе ноде нарезаются очень ровно, а значит скорее всего и между нодами кластера одинаковые данные будут лежать в одном и том же разделе (напоминаю, что в доке ср рекомендуют использовать несколько разделов на одном сервере - это сильное удешевление требований к железу и повышение скорости). В итоге реплик потерянных данных в случае кластеров с малым количеством нод не будет :(
При этом кластер будет добро рапортовать в метриках, что диски заняты, количество таблетов старое, количество строк не изменилось, но на запросе реплик или попытке сделалать селект из любой табличке кроме меты падать с пустой ошибкой.
Вариарт решения - восстановление из бекапов, что и сделал. Операцию можно запускать синхронно, то есть сразу кормить пачки схем на восстановление.
По итогам - я думал, что будет хуже. А все решилось тех окном на 3 часа.
За всей движухой постоянно коплю долги на канале в виде постов, попробую нагонять.
Решение поста с отключением 50% дисков от кластера в к8с.
Как и писалось, в кубике через оператор нельзя менять для существующих statefulset ничего кроме количества реплик, энв переменных, лейблов и всяких других описательных куб штук. Удалить, изменить или добавить volume нельзя. Поэтому планируйте заранее свой кластер с умом, а не как я :) Так вот, если нельзя, но очень хочется - просто при живом операторе удаляем statefulset для be нод. Поды будут удалены один за другим, и после исчезновения сущности SF оператор заново её создаст и подключит старые диски с данными. Ни один байт не пострадал, хотя я уже стал мастером бекапов.
Но на самом деле это самая простая часть этой операции, и самая надёжная. А вот изменение конфига старрокс с удалением из него директорий хранения на живом кластере убивает все данные вне зависимости от количества реплик. И делает это весьма некрасиво. Данные между всеми директориями и на бе ноде нарезаются очень ровно, а значит скорее всего и между нодами кластера одинаковые данные будут лежать в одном и том же разделе (напоминаю, что в доке ср рекомендуют использовать несколько разделов на одном сервере - это сильное удешевление требований к железу и повышение скорости). В итоге реплик потерянных данных в случае кластеров с малым количеством нод не будет :(
При этом кластер будет добро рапортовать в метриках, что диски заняты, количество таблетов старое, количество строк не изменилось, но на запросе реплик или попытке сделалать селект из любой табличке кроме меты падать с пустой ошибкой.
Вариарт решения - восстановление из бекапов, что и сделал. Операцию можно запускать синхронно, то есть сразу кормить пачки схем на восстановление.
По итогам - я думал, что будет хуже. А все решилось тех окном на 3 часа.
❤5
dbt & hive catalog
Текущий адаптер dbt нормально работает на чтение и запись с форматами старрокс и только на чтение из внешних каталогов, не смотря умение создавать таблицы и писать в них со стороны SR. Дел то на 5 минут, подумал я, допишу за полчаса поддержку и можно перевозить нашу репу дбт спарка. Написал для пробы пера table материализацию. А вот и нифига, сказал мне dbt, выдав ошибку: 1064 (HY000): This connector doesn't support alter table type: RENAME.
Вы поняли, да? :) StarRocks не умеет переименовывать таблицы во внешних каталогах, а даже если бы умел - то создание tmp_relation в стандартных table/incremental материализациях напрочь ломают логику сохранения таблиц в заданный location. В итоге надо писать свои материализации по количеству каталог*2 (таблица, инкремент, вьюха по идее должна и так создавать, если она нужна конечно.) Ну ладно, чуть посложнее и чуть больше времени, но вполне типовая история при работе с dbt.
Но как это все будет происходить в новом dbt fusion с растом решительно не понятно.
Текущий адаптер dbt нормально работает на чтение и запись с форматами старрокс и только на чтение из внешних каталогов, не смотря умение создавать таблицы и писать в них со стороны SR. Дел то на 5 минут, подумал я, допишу за полчаса поддержку и можно перевозить нашу репу дбт спарка. Написал для пробы пера table материализацию. А вот и нифига, сказал мне dbt, выдав ошибку: 1064 (HY000): This connector doesn't support alter table type: RENAME.
Вы поняли, да? :) StarRocks не умеет переименовывать таблицы во внешних каталогах, а даже если бы умел - то создание tmp_relation в стандартных table/incremental материализациях напрочь ломают логику сохранения таблиц в заданный location. В итоге надо писать свои материализации по количеству каталог*2 (таблица, инкремент, вьюха по идее должна и так создавать, если она нужна конечно.) Ну ладно, чуть посложнее и чуть больше времени, но вполне типовая история при работе с dbt.
Но как это все будет происходить в новом dbt fusion с растом решительно не понятно.
docs.starrocks.io
Hive catalog | StarRocks
A Hive catalog is a kind of external catalog that is supported by StarRocks from v2.4 onwards. Within Hive catalogs, you can:
❤1
dbt & hive catalog: эпилог 1
Как оказалось на самом деле - добавлять свои материализации еще проще, чем патчить адаптер. Материализации можно размещать в своих локальных проектах в директории макросов и они легко подтягиваются в проект. Поэтому написание hive_table заняло времени еще меньше, нежели патч в адаптер.
В таком виде таблица создается и отлично читается и из starrocks, и из spark. Но при повторном запуске для проверки удаления все сломалось и тут я как понял...
Проблема в хранении меты внутри старрокса, таблицы из внешних каталогов не доступны во внутренних таблицах в схеме information_schema. Это порождает боль - дбт не может определить, есть ли такая таблица. Да, можно патчить адаптер и выгребать список таблиц через show catalogs..show databases in catalog..show tables from catalog.schema (я такое уже когда-то делал для спарк адаптера не помню почему). Вот только тип мы все равно не узнаем - вью или таблица :( И кстати адаптер поддерживает определение catalog в профиле, но при указании недефолтного значения ломается вообще все - дбт ищет эту самую information_schema в этом внешнем каталоге и естественно не находит.
Как оказалось на самом деле - добавлять свои материализации еще проще, чем патчить адаптер. Материализации можно размещать в своих локальных проектах в директории макросов и они легко подтягиваются в проект. Поэтому написание hive_table заняло времени еще меньше, нежели патч в адаптер.
{{
config(
alias='hp_appsflyer_blocked_installs_test',
schema='dapadoop.sandbox',
materialized='hive_table',
file_type='parquet',
tags=['hp_appsflyer_blocked_installs_test', ]
)
}}
В таком виде таблица создается и отлично читается и из starrocks, и из spark. Но при повторном запуске для проверки удаления все сломалось и тут я как понял...
Проблема в хранении меты внутри старрокса, таблицы из внешних каталогов не доступны во внутренних таблицах в схеме information_schema. Это порождает боль - дбт не может определить, есть ли такая таблица. Да, можно патчить адаптер и выгребать список таблиц через show catalogs..show databases in catalog..show tables from catalog.schema (я такое уже когда-то делал для спарк адаптера не помню почему). Вот только тип мы все равно не узнаем - вью или таблица :( И кстати адаптер поддерживает определение catalog в профиле, но при указании недефолтного значения ломается вообще все - дбт ищет эту самую information_schema в этом внешнем каталоге и естественно не находит.
Getdbt
Create new materializations | dbt Developer Hub
Learn how to create your own materializations.
❤1
dbt & hive catalog: эпилог 2
Закрываю для себя идею реализации записи в паркеты через dbt через starrocks, и причиной тому 3 вещи.
Причина 1: можно увидеть на картинке. Время приведено в секундах расчета без поднятий сессий, взято для спарка из dbt spark. Один и тот же код прогоняется через датасеты разных размеров (у нам они приходят именно так, это разные дневыне отчеты от одного провайдера). И чтобы считать на спарке 10 мегабайт в течение 80 секунд - надо написать выдающийся код витрины. Уже на сотне мегабайт старрокс ушел за пределы лимитов и стал проигрывать спарку, что я попробовал победить перегонкой данных в родной формат вместо паркета (хотя казалось бы - какая разница, проблема таких долгих вычисления явно не чтение). И даже получилось отыграть скорость, но на гигабайтах и это не помогло. Запросы были переведны с диалекта спарка на диалект старрокс без оптимизаций как есть, по пути заменив только функции работы с временем и хешами. Овчинка выделки не стоит, тем более мы все равно не собираемся отказываться от спарка.
Причина 2: названная в прошлом посте - отсутствие метаданных по внешним каталогам в дбт/dbeaver/datagrip (клиентах). Тут кажется начинает стрелять в ногу как раз совместимость с mysql (но это не точно). И пока эта фича не будет реализована - со стороны людей будет много недопонимания, а со стороны сервисов много грязного кода. Причем все каталоги отлично показываются в вебке старрокса по порту 8030 :(
Причина 3: высокая сложность реализации дев и стейдж стендов. Для тестирования такого совмещенного проекта дбт надо поднимать не только старрокс, но старрокс в связке с хадупом и хмс. Не очень просто, но так или иначе нам придется это делать.
Взяли себе в беклог устранение причины 3 и пристально наблюдаем за развитием старрокс для устранения причины 2. А 1 кажется будет решена так или иначе, просто по причине текущего вектора развития старрокса как lakehouse движка. Вот такие пироги.
Закрываю для себя идею реализации записи в паркеты через dbt через starrocks, и причиной тому 3 вещи.
Причина 1: можно увидеть на картинке. Время приведено в секундах расчета без поднятий сессий, взято для спарка из dbt spark. Один и тот же код прогоняется через датасеты разных размеров (у нам они приходят именно так, это разные дневыне отчеты от одного провайдера). И чтобы считать на спарке 10 мегабайт в течение 80 секунд - надо написать выдающийся код витрины. Уже на сотне мегабайт старрокс ушел за пределы лимитов и стал проигрывать спарку, что я попробовал победить перегонкой данных в родной формат вместо паркета (хотя казалось бы - какая разница, проблема таких долгих вычисления явно не чтение). И даже получилось отыграть скорость, но на гигабайтах и это не помогло. Запросы были переведны с диалекта спарка на диалект старрокс без оптимизаций как есть, по пути заменив только функции работы с временем и хешами. Овчинка выделки не стоит, тем более мы все равно не собираемся отказываться от спарка.
Причина 2: названная в прошлом посте - отсутствие метаданных по внешним каталогам в дбт/dbeaver/datagrip (клиентах). Тут кажется начинает стрелять в ногу как раз совместимость с mysql (но это не точно). И пока эта фича не будет реализована - со стороны людей будет много недопонимания, а со стороны сервисов много грязного кода. Причем все каталоги отлично показываются в вебке старрокса по порту 8030 :(
Причина 3: высокая сложность реализации дев и стейдж стендов. Для тестирования такого совмещенного проекта дбт надо поднимать не только старрокс, но старрокс в связке с хадупом и хмс. Не очень просто, но так или иначе нам придется это делать.
Взяли себе в беклог устранение причины 3 и пристально наблюдаем за развитием старрокс для устранения причины 2. А 1 кажется будет решена так или иначе, просто по причине текущего вектора развития старрокса как lakehouse движка. Вот такие пироги.
❤3
Четверг это почти пятница
Последнее время писал про dbt не совсем зря, хотел кроме полезного сделать приятную подводку к выложенным выступлениям на прошедшем Dump'25. У нас он (дбт) очень активно используется, в том числе для получения стендов разработки. И весь доклад про то, как вписывать новые базы данных на примере старрокса в текущую инфраструктуру и как это делать, чтобы максимально увеличивать шансы на успешность миграции на них в компаниях малых и средних. Особенно тех, где вам этот приказ не спускает сверху ЛПР, и вам еще надо продать эту идею всем своим клиентам :)
Видео на ютубе
Последнее время писал про dbt не совсем зря, хотел кроме полезного сделать приятную подводку к выложенным выступлениям на прошедшем Dump'25. У нас он (дбт) очень активно используется, в том числе для получения стендов разработки. И весь доклад про то, как вписывать новые базы данных на примере старрокса в текущую инфраструктуру и как это делать, чтобы максимально увеличивать шансы на успешность миграции на них в компаниях малых и средних. Особенно тех, где вам этот приказ не спускает сверху ЛПР, и вам еще надо продать эту идею всем своим клиентам :)
Видео на ютубе
YouTube
Станислав Лысиков, "А вот нам бы новую БД для аналитиков в платформу приземлить..."
Станислав Лысиков, "А вот нам бы новую БД для аналитиков в платформу приземлить..."
Hadoop, clickhouse, k8s и даже greenplum с cassandra — в какой момент набор кубиков на доске архитектора становится платформой данных? В своём докладе расскажу, как наша…
Hadoop, clickhouse, k8s и даже greenplum с cassandra — в какой момент набор кубиков на доске архитектора становится платформой данных? В своём докладе расскажу, как наша…
👍12❤1
Starrocks and modern data stack pinned «Четверг это почти пятница Последнее время писал про dbt не совсем зря, хотел кроме полезного сделать приятную подводку к выложенным выступлениям на прошедшем Dump'25. У нас он (дбт) очень активно используется, в том числе для получения стендов разработки.…»
Красивые картинки
Сразу скажу, что рекламу не даю - просто картинка понравилась :)
Так вот, пришла на почту реклама от VK - прям одно загляденье. Ребята каждым пунктом бьют по живому - тут тебе и уменьшение затрат, и повышение скорости, и линейный рост вместо экспоненциального.
А потом ради интереса я в эту картинку то всмотрелся, и получилось что у нас раза в 2 дешевле самого дешевого варианта. Кто-то вспомнит про то, что управляемые сервисы обслуживать не надо и здесь будет экономия, но до 300 тб и так на это нужно примерно 0.2-0.3 ставки (а то и ноль, потому что дата инженерам придется понимать как все нормально раскладывать в любых вариантах).
Вот так и сорвался наш переезд в светлое будущее 😂
Сразу скажу, что рекламу не даю - просто картинка понравилась :)
Так вот, пришла на почту реклама от VK - прям одно загляденье. Ребята каждым пунктом бьют по живому - тут тебе и уменьшение затрат, и повышение скорости, и линейный рост вместо экспоненциального.
А потом ради интереса я в эту картинку то всмотрелся, и получилось что у нас раза в 2 дешевле самого дешевого варианта. Кто-то вспомнит про то, что управляемые сервисы обслуживать не надо и здесь будет экономия, но до 300 тб и так на это нужно примерно 0.2-0.3 ставки (а то и ноль, потому что дата инженерам придется понимать как все нормально раскладывать в любых вариантах).
Вот так и сорвался наш переезд в светлое будущее 😂
❤3😁2