MarkLogic: создать временную коллекцию в определенной базе данных

#marklogic #marklogic-9 #marklogic-dhf

#marklogic #marklogic-9 #marklogic-dhf

Вопрос:

Версия MarkLogic: 9.0-6.2

Мое требование — включить двувременную обработку в КОНЕЧНОЙ базе данных, поэтому я создал требуемые индексы и оси диапазона файлов. Наконец, я создал временную коллекцию, как показано ниже (выполняется в конколе запросов с использованием data-hub-FINAL в качестве выбранной базы данных)

 const temporal = require("/MarkLogic/temporal.xqy");
const collectionResult = temporal.collectionCreate(
"customer", "system-axes", "valid-axes");
  

Однако я заметил, что область действия временной коллекции распространяется и на ПРОМЕЖУТОЧНУЮ базу данных. Когда я попытался выполнить обычный xdmp.documentInsert в промежуточной базе данных, передав коллекцию ‘customer’, я получаю сообщение об ошибке, что я не могу передать имя коллекции, поскольку коллекция customer является временной.

Я обошелся, используя другое имя коллекции (customerStaging), но является ли это ожидаемым поведением temporal.collectionCreate? Есть ли способ ограничить временную коллекцию базой данных, чтобы я мог использовать ту же коллекцию, что и не временную, в других базах данных?

Пожалуйста, предложите.

Ответ №1:

Временные настройки хранятся в базе данных schemas, подключенной к базе данных контента. Похоже, вы не используете последнюю версию DHF, которая имеет отдельную базу данных final-schemas и отдельную базу данных staging-schemas. Вам лучше обновиться до последней версии, чтобы иметь возможность использовать это.

В качестве альтернативы, вы могли бы рассмотреть возможность использования общих одно-временных / двувременных коллекций и отдельных логических коллекций, таких как ‘customer’. Документ может иметь более одной коллекции.

HTH!