2016-08-03 24 views
1

マークロジックのXMLのドキュメントサイズをパフォーマンスの一部として計算しようとしています。作成した関数や正確な計算が可能なクエリを手伝ってもらえますか?ドキュメントのサイズ?私はあなたがそれは(「ディスクへ」)テキストとしてシリアライズされた場合、XML文書だろうどのように大きな意味「サイズ」によって場合は、marklogicのXmlドキュメントサイズを見つける方法

{string-length(string(data($doc))) idiv 2} . 

答えて

5

インデックスを考慮する前に、元のドキュメントサイズを計算するのが最も簡単な方法は、ドキュメントをバイナリに変換することです(xdmp:binary-size())。ここで

xdmp:binary-size(xdmp:unquote(xdmp:quote($doc),(),"format-binary")/binary()) 
+0

がどのように私はMBまたはいずれかのKBで同じ値を得ることができること?あなたがしたい方法の一例ですか – xmlalcholic

+1

xdmp:binary-sizeは、バイトであるintを返します。そのため、KBまたはMBに変換するだけです。したがって、1 KBは1024バイトです.1 MBは1024 KBです。ですから、xdmp:binary-size(。)div 1024はKB xdmpを与えます:binary-size(。)div 1024 div 1024はあなたにMBを与えます。 –

7

のようなつま先の式を有する

string-length(xdmp:quote(doc('file.xml'))) 

与えますデフォルトのエンコードおよびシリアライズオプションを使用して、文字の文字数を入力します。
Unicode文字の分布とxdmp:quote()に指定されたserializaitonオプションと摂取前の類似の書式の違いによって、UTF8を使用する場合は1:1(文字からバイト)から1: (またはエクスポート後)。 ラテン言語とデフォルト設定の場合、通常は1:1〜 に近いです。正確なシリアライズとエンコーディングオプションを特定し、ファイルシステムに保存するかバイナリに変換してバイナリの長さを取る必要があります。それでもファイルシステムとOSに依存します(ブロックサイズ、テキストエンコーディングなど)。

すべてのデータディレクトリで使用されているディスクスペースのスナップショットを取って統計的に判断できるようにした場合、文書が使用するディスク/メモリの量を意味する012loginの別のスナップショットを作成してから、文書数で割って計算します。 これは速度と制限等

ドキュメント、テキストサイズ次いで、典型的にはるかに小さい高度に圧縮形態で格納されているが、索引付けをマージ、そのようなインデックス付けの設定、文書間の類似性のような多くの要因に応じて、おそらく大幅に変化するであろうオプションは合計サイズに加算されます...どちらも、異なる文書が共有する用語/トークン/部分文字列の類似度に大きく依存します。

サイズによってあなたがアクセスしたときに文書がかかりますどのくらいのメモリ意味場合、それはさらに多くの変数と少なく、容易に測定可能です。 テキストコンテンツがほとんどまたはまったくない高度に構造化されたドキュメントでは、0x(インデックスで完全に解決されたクエリ)から10x以上になることがあります。

関連する問題