我想知道是否有人有删除 Marklogic 中数百万个文档的经验?目前我使用简单的 xqueries 来获取需要删除的文档 uri,然后我使用 corb 批处理整个操作。
一旦我有了 Uris 列表,是否有更快的方法来删除数百万个文档?
我想知道是否有人有删除 Marklogic 中数百万个文档的经验?目前我使用简单的 xqueries 来获取需要删除的文档 uri,然后我使用 corb 批处理整个操作。
一旦我有了 Uris 列表,是否有更快的方法来删除数百万个文档?
有几种方法可以解决这个问题。第一个问题是如何检索文档 uri 的?最好的方法是使用 URI 词典和cts:uris
or cts:uri-match
。其次是你如何执行删除。您可以遍历找到的 uri,并调用xdmp:document-delete
每个,但您可能会考虑跳过以上所有内容,并一起恢复xdmp:collection-delete
。这似乎非常有效。它确实需要您分配一个唯一的集合标签,并且可以完全删除它。
!
调用xdmp:spawn
orxdmp:spawn-function
可能比 corb 快一点,仅仅是因为它避免了网络往返。
如果文档是为它组织的,xdmp:collection-delete
或者xdmp:directory-delete
也可以更快。但理想情况下,每个集合或目录应该包含大约 1,000-100,000 个文档。
最后,如果你想摆脱一切,清除森林或数据库会快得多。导出您想要保留的内容(可能使用 XQSync)、清除数据库然后重新导入甚至会更快。
另请注意,如果您启用了目录创建,则删除速度会慢得多。如果您不需要目录(仅 WEBDAV 真正需要),我建议不要使用目录,那么删除速度会快得多。