Хранилище данных Postgres - PullRequest
2 голосов
/ 06 октября 2009

Мы рассматриваем возможность использования SSIS для поддержки хранилища данных PostgreSql. Я использовал его раньше между SQL Server без проблем, но у меня много трудностей, чтобы он хорошо играл с Postgres. Я использую ознакомительную версию поставщика данных OLEDB PGNP (http://www.postgresql.org/about/news.1004).

Я хотел бы начать с чего-то простого, такого как UPSERT, в таблице фактов (строки 10k-15k обновляются / вставляются ежедневно), но это оказывается очень трудным (не говоря уже о том, что я хочу использовать суррогатные ключи в будущем) .

Я пытался (http://blogs.msdn.com/b/mattm/archive/2008/11/22/lookup-pattern-upsert.aspx) и (http://consultingblogs.emc.com/jamiethomson/archive/2006/09/12/SSIS_3A00_-Checking-if-a-row-exists-and-if-it-does_2C00_-has-it-changed.aspx)), которые фактически одинаковы (за исключением того, что я не совсем понимаю союз в конце, когда пытаюсь отстоять) Но Я сталкиваюсь с той же проблемой с параметрами при обновлении с помощью команды OLEDb - которую я пытался преодолеть с помощью (http://technet.microsoft.com/en-us/library/ms141773.aspx), но, похоже, это не работает, я получаю ошибку проверки -

Внешние столбцы для compnt .... не синхронизированы со столбцами источника данных ... внешний столбец «Param_2» необходимо удалить из внешних столбцов. (эта ошибка повторяется и для первых двух параметров - никогда не сталкивался с этим при использовании соединения sql, поскольку он поддерживает именованные параметры)

Кто-нибудь сталкивался с этим?

И

Тот факт, что эту простую задачу, по-видимому, так трудно выполнить в SSIS, говорит о том, что я использую не тот инструмент для этой работы - есть ли лучший (и все же гибкий) способ сделать это? Или другой пакет ETL лучше использовать между двумя базами данных Postgres? -Другие опции включают в себя любой из перечисленных в (http://en.wikipedia.org/wiki/Extract,_transform,_load#Open-source_ETL_frameworks). Я мог бы просто написать и написать нагрузку SQL, чтобы сделать это для меня, но я хотел аккуратное и легко обслуживаемое решение.

Ответы [ 2 ]

0 голосов
/ 15 октября 2009

SCD слишком медленный для того, что я хочу. Мне нужно использовать набор на основе sql.

Оказалось, что многие мои проблемы были с ошибками в провайдере. Я открыл тему форума (http://www.pgoledb.com/forum/viewtopic.php?f=4&t=49) и провел полезную дискуссию с модератором / поддержкой / разработчиком.

Кроме того, Postgres не позволяет вам выполнять перекрестные запросы к БД, поэтому я решил проблему следующим образом:

  • Источник данных из производственной БД во временную таблицу БД архива
  • Выполнение запроса на основе набора между временной таблицей и таблицей архива
  • Усеченная временная таблица

Обратите внимание, что временная таблица не является временной таблицей, а является копией схемы архивной таблицы для временно хранимых данных в.

Прошло немного времени, но я добрался до конца.

Эта простая задача в любом случае займет какую-то работу. SSIS еще ни в коем случае не является продуктом ETL корпоративного класса, но он предоставляет вам быструю и простую функциональность и достаточен для большинства операций ETL. Я полагаю, это также зависит от вашего уровня комфорта.

Какое корпоративное решение ETL вы бы предложили?

0 голосов
/ 14 октября 2009

Я использовал мастер медленно изменяющихся измерений для этого с хорошим успехом. Это может дать вам то, что вы ищете, особенно с помощью мастера

http://msdn.microsoft.com/en-us/library/ms141715.aspx

Внешние столбцы не синхронизированы: SSIS чувствителен к регистру - я сталкивался с этой проблемой несколько раз, и мне хочется вырвать волосы.

Эта простая задача в любом случае займет какую-то работу. SSIS еще ни в коем случае не является продуктом ETL корпоративного класса, но он предоставляет вам быструю и простую функциональность и достаточен для большинства операций ETL. Я полагаю, это также зависит от вашего уровня комфорта.

...