2016-07-06 59 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一路下跌的頁面:

注:因爲有徵收範圍域只能繼續下一階段如果新的或修改過的文檔是該集合的一部分,則可以使用 集合作爲將文檔移入和移出不同集合的處理方式。

我的意思是 - 通過刪除集合將文檔移出處理範圍 - 然後刪除。

相關問題