Вставить в звезду-схему - PullRequest
4 голосов
/ 23 марта 2010

Я много читал о схемах типа "звезда", о таблицах фактов / опущений, операторах выбора, чтобы быстро сообщать данные, однако вопрос ввода данных в схему типа звезды кажется мне в стороне. Как «теоретически» вводить данные в базу данных звездной схемы? сохраняя таблицу фактов. Это единственный оператор INSERT INTO внутри гигантского хранимого процесса с 20 параметрами - мой единственный вариант (и как заполнить таблицу фактов). Большое спасибо.

Ответы [ 2 ]

6 голосов
/ 23 марта 2010

Сначала начните с размеров - один за другим. Используйте подход ECCD (извлечение, очистка, согласование, доставка).

Убедитесь, что в каждом измерении есть BusinessKey, который однозначно идентифицирует «объект», который описывает строка измерения - например, электронная почта для человека.

При загруженных размерах подготовить конвейер поиска ключей. В целом, для каждой таблицы измерений вы можете подготовить таблицу поиска ключей (BusinessKey, PrimaryKey). Некоторые дизайнеры предпочитают просматривать таблицу измерений напрямую, но поиск по ключу часто легко кэшируется в памяти, что приводит к более быстрой загрузке фактов.

Используйте ECCD и для фактических данных. Часть ECC происходит в промежуточной области, вы можете выбрать (вспомогательные) таблицы или плоские файлы для каждого шага ECC, как вам удобнее.

При доставке таблиц фактов замените каждый BusinessKey в строке фактов на соответствующий PrimaryKey, полученный из таблицы поиска ключей. Как только все BusinessKeys будут заменены соответствующими PrimaryKeys, вставьте строку в таблицу фактов.

Не теряйте времени, используйте инструмент ETL. Вы можете скачать Pentaho Kettle (версия для сообщества) бесплатно - в нем есть все необходимое для достижения этой цели.

3 голосов
/ 30 марта 2010

Вы обычно не не вставляете данные в схему типа «звезда» так же, как в обычную форму, т. Е. С помощью хранимой процедуры, которая вставляет / обновляет все соответствующие таблицы в одной транзакции. Помните, что схема типа «звезда», как правило, представляет собой денормализованную модель данных только для чтения - она ​​(редко) обрабатывается транзакционно и обычно загружается из данных, которые уже денормализованы как плоские - обычно один плоский файл на звезду.

Как указывает Дамир, обычно вы загружаете все измерения (обрабатываете медленно меняющиеся и т. Д.), Затем загружаете факты, соединяясь с соответствующими текущими измерениями, чтобы найти идентификаторы измерений (используя бизнес-ключи).

...