Data Vault 2.0 с dbt Cloud
Data Vault 2.0 — это техника моделирования данных, разработанная для масштабирования крупных проектов по созданию хранилищ данных. Это строгая, предписывающая система, подробно описанная в книге, ставшей библией для этой техники.
Так почему же Data Vault? Вы сталкивались с проектом по созданию хранилища данных с более чем 50 источниками данных, с более чем 25 разработчиками данных, работающими на одной платформе данных, или с данными, охватывающими более 5 лет с двумя или более поколениями исходных систем? Если нет, то может быть сложно изначально понять преимущества Data Vault, и, возможно, моделирование по Кимбаллу будет лучше для вас. Но если вы находитесь в любой из перечисленных ситуаций, то эта статья для вас!
Вот аналогия, чтобы помочь проиллюстрировать Data Vault:
Представьте себе водоснабжение города. У каждого дома нет трубы, идущей прямо от местной реки: есть плотина и резервуар, собирающие воду для города из всех источников — озер, ручьев, речек и ледников — прежде чем вода будет перенаправлена в каждый район и, наконец, в краны каждого дома.
Новое строительство в городе? Нет проблем! Просто подключите новые трубы к резервуару! Не хватает воды? Просто найдите другой источник воды и заполните резервуар.
Data Vault — это плотина и резервуар: это хорошо спроектированная модель данных для структурирования данных организации из исходных систем для использования в последующих проектах данных — вместо того, чтобы каждая команда собирала данные прямо из источника. Модель данных Data Vault разрабатывается с использованием нескольких хорошо применяемых принципов и на практике объединяет исходные данные, чтобы они были доступны для использования всеми последующими потребителями. Это способствует созданию масштабируемого хранилища данных за счет повторного использования и модульности.
Компоненты Data Vault
Загрузка данных непосредственно из исходных систем без применения каких-либо бизнес-правил подразумевает, что вы хотите хранить их в так называемом Raw Vault. Это, как правило, первый шаг на пути преобразования ваших данных. Существуют ситуации, когда вы хотите применить бизнес-логику перед загрузкой данных в слой представления, и здесь на помощь приходит Business Vault. Повышение производительности или централизованная бизнес-логика — это лишь некоторые из причин для этого.
Основные компоненты Data Vault — это хабы, связи и спутники. Они обеспечивают большую гибкость и расширяемость и могут использоваться для моделирования сложных процессов в гибкой манере.
Вот что вам нужно знать о основных компонентах:
- Хабы: Хаб — это центральное хранилище всех бизнес-ключей, идентифицирующих одну и ту же бизнес-сущность. Разделяя данные на хабы, мы обеспечиваем, что каждая часть бизнес-концепции является максимально точной и согласованной, избегая избыточности и обеспечивая ссылочную целостность;
- Связи: Связи соединяют ваши хабы в Data Vault. Отношение хранится как данные, что делает его проверяемым и гибким для изменений. Существует несколько специальных типов связей, но в большинстве случаев связи являются двунаправленными, что позволяет легко перемещаться вперед и назад между бизнес-сущностями. Это позволяет анализировать сложные отношения через связи, созданные хабами и связями в вашей модели данн ых;
- Спутники: Спутники хранят контекстную, описательную и историческую информацию о хабах и связях, к которым они прикреплены, в зависимости от того, связаны ли данные с бизнес-объектом или отношением. Каждый спутник в Data Vault предоставляет дополнительную, ценную информацию о основной сущности.
Вы можете представить эти компоненты Raw Vault как кирпичики LEGO: они модульные, и вы можете комбинировать их множеством различных способов для создания широкого разнообразия различных, целостных структур.
Учитывая его модульную структуру, требующую множества соединений для получения конкретной информации, Data Vault не предназначен в качестве конечного, презентационного слоя в вашем хранилище данных. Вместо этого, благодаря широкому разнообразию вариантов использования, эта структура отлично работает как средний, интеграционный слой вашего бизнеса, обслуживая любой вид презентационного слоя, который у вас может быть, например, широкие таблицы, звездная схема, хранилища признаков и т.д.
Чтобы ускорить создание этих слоев и предотвратить повторение одной и той же бизнес-логики, вы можете использовать Business Vault как дополнительный слой вашего хранилища данных.
Business Vault заполняет пробелы в универсальном, сгенерированном из исходных данных Raw Vault, который часто не охватывает все бизнес-процессы вашей организации. Вы можете легко решить такие задачи, применяя мягкие правила, применяемые в этом.
Business Vault также может помочь с проблемами производительности, которые могут возникнуть из-за того, что преобразования в слое представления должны выполнять множество соединений на лету. В таких сценариях бизнес-хранилище становится центральной частью вашей бизнес-логики, заполняя все информационные витрины.
Стоит ли рассматривать Data Vault для вашего хранилища данных?
Data Vault — это мощная техника моделирования для средних и крупных хранилищ данных с о следующими характеристиками:
- Интеграция множества динамических исходных систем;
- Долгосрочный проект с требованиями к гибкой доставке;
- Потребности в аудите и соблюдении нормативных требований;
- Предпочтение проекту на основе шаблонов, позволяющему автоматизацию;
- Высокая гибкость модели данных с минимальной переработкой;
- Производительность загрузки важна, параллельная загрузка обязательна.
Из-за своей сложности Data Vault не является предпочтительным выбором для:
- Простых и постоянных систем;
- Быстрых одноразовых решений для экспериментов или краткосрочных проектов хранилищ данных;
- Слоев хранилища данных, необходимых для прямой отчетности.
dbt Cloud: операционная система для Data Vault
Существует множество инструментов, которые можно использовать для реализации вашего проекта Data Vault, но dbt Cloud с его богатым набором функций предоставляет возможности, которые делают разницу, ускоряя ваш проект от начала до конца, избавляя вас от необходимости переходить от одного инструмента к другому.
Давайте рассмотрим наиболее значимые функции и изучим, как вы можете использовать их при реализации вашего проекта Data Vault.
Масштабируемая схема
Принципы программной инженерии "Не повторяй себя" (DRY) могут помочь вам спать лучше, когда вы имеете дело с сложными проектами, которыми Data Vault чаще всего является.
Функция макросов dbt — это спасение в плане шаблонизации вашего кода. Она избавляет вас от головной боли из-за ручных ошибок, а также позволяет определить логику преобразования в одном месте на случай, если вам нужно ее изменить.
Data Vault следует принципу только вставки с инкрементальной стратегией загрузки. Встроенна я функциональность Jinja позволяет вам создать одну версию модели dbt как для инкрементальной, так и для полной загрузки таблицы. Легкое управление зависимостями, которое эта функция помогает вам достичь, является огромным преимуществом для высоко сложных проектов.
Если вы новичок в этой структуре, изучение уже созданных макросов Data Vault может быть решающим, и даже если вы эксперт, это все равно может быть полезно. Богатый набор пакетов сообщества dbt может быть напрямую применен к вашему проекту или использован в качестве вдохновения для ваших собственных шаблонов преобразования.
Создание ваших шаблонов преобразования с использованием повторно используемых макросов и гибкого языка Jinja может улучшить разработку вашего проекта в масштабируемом направлении. Когда все становится сложнее, вы можете вернуться и изменить ваши шаблоны в одном месте либо полностью, либо с использованием параметров, чтобы убедиться, что вы не испортите то, что уже хорошо работает.
Если вы кто-то, кто практиковал моделирование данных Data Vault в другом инструменте, вы можете оценить контракты моделей dbt как способ гарантировать вашим конечным пользователям данных точную форму преобразования dbt. Это аналогично практике написания DDL.
Масштабируемость также происходит на уровне базы данных. С помощью материализаций у вас есть тонкий контроль над тем, сохраняется ли объект базы данных, созданный dbt, как представление, таблица или создается инкрементально, что дает вам контроль над характеристиками производительности и стоимости каждого преобразования. Таким образом, если ваш счет за платформу данных растет, легко определить, какие компоненты Data Vault являются самыми дорогими, и внести оптимизации для снижения затрат.
С активным сообществом с открытым исходным кодом dbt, есть большая вероятность, что вы сталкиваетесь с проблемой, которая уже была решена кем-то другим. В dbt package hub доступно множество удивител ьных пакетов, которые вы можете использовать для ускорения вашей разработки еще больше.
Гибкая разработка
dbt Cloud включает встроенный Git с доступными функциями прямо из своей IDE, что значительно упрощает разработку. Как только разработчик доволен своими дополнениями или изменениями в кодовой базе Data Vault, он может зафиксировать код в IDE и открыть Pull Request, запуская процесс проверки кода. Затем, с непрерывной интеграцией с dbt Cloud, запускаются автоматические проверки, чтобы гарантировать соблюдение стандартов качества данных и конвенций Data Vault, автоматически предотвращая попадание плохих изменений в производство.
Самым большим преимуществом для продуктивности разработчиков Data Vault в dbt Cloud являются функции DataOps и автоматизации хранилищ данных. Каждый разработчик Data Vault получает свою собственную среду разработки для работы, и нет сложного процесса настройки.
Зафиксируйте свою работу, создайте pull request и включите автоматический обзор кода, который обеспечивается задачами dbt Cloud, которые могут быть определены для каждой среды отдельно (например, тестирование, QA, производство). Вместе с тегами dbt эта функция позволяет вам эффективно и мощно оркестрировать ваш проект.
Аудируемые данные
Одним из основных преимуществ Data Vault является его аудируемость. В дополнение к собственным возможностям, функции dbt Cloud еще больше усиливают это преимущество. Каждое выполнение задачи оставляет журнал аудита, который можно использовать для анализа тенденций в производительности задач среди прочего, позволяя вам выявлять узкие места в вашей системе. dbt Cloud также сохраняет артефактные файлы после каждого выполнения для дальнейшей обработки и анализа, и предоставляет их программно через Discovery API.
dbt имеет встроенную родословную данных, которая помогает как разработчикам, так и потребителям данных понять, как именно создаются активы данных в хранилище данных. И с самообслуживанием и автоматически сгенерированными документами dbt, вы можете тратить меньше времени на ответы на вопросы о ваших данных по всей организации и больше времени на создание вашего Data Vault.
Наконец, но не в последнюю очередь, встроенная тестовая структура dbt позволяет разработчикам Data Vault проверять свои предположения о данных в своей базе данных. Не только проверки первичных ключей и внешних ключей легко добавить и просто выполнить, но и более сложные проверки, такие как проверки диапазона целы х чисел, обнаружение аномалий и высоко сложные проверки качества данных, также возможны и выражаются в виде SQL-запросов. Infinite Lambda создали два пакета dbt для качества данных, dq_tools и dq_vault, которые описаны позже в этом посте.
Как начать работу с dbt Cloud и Data Vault
Существует множество решений, которые нужно принять, прежде чем вы закатите рукава и начнете реализовывать ваше хранилище данных Data Vault. Помимо работы по моделированию данных, вам нужно договориться о соглашениях по именованию, алгоритме хеширования, стратегии постановки и типах данных для стандартных атрибутов метаданных, и убедиться, что все это хорошо задокументировано. Здесь, чтобы избежать головной боли в долгосрочной перспективе, мы рекомендуем начать свой собственный журнал решений.
Что касается реализации самого Data Vault, мы рекомендуем заранее ознакомиться с лучшими практиками, особенно если у вас нет предыдущего опыта работы с этой структурой. Существуют два известных пакета dbt, ориентированных на реализацию Data Vault, которые вы можете использовать в качестве вдохновения для создания собственной системы шаблонов, или они могут быть использованы напрямую, если они подходят для вашего случая использования.
AutomateDV (ранее известный как dbtvault)
AutomateDV — это самый популярный пакет с открытым исходным кодом для Data Vault в dbt, с некоторыми пользователями, имеющими более 5000 компонентов Data Vault в своем проекте. Здесь, в Infinite Lambda, мы используем этот пакет уже довольно долгое время, даже строя на его основе (в зависимости от специфики проекта). Эта зрелая система предоставляет отличный способ начать ваше путешествие с Data Vault и dbt Cloud, так как кривая обучения довольно управляемая, она хорошо задокументирована и даже поставляется с учебными пособиями и рабочими примерами, построенными на основе стандартного набора данных TPCH от Snowflake. Существует одно ограничение при использовании пакета, и это то, что AutomateDV ожидает, что ваши исходные данные будут содержать только одну дельта-загрузку. Чтобы обойти эту проблему, владельцы пакета разработали пользовательские материализации dbt, которые помогут вам с начальной загрузкой вашей системы, однако производительность такой загрузки, по нашему опыту, неприемлема.
(Примечание редактора: начиная с версии AutomateDV v0.10.0, эта проблема с производительностью была решена, и пользователи могут использовать стандартную конфигурацию инкрементальной загрузки.)
datavault4dbt
На первый взгляд, этот довольно новый пакет с открытым исходным кодом работает аналогичным образом, особенно поскольку использование макросов обеспечивает тот же опыт (за исключением названий некоторых параметров). Однако, углубляясь в документацию, мы можем увидеть, что он предоставляет более высокий уровень настройки благодаря множеству глобальных переменных, которые изменяют поведение макросов. Он также поддерживает любой тип исходных данных - CDC, временные или постоянные, он может справиться со всем. Мы предлагаем изучить этот пакет, если у вас есть более глубокое понимание Data Vault и вам нужна сложная, настраиваемая система. Стоит быть в курсе того, что этот пакет новый, поэтому существует риск скрытых нерешенных проблем.
Настройка существующих пакетов
Эти два пакета, AutomateDV и datavault4dbt, являются самыми популярными подходами к построению Data Vault на dbt. Однако иногда эти пакеты не совсем соответствуют существующим практикам Data Vault организации, построенным с использованием другого инструмента. На первый взгляд, dbt выглядит довольно простым, но в глубине души он чрезвычайно настраиваем: возможно вносить незначительные изменения в пакеты в вашем проекте с использованием Jinja, который является мощным языком шаблонов.
Например, некоторые организации выбирают другие алгоритмы хеширования для генерации своих ключей хеширования Data Vault, чем те, которые поставляются из коробки с AutomateDV. Чтобы изменить это, вы можете добавить макрос dbt под названием default__hash_alg_md5 в ваш проект с пользовательской логикой, которую вы хотите. Большая часть логики пакета может быть переопределена таким образом, чтобы соответствовать вашим потребностям.
Создание собственной системы
Каждый проект уникален и требует своего набора функций, специальных обработок, адаптированных к вашим данным, или механизмов настройки производительности. Из-за этого, для любых долгосрочных, высокоприоритетных решений для хранилищ данных мы в Infinite Lambda рекомендуем работать над собственной системой шаблонов. Это требует значительных инженерных усилий до фактической реализации (и исправления ошибок во время), но вы сэкономите время позже благодаря знанию, где искать потенциальную проблему. Если вы не уверены в создании такой системы с нуля, вы всегда можете начать с одного из вышеупомянутых пакетов с открытым исходным кодом и строить на их основе, когда достигнете их пределов.
Мы в Infinite Lambda относимся к качеству данных очень серьезно и стремимся к высокому охвату тестами, а также к общему управлению данными в каждом проекте. С опытом работы над несколькими проектами мы разработали два пакета dbt для качества данных, которые могут помочь бизнес-пользователям повысить доверие к вашим данным.
В рамках пакета dq_tools мы стремимся к простому хранению результатов тестов и визуализации этих данных в BI-дашборде. Использование этого инструмента может помочь убедиться, что ваша система ведет себя ожидаемым образом, все в визуальном формате дашборда, построенного на вашем любимом BI-инструменте. Пакет dq_vault предоставляет обзор качества данных для всех моделей Data Vault в вашем проекте dbt. Сложные, как они есть, проекты Data Vault нуждаются в детальном охвате тестами, чтобы убедиться, что в системе нет пробелов. Этот инструмент помогает управлять вашей стратегией тестирования и быстро выявлять проблемы.
Чтобы помочь вам начать, мы создали шаблон проекта на GitHub, который вы можете использовать, чтобы понять основные принципы построения Data Vault с использованием dbt Cloud и одного из вышеупомянутых пакетов. Но если вам нужна помощь в создании вашего Data Vault, свяжитесь с нами.
Диаграммы отношений сущностей (ERD) и dbt
Родословная данных — это сильная сторона dbt, но иногда этого недостаточно, чтобы помочь вам понять отношения между компонентами Data Vault, как это делает классическая ERD. Существует несколько пакетов с открытым исходным кодом для визуализации сущностей в вашем Data Vault, построенном с использованием dbt. Я рекомендую ознакомиться с dbterd, который превращает ваши проверки качества данных отношений dbt в ERD.
Резюме
Используя строительные блоки Data Vault, организации могут создавать хранилища данных, которые адаптируются к изменяющимся бизнес-требованиям, способствуют качеству и целостности данных и обеспечивают эффективное управление данными и аналитику. Это, в свою очередь, способствует лучшему принятию решений, конкурентным преимуществам и росту бизнеса.
Выбор правильной методологии для построения вашего хранилища данных имеет решающее значение для возможностей вашей системы в долгосрочной перспективе. Если вы изучаете Data Vault и хотите узнать больше, Infinite Lambda может помочь вам сделать правильный выбор для вашей организации.
Comments