Должно ли хранилище данных быть основным хранилищем данных?
Обычно хранилище данных - это средство для консолидации нескольких исходных систем, обычно для целей отчетности. Но есть ли ситуации, в которых целесообразно использовать хранилище данных как самостоятельную первичную базу данных (т. Е. Захватывать данные и управлять ими, а не загружать их из другой системы)?
3 ответа
Короткий ответ - нет, я так не думаю. Сначала вы должны разработать хорошую, нормализованную структуру базы данных для производственной базы данных, а потом беспокоиться о части хранилища данных.
Хранение склада и производственной базы данных считается "наилучшей деловой практикой", возможно, самое главное, это проектное решение. Хранилище данных и производственная база данных служат двум различным целям. Возможно, наиболее важной функцией производственной базы данных является надежное, последовательное и однозначное отслеживание транзакций. Это важно как при проектировании базы данных, так и при выборе программного обеспечения, то есть ядра базы данных.
Не следует недооценивать его дизайн - я бы сказал, что в большинстве проектов хороший дизайн базы данных - это первое, что нужно сделать. Правильная структура таблицы важнее, чем выбор технологии.
Если вы планируете расти, возможно, имеет смысл попытаться немного изолировать данные в разных базах данных - и потому, что это упрощает последующее разделение базы данных и запуск различных частей на другом оборудовании (когда вы нажимаете "на переднем крае", гораздо дешевле купить больше серверов, чем купить более мощные серверы), и потому, что вы позже захотите разделить программные модули или использовать их независимо друг от друга. Вы не хотели бы разделить хранилище данных таким же образом.
Итак, подытожим, начните с производственной базы данных, а затем создайте хранилище данных, которое обычно может быть отложено до тех пор, пока вы не почувствуете необходимость объединить данные из разных источников или добавить избыточность в производственную базу данных для получения более быстрых отчетов.
Я работал в компании по азартным играм онлайн 8 лет. Я принимал участие в разработке рабочей базы данных, и позже я отвечал за создание хранилища данных, поэтому приведенные выше комментарии основаны на некоторых сделанных ошибках и накопленном опыте.
В общем, я бы сказал, что нет, но... нас просят создать DWH, который имеет в качестве одной из своих исходных систем систему "OLTP", которая собирает данные Twitter. В этом случае я думаю, что система сбора OLTP в Твиттере хранит данные только за 1 неделю и каждый день передает их в DWH для хранения, а затем каждый день мы передаем сводную информацию обратно в систему Twitter OLTP. В этом случае мы станем основным хранилищем данных для данных в Твиттере... если честно, хотя это впервые для нас.
Я бы не согласился с @Sathish Senathi, я думаю о заявлении, что "Datawarehouse будет хранить данные, скажем, до 5 /10 лет (не все детали, вероятно, обобщены)". Я бы никогда не суммировал данные, поступающие в DWH, всегда сохранял бы самые низкие данные о транзакциях, но, очевидно, не все атрибуты, которые есть в системе OLTP.
Я признаю, что не работал над азартными играми онлайн, у которых есть очень большие данные, но я работал в телекоммуникациях и страховании, которые имеют много терабайтных DWH. Мы всегда храним информацию о самих телефонных звонках или транзакциях премиум / претензий.
Хорошее резюме @tobixen. Еще одна полезная практика Datawarehouse - вы не изменяете данные, вы обычно добавляете данные (таким образом, сохраняется история).
Большинство технологий хранилищ данных ориентированы на этот шаблон. Поэтому использование обычной системы OLTP или системы основных данных поверх хранилища данных не будет работать должным образом.
Общий поток
База данных OLTP -> Хранилище данных> Архивация.
База данных OLTP может хранить данные, скажем, от 1 месяца до 13 месяцев. Datawarehouse будет хранить данные, скажем, до 5 /10 лет (не все детали, вероятно, суммированы), а затем отправляется в архив.
Следует отметить, что технологии BigData, такие как Hadoop / Hive, облегчают хранение большого объема данных (скажем, 10 лет) и их обработку экономически эффективным образом.