MarkLogic - Инкрементная загрузка с использованием MLCP

Версия MarkLogic: 9.0-6.2

Мы пытаемся использовать mlcp для загрузки ежедневных изменений данных клиентов в data-hub-STAGING, а затем используем гармонизированный поток для внесения изменений в data-hub-FINAL.

Как я понимаю, "collector.sjs" используется для возврата Uris, который должен быть согласован. После полной загрузки в 1-й день, существует ли способ, с помощью которого коллектор может определить изменения предыдущего дня и согласовать только эти строки?

У меня есть пара дизайнов

  1. Сохраняйте время пакетного запуска при каждом запуске и имейте логику в сборщике для возврата Uris с более высоким временем выполнения пакета (каждый документ сохраняется с временем выполнения пакета)

  2. Сохраните каждый документ в две коллекции (customer и customer_currentDate), а затем попросите сборщика вернуть документы из коллекции customer_currentDate. Тем не менее, это будет иметь проблемы, если проглатывать и гармонизировать запустить в разные дни

  3. Сохраните каждый документ в две коллекции (customer и customer_batchDateTime), а затем создайте маркер (что-то вроде строки в коллекции PROCESS с PROCESS_IND в качестве 'N'). Затем сборщик просматривает коллекцию PROCESS и ищет документы с PROCESS_IND в виде 'N' и возвращает документы из коллекции customer_batchDateTime. Наконец, writer.sjs будет превращать PROCESS_IND в "Y"

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

2 ответа

Решение

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

Для вашего случая использования, похоже, что лучший / самый простой подход - вставлять все документы каждый день в коллекцию с именем, например, "input-(current date)", а затем подавать ее как опцию в модуль коллектора, чтобы он может применить запрос коллекции.

В качестве альтернативы, вы можете рассмотреть возможность касания документов в Staging, добавив коллекцию с именем processed например. Вы можете сделать это из основного скрипта в скрипте гармонизации после запуска писателя. Сборщик может просто подавить обработанные документы и работать только с необработанными документами. Возможно, даже проще и надежнее, чем работа с более конкретными именами коллекций.

НТН!

Другие вопросы по тегам