2012-06-15 3 views

Répondre

15

Vous pouvez déclarer une variable dans n'importe quel module. Par exemple, c'est config.xqy.

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

Pour utiliser cette variable, vous devez importer ce module dans votre module de travail.

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

et se réfèrent à cette variable:

$config:PRECISION 
2

Si vous avez besoin des valeurs accessibles sur le serveur, il y a une bibliothèque dans les MarkLogic XQuery communes pour le stockage persistant paires clé/valeur:

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

Et vous avez peut-être déjà considéré cela, mais vous pouvez également simplement stocker les données globales dans un document sur la base de données et accéder à w doc doc() - ou eval() si vous avez besoin d'y accéder à partir d'une base de données différente.

5

Si votre application s'exécute sur un seul nœud électronique, vous pouvez utiliser server fields, qui sont en quelque sorte conçus pour ce cas d'utilisation.

1

Vous avez quelques options. Si vous avez besoin d'une variable constante globale, les mentions de la méthode config.xqy dans la réponse de @Andrew Orlov sont excellentes car vous évitez tout verrouillage d'accès simultané à un fichier properties.xml.

Si vous avez besoin d'une variable pouvant être mutée sur un cluster de nœuds, l'exemple property.xqy lié par @wst semble utiliser des espaces de noms affectés globalement pour incorporer une clé et une valeur récupérables. Assez intelligent. Cependant, je ne suis pas sûr à quel point cela est destiné à des niveaux de changement importants.

La variable spécifique E-node de @Eric Bloch est bonne, mais sachez qu'elle ne survivra pas au redémarrage du système.

Je serais intéressé de savoir comment tout cela compare les performances.

Questions connexes