ETL - определить удаленные записи - Oracle 12c - PullRequest
0 голосов
/ 23 ноября 2018

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

ETL:

                      |-> FINAL DB 
SOURCE -> INTERIM DB -|
                      |-> HISTORY DB
  1. В базу данных HISTORY добавлены различия в записях между INTERIM и FINAL DB.

  2. FINAL DB обновляется с помощью утилиты слияния Oracle.

  3. В первый день мы извлекаем данные из SOURCE и помещаем 10 записей в промежуточную базу данных.

  4. Мы запускаем поток PL / SQL, который обновляет FINAL DB и HISTORY DB, каждый из которых содержит 10 записей.

  5. В День 2 приходят еще 10 записей.Но 1 - обновление, 1 - удаление, 1 - вставка.

  6. Итак, теперь в FINAL DB всего 11 записей (ранее 10 + 1 вставка), а в базе данных HISTORY 13 записей (все вставки)(ранее 10 + 1 обновление + 1 удаление + 1 вставка)).

  7. Мы используем записи в БД ИСТОРИИ со статусами DELETE для удаления записей в ФИНАЛЬНОЙ БД.

  8. Приведенная выше предпосылка верна, если мы извлекаем все записи из SOURCE.

  9. Если мы извлекаем только дельта-данные (записи, которые изменились), то это даетневерно удаляет.Например: вместо выборки всех 10 (как в шаге (5)), если я выбираю только 2 записи (1 обновление и 1 вставка), нет способа найти DELETES в таблице HISTORY (так как остальные 8 записей не являютсябудет также помечен как DELETE в таблице HISTORY.)

Вопрос:
Реальный сценарий включает в себя миллионы записей, и, следовательно, мы не можем получить вседанные в промежуточной БД.Оператор Oracle Merge объединяет изменения в FINAL DB, но не выполняет удаления, которые мы планируем сделать, выполняя дополнительные операторы удаления, используя записи в таблице истории, имеющие статус «DELETE».Но вопрос в том, каким образом мы можем иметь правильные записи в таблице истории, когда у нас есть дельта-данные в промежуточной базе данных?

Одно решение:
Периодически извлекать полные данные, чтобы определитьудаляет.

Пожалуйста, предложите любые другие решения / мысли.Благодаря.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...