2012-06-15 1 views

ответ

15

Вы можете объявить переменную в любом модуле. Например, это config.xqy.

declare variable $PRECISION as xs:integer := 4; 

Для использования этой переменной необходимо импортировать этот модуль в рабочий модуль.

import module namespace conf = "http://your-namespace" at "config.xqy"; 

И относятся к этой переменной:

$config:PRECISION 
2

Если вам нужны значения, доступные через сервер, есть библиотека в MarkLogic XQuery общин для хранения пар упорных ключ/значение:

https://github.com/marklogic/commons/blob/master/properties/properties.xqy

Возможно, вы уже это рассмотрели, но также можете просто просто сохранить глобальные данные в документе в базе данных и получить доступ к w ith doc() - или eval(), если вам нужно перейти к нему из другой базы данных.

5

Если ваше приложение работает на одном E-узле, вы можете использовать server fields, которые также предназначены для этого прецедента.

1

У вас есть несколько вариантов. Если вам нужна глобальная постоянная переменная, метод config.xqy упоминается в ответе @Andrew Orlov, это замечательно, потому что вы избегаете блокировки от одновременного доступа к файлу properties.xml.

Если вам нужна переменная, которая может быть изменена через кластер узлов, пример property.xqy, связанный с @wst, как представляется, использует глобально назначенные пространства имен для встраивания извлекаемого ключа и значения. Довольно умный. Тем не менее, я не уверен, насколько это предназначено для тяжелых уровней изменений.

E-node Специфическая переменная из @Eric Bloch - это хорошо, но, пожалуйста, имейте в виду, что она не сохранится при перезагрузке системы.

Мне было бы интересно узнать, как все это сравнивает производительность.

Смежные вопросы