LINUX.ORG.RU

dbt (data build tool) для dwh у кого был опыт?

 , ,


0

1

Хай всем.

Хочу узнать о вашем возможном опыте с dbt. Пришла весточка от начальства потрогать этот продукт, трогую.

Честно говоря не сказал бы, что прям очень нужен в текущем технопарке.

Что у меня? Потсгря и Гринплам. Для перекатки данных между staging-таблицами c основной дата-моделью в DWH юзаем PXF, gpdist и дергая опред. plpgsql функции.

Процедуры и вьюхи и так коммитим в отдельную git-repo.

Из плюсов (для себя), с dbt действительно удобно перекатывать данные между слоями. Есть заготовки под GitOps и автоматизации. Хорошо для новых и мелких проектов.

Из минусов, если тебя шардированная база которая давно в ПРОД, dbt не очень поможет. Слишком затратно на него переделывать. Плюс в ПРОД много прибитых гвоздями вещей, как процедуры которые быстро и оптимизировано обрабатывают данные со слоев. Заготовки по FDW и др.

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

select uuid_in(md5(random()::text)::cstring);

На уровне абстракций с dbt, ес-но нет ни каких специфичных в опред. РСУБД функций (как и ее возвращаемых типов). И чтобы dbt мог загонять данные с uuid_in к примеру, нужно повозиться.

Это просто пример, можно конечно аналог найти на dbt. Но любой кто поддерживает базу понимает, что это мелкий пример. В реальной базе будет куча более сложных функций и не скалярных, а композитного типа внутри которого юзаются скаляры которые принимены к опред. РСУБД только.

Поскольку я только начал разбирать dbt, может что-то не знаю, поэтому не буду удтверждать. Узнал у своих DBA-знакомых, были негативные отзывы по dbt.

Вопрос: у кого был положительный опыт? Желательно, чтобы опыт был не с мелкой базой, а как минимум шардированной и связанной вообще между РСУБД и NoSQL-решениями. Да-да, может быть такое через EXTERNAL-таблицы. На практике много кто загоняет в raw-слой данные на NoSQL, а потом занимаются структурированием/ нормализацей уже в центральное DWH (чаще всего РСУБД).



Последнее исправление: aisixone (всего исправлений: 5)