2009-08-24 3 views
11

Я пишу ETL (в python с бэкэндом mongodb) и задавался вопросом: какие стандартные функции и инструменты ETL следует назвать ETL?Каковы требуемые функциональные возможности систем ETL?

Этот ETL будет максимально универсальным, с возможностью сценариев и модульного подхода. В основном он будет использоваться для синхронизации разных баз данных, а также для импорта/экспорта наборов данных в разных форматах (xml и csv). Мне не нужны многомерные инструменты, но это вероятность того, что это понадобится позже.

+0

Какие варианты использования у вас есть сейчас? Что вам нужно? Пожалуйста, перечислите ваши текущие варианты использования, чтобы мы могли прокомментировать их. –

ответ

16

Давайте рассмотрим случаи использования ETL на мгновение.

  1. Экстракт.
    • Прочитайте базы данных через общий адаптер DB-API.
    • Считывание плоских файлов через аналогичный адаптер.
    • Прочитайте таблицы с помощью аналогичного адаптера.
  2. Очистить.
    • Произвольные правила
    • фильтра и отвергающие
    • Заменить
    • Добавить столбцы данных
  3. профиля данных.
    • Статистические таблицы частот.
  4. Transform (см очисти, они два случая использование с той же реализацией)
  5. Do размерного аттестационным поиска.
    • Заменить значения или добавить значения.
  6. Совокупность.
    • В любой точке трубопровода
  7. нагрузки.
    • Или подготовьте плоский файл и запустите загрузчик продукта DB.

Кроме того, существуют некоторые дополнительные требования, которые не единичные случаи использования.

  • Каждая отдельная операция должна быть отдельным процессом, который может быть подключен в конвейере Unix с отдельными записями, поступающими от процесса к процессу. Это использует все ресурсы.

  • Вам нужен какой-то планировщик, основанный на времени, для мест, у которых есть проблемы с обоснованием своих предпосылок ETL.

  • Для планирования шагов по ETL вам необходимо создать расписание на основе событий.

Примечание. Поскольку ETL связан с I/O, несколько потоков вам мало пользы. Поскольку каждый процесс выполняется в течение длительного времени - особенно если у вас есть тысячи строк данных для обработки - накладные расходы на «тяжеловесные» процессы не повредит.

4

Вот случайный список, в произвольном порядке:

  1. Подключение к широкому кругу источников, в том числе всех основных реляционных баз данных.
  2. Обработка нереляционных источников данных, таких как текстовые файлы, Excel, XML и т. Д.
  3. Разрешить отображение нескольких источников в одну цель.
  4. Предоставьте инструмент, который поможет отобразить исходные данные в целевые поля.
  5. Предложить каркас для инъекционных преобразований по желанию.
  6. Программируемый API для написания сложных преобразований.
  7. Оптимизируйте процесс загрузки для скорости.
+0

Я бы хотел увидеть, что «графический» удален из # 4. Хотя картинки милые, мы всегда заводим код чтения, чтобы увидеть, что происходит * на самом деле. –

+0

@S. Lott - Готово. – duffymo

0

Автоматическое/эвристическое отображение имен столбцов. Например простые строковые отображения:

DB1: CUSTOMERID

DB2: customer_id

Я нахожу много работы, которую я (уже) сделано в DTS/SSIS мог сгенерирована автоматически.

  • не обязательно «необходимая функциональность», но очень понравится многим вашим пользователям.