さまざまな .xqy ページで使用できるグローバル変数が必要です。Marklogic サーバーの xquery でそのような変数を宣言できますか?
4 に答える
任意のモジュールで変数を宣言できます。たとえば、config.xqy です。
declare variable $PRECISION as xs:integer := 4;
この変数を使用するには、このモジュールを作業モジュールにインポートする必要があります。
import module namespace config = "http://your-namespace" at "config.xqy";
そして、この変数を参照してください:
$config:PRECISION
アプリケーションが単一の E ノードで実行されている場合は、このユース ケース用に設計された サーバー フィールドを使用できます。
サーバー全体でアクセス可能な値が必要な場合は、永続的なキーと値のペアを格納するためのライブラリが Marklogic XQuery Commons にあります。
https://github.com/marklogic/commons/blob/master/properties/properties.xqy
すでにこれを検討しているかもしれませんが、単にグローバル データをデータベース上のドキュメントに保存し、別のデータベースから取得する必要がある場合は doc() または eval() でアクセスすることもできます。
いくつかのオプションがあります。グローバル定数変数が必要な場合は、ファイルconfig.xqy
への同時アクセスによるロックを回避できるため、@Andrew Orlov の回答に記載されている方法が最適です。properties.xml
ノードのクラスター全体で変更できる変数が必要な場合、property.xqy
@wst によってリンクされた例は、グローバルに割り当てられた名前空間を使用して取得可能なキーと値を埋め込んでいるようです。かなり賢い。ただし、これが重大なレベルの変更をどの程度意図しているのかはわかりません。
@Eric BlochのE ノード固有の変数は適切ですが、システムの再起動後は存続しないことにも注意してください。
これらすべてがパフォーマンスに関してどのように比較されるかを知りたいです。