Всем знают, что обычно при создании хранилищ данных, нужно подумать о модели данных. Есть много вариантов - Dimensional Modelling via Kimball, 3rd Normal Form via Inmon, Data Vault and so on. На собеседованиях часто спрашивают в чем разница и какие техники существуют. Вот одна из статей на эту
тему.
С другой стороны, бизнесу нужен результат здесь и сейчас, у них нет времени ждать пока вы создадите нужную модель данных. И часто, все модели вообще игнорируются, и это не смертельно. Если вы смоглы помочь бизнесу быстро получить результат, это намного лучше, чем согласовывать модель данных несколько месяцев. Опасность в том, что нет модели = нет порядка, вы создаете хаус внутри хранилища, и только вы знаете, где что находится. Так что это такая грань, и вам решать как быть. Я в этой ситуации использую ELT tool Matillion, который помогает мне разрабатывать быстро и включать в работу бизнес пользователей.
Например в Алексе, где я сейчас, именно такая ситуация, за последние несколько лет мой департамент Applied Modelling and Data Science нагородил много кастомных решений, и теперь все хором говорят, что им нужна правильная модель данных, а что в ней должно быть и почему, никто не знает. Ну я могу им рассказывать, как модель данных важна, и мы понимаем друг друга с полу слова😆 Так же у другой команды есть Redshift кластер, в котором 128 нод, это максимально возможный кластер и он не справляется с объемом и кол-вом запросов. И в этой ситуации решение - это микс хранилища данных и озера данных, то есть уйти от реляционной модели данных, где есть в этом необходимость. Что в принципе и сделал
Amazon.com в течение последних трех лет под названием проекта
Rolling Stone. Все реляционные базы данных Оракл были заменены на AWS DynamoDB (NoSQL).
И последнее, про модели данных. Как правило, когда мы говорим о модели данных, мы подразумиваем релационную модель данных (Schema on Write), то есть у нас есть система источник, база данных с таблицами, и таргет, хранилище данных с таблицами, с помощью ETL/ELT мы загружаем данные ИЗ сорса В таргет. Если у нас, в таблице в системе источнике добавится столбец, или поменяется тип данных, то все сломается, так как данные изменились, а схема нет. Поэтому есть альтернатива - Schema on Read, то есть мы можем обновлять схему каждый раз, когда меняется источник и ничего не сломается. Обычно это в случие неструктурированных данных. Более подробно можно почитать в
Snowflake Ebook.