2016-07-06 3 views
0

У меня есть около 500 тыс. Документов в моей базе данных marklogic .. И у меня включен CPF. Если я хочу сделать массовое удаление или сделать массовое обновление (не нужно, чтобы CPF запускался для этого обновления) в документах.

Я вызываю своего администратора Marklogic, у которого есть доступ к странице администратора (: 8001), и попросите его изменить базу данных триггеров на none, а затем я сделаю свой материал, а затем снова попрошу администратора изменить его исходную базу данных триггеров. Причина, по которой я отключу базу данных триггеров, - это если я этого не делаю, это занимает много времени, чтобы обработать мой запрос

Привилегии должны отключить базу данных триггеров в 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 отлично работает .. но для массового обновления или удаления мне нужно перейти и изменить состояние отдельных документов, особенно при удалении, например удаление всех документов в коллекции. Для этого единственным способом, я думал, было отключить базу данных триггеров и снова включить его. Но я рассмотрю ваше предложение об изменении объема doamins – Ravi

1

(3) Запустите триггеры с областью, привязанной к коллекции, а не URI. Затем, чтобы удалить документ из триггеров, вы сможете удалить коллекцию (даже навалом). Затем эти документы больше не входят в сферу CPF. Логика заключается в том, что при совершении фиксации, которая удаляет коллекцию, она уже выходит за пределы рассматриваемого домена.

Смотрите здесь: https://docs.marklogic.com/guide/cpf.pdf
Page 29
Раздел 5.3.2
2/3 пути вниз страницы:

Примечание: Поскольку домены с областью сбора может продолжаться только следующий этап если новый или измененный документ является частью этой коллекции, вы можете использовать коллекции в качестве способа перемещения документов из разных наборов .

Я имею в виду логику - переместите документ из области обработки, удалив сборку, а затем удалите.