Marklogic - удаление коллекций с поддержкой версий

У меня около 43 миллионов документов, в которых есть последняя версия документа в коллекции LIVE, а также такой же документ с версией в другой коллекции версий с именем (/ collection / versionNumber). Я хочу удалить коллекции с поддержкой версий, которых около 34 миллионов. как лучше всего удалить все за один раз.

2 ответа

Вы можете попробовать использовать xdmp:collection-delete() для удаления всех документов в коллекции за одну транзакцию.

Если это не сработает и невозможно удалить за один раз, я бы посмотрел на использование пакетных инструментов. Например, работа CoRB.

Пример файла параметров задания с необходимыми свойствами, за исключением XCC-CONNECTION-URI:

# Inline module to select all URIs from the collection
URIS-MODULE=INLINE-XQUERY|let $uris := cts:uris("",(),cts:collection-query("/collection/versionNumber")) return (count($uris), $uris)

# Inline module to delete the docs
PROCESS-MODULE=INLINE-XQUERY|declare variable $URI as xs:string external; xdmp:document-delete($URI)

THREAD-COUNT=10

Я думаю, ваше приложение использует библиотеку DLS для управления версиями. Если да, и если вы никогда не хотите, чтобы какая-либо версия проверялась в будущем, удалите только те документы, которые имеют версии. В этом случае можно использовать API "dls: document-unmanage".

Кроме того, перед продолжением ознакомьтесь с dls: purge и dls: document-purge. Я не очень уверен в этих двоих.

В любом случае, даже если это не DLS, их обработка за один раз (одна транзакция) не рекомендуется. Либо обрабатывайте их партиями, либо задавайте их все в разных потоках на сервере задач через spawn.

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