2016-07-06 57 views
0

我在我的marklogic数据库中有大约500k个文档。并且我启用了CPF。如果我想在文档上执行批量删除或进行批量更新(不希望为此更新触发CPF)。

我打电话给我的Marklogic管理员,他有权访问管理员页面(:8001 ),并要求他将触发器数据库更改为无,然后我做我的东西,然后再次请求我的管理员将其更改回原始触发器数据库..我禁用触发器数据库的原因是,如果我不这样做,它需要很长时间来处理我的请求

权限需要在Marklogic中禁用触发器数据库

我想一定有更好的方式来做到这一点:)比每次我这样做时打电话给我的ML管理员。下面是一些我的问题,希望有人能帮助我这个

  1. 什么是需要的,如果我想编程(XQuery的)特权禁用触发器数据库并重新启用它。如果某人能够提供准确的xquery调用来禁用和启用触发器数据库将会很有帮助。
  2. 有没有更好的方法来做到这一点?比我在做的方式?
  3. 是否有反正我可以告诉CPF不要运行给定的更新文件,除了我分配一些自定义标志,并在我的CPF我检查这个标志,如果启用标志什么也不做?

感谢

回答

0

当我读到你的问题,我在想#3解决方法:修改您的公积金管道,以确定是否需要处理的文件。每个管道状态更改都有一个与之关联的条件模块,您可以自定义该条件模块以查看您想要避免的任何情况。

我发现禁用触发器的问题是应用程序的某些其他部分可能导致文档更新,在这种情况下,CPF将错过该更新。所有这一切说,如果你想继续禁用CPF,一种方法是set the scope of your domains到什么东西看不到任何东西(dom:domain-scope("document", "NO-SUCH-DOC",()))。您需要以编程方式跟踪原始范围,以便您可以恢复它们。

+0

我同意个人更新CPF状态正常工作..但对于批量更新或删除,我需要去改变单个文档的状态,特别是在执行删除时,如删除集合中的所有文档。为此,我认为唯一的方法是禁用触发器数据库并重新启用它。但我会研究你们改变维生素范围的建议 – Ravi

1

(3)运行您触发器的域的范围是一个集合而不是URI。然后,从触发器中删除文档,您应该能够删除集合(即使是批量)。那些文件不再属于公积金的范畴。逻辑是当完成删除集合的提交时,它已经超出了所讨论的域。

在这里看到: https://docs.marklogic.com/guide/cpf.pdf
第29页
第5.3.2节
2/3一路下跌的页面:

注:因为有征收范围域只能继续下一阶段如果新的或修改过的文档是该集合的一部分,则可以使用 集合作为将文档移入和移出不同集合的处理方式。

我的意思是 - 通过删除集合将文档移出处理范围 - 然后删除。