2012-06-15 11 views

Respuesta

15

Puede declarar la variable en cualquier módulo. Por ejemplo, es config.xqy.

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

Para usar esta variable, necesita importar este módulo en su módulo de trabajo.

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

y se refieren a esta variable:

$config:PRECISION 
2

Si necesita valores accesibles a través del servidor, hay una biblioteca en los MarkLogic XQuery Commons para almacenar pares clave/valor persistentes:

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

Y es posible que ya haya considerado esto, pero también podría simplemente almacenar los datos globales en un documento en la base de datos y acceder a w ith doc() - o eval() si necesita acceder desde una base de datos diferente.

5

Si su aplicación se ejecuta en un solo E-node, puede usar server fields, que también están diseñados para este caso de uso.

1

Tiene algunas opciones. Si necesita una variable constante global, el método config.xqy mencionado en la respuesta de @Andrew Orlov es excelente porque evita cualquier bloqueo desde el acceso simultáneo a un archivo properties.xml.

Si necesita una variable que pueda mutarse en un clúster de nodos, el ejemplo property.xqy vinculado por @wst parece utilizar espacios de nombres asignados globalmente para incrustar una clave y un valor recuperables. Muy inteligente. Sin embargo, no estoy seguro de cuánto significa esto para grandes niveles de cambio.

La variable específica E-node de @Eric Bloch es buena, pero tenga en cuenta que no sobrevivirá a un reinicio del sistema.

Me interesaría saber cómo se comparan estas prestaciones en cuanto a rendimiento.

Cuestiones relacionadas