Есть ли способ сделать пакетную обработку записей во время поиска данных в marklogic - PullRequest
0 голосов
/ 26 июня 2018

В настоящее время мы пытаемся улучшить производительность, используя xdmp:spawn-function с типом запроса в качестве типа транзакции. Итак, скажем, для критерия поиска у нас есть 90 документов, и я делю его на 3 пакета по 30 записей в каждой. Сейчас я отправляю 30 идентификаторов записей внутри xdmp:spawn-function и обрабатываю. Наконец я накапливаю данные за 3 партии. Я могу получить хорошую производительность при этом. Но мы опасаемся, что это может оказать негативное влияние на ожидание какого-либо потока на сервере задач кластера.

Не могли бы вы предложить что-то, чтобы избежать порождения и при этом иметь параллельную обработку?

1 Ответ

0 голосов
/ 26 июня 2018

Вы можете использовать xdmp:spawn-function и давать определенным задачам более низкий / более высокий приоритет, чем другим, используя опции . Вы можете отдавать нормальный приоритет своим пакетам и более высокий приоритет более критическим задачам, чтобы предотвратить ожидание на сервере задач.

В качестве альтернативы, если вы индексируете данные, которые вы пакетируете, вы можете использовать агрегатные функции для накопления данных, и эти функции выполняются параллельно в кластере. Существует множество встроенных агрегатных функций, таких как max / min , sum и т. Д. Если нужной вам агрегатной функции не существует, то сразу после установки , также можно написать свой собственный: https://docs.marklogic.com/guide/app-dev/aggregateUDFs

...