Как прервать некоторые, но не все потоки загрузки в MarkLogic Data Hub Framework

Мы работаем с MarkLogic Data Hub Framework и загружаем документы в единую базу данных через конечную точку записи многодокументных документов REST.

Иногда мы получаем обновления документов таким образом, если они не изменились. Очевидно, что в этом случае мы не хотим добавлять эти документы в MarkLogic из-за единичного характера, который приведет к ошибочным временным меткам и ненужному пространству для хранения.

Мы написали код для обнаружения дубликатов (с использованием хеширования), однако мы не знаем, как мы можем прервать прием дублированного документа, пока обрабатываются недублированные документы в одном запросе. То есть, когда один запрос содержит как недубликаты, так и дубликаты документов, как мы можем предотвратить запись только недубликатов. В Data Hub Framework нет подключаемых модулей для изменения записи документа (так как это контролируется REST api). Мы пытались добавить fn:error() в контент-плагин, но, к сожалению, это прерывает запись всего нескольких документов, а не только записи для тех документов, которые приводят к ошибке.


person T. Philippi    schedule 11.07.2018    source источник


Ответы (2)


Я делаю здесь что-то вроде снимка в темноте, не видя вашего кода, но я полагаю, что вы можете вернуть пустую последовательность вместо fn:error или xdmp:document-insert в тех случаях, когда вы обнаруживаете дубликат, и это должно работать нормально.

person Rob S.    schedule 11.07.2018
comment
Да, мы пробовали это, но это не сработало. Если вы преобразуете документ в пустую последовательность в структуре концентратора данных, API документов по-прежнему будет записывать пустой документ. - person T. Philippi; 12.07.2018

В конце концов мы обсудили это с архитектором решений MarkLogic и пришли к выводу, что это невозможно с API v1 / documents по умолчанию.

Чтобы решить эту проблему, мы написали собственный пользовательский API как часть v1 / resources. Этот api просто вызывает код инфраструктуры концентратора данных, а затем записывает документы, если они не дублируются.

person T. Philippi    schedule 09.01.2019