2012-06-15 34 views

Trả lời

15

Bạn có thể khai báo biến trong bất kỳ mô-đun nào. Ví dụ, nó là config.xqy.

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

Để sử dụng biến này, bạn cần nhập mô-đun này vào mô-đun công việc của mình.

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

Và đề cập đến biến này:

$config:PRECISION 
2

Nếu bạn cần các giá trị truy cập trên máy chủ, có một thư viện trong MarkLogic XQuery Commons để lưu trữ cặp khóa/giá trị dai dẳng:

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

Và bạn có thể đã xem xét điều này, nhưng bạn cũng có thể chỉ cần lưu trữ dữ liệu chung trong tài liệu trên cơ sở dữ liệu và truy cập w ith doc() - hoặc eval() nếu bạn cần truy cập nó từ một cơ sở dữ liệu khác.

5

Nếu ứng dụng của bạn đang chạy trên một nút E, bạn có thể sử dụng server fields, loại này cũng được thiết kế cho trường hợp sử dụng này.

1

Bạn có một vài tùy chọn. Nếu bạn cần một biến liên tục toàn cầu, phương pháp config.xqy đề cập đến trong câu trả lời của @Andrew Orlov là rất tốt bởi vì bạn tránh bất kỳ khóa nào khỏi truy cập đồng thời vào tệp properties.xml.

Nếu bạn cần biến có thể bị đột biến trên một cụm nút, ví dụ property.xqy được liên kết bởi @wst xuất hiện để sử dụng không gian tên được gán trên toàn cầu để nhúng khóa và giá trị có thể truy xuất. Khá thông minh. Tuy nhiên, tôi không chắc chắn bao nhiêu điều này có nghĩa là cho mức độ thay đổi nặng nề.

Các E-nút biến cụ thể từ @Eric Bloch là tốt, nhưng cũng xin lưu ý rằng nó sẽ không tồn tại khi khởi động lại hệ thống.

Tôi muốn biết cách tất cả những điều này so sánh hiệu suất một cách khôn ngoan.

Các vấn đề liên quan