问题描述
我大约有 4300万份文档,该文档包含 LIVE 版本中的最新版本的文档,并且在另一个版本集中名为( /集合/版本号)。我要删除的版本集约为3400万。一次删除所有内容的最佳方法是什么。
解决方法
您可以尝试使用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库进行版本控制。如果是,并且如果以后不希望使用任何版本,则仅删除版本化的文档。在这种情况下,可以使用“ dls:document-unmanage” API。
此外,在继续之前,请探索dls:purge和dls:document-purge。我不太确定这两个。
无论如何,即使不是DLS,也不推荐一次性处理它们(单笔交易)。要么批量处理它们,要么通过spawn将它们全部设置在任务服务器上的不同线程中。