2016-08-03 27 views
1

Ich versuche, die Doc-Größe des XML in Mark Logic im Teil der Leistung zu berechnen. Könnte jemand bitte helfen mir mit eingebauten Funktionen oder jede Abfrage, wo ich meine genaue berechnen kann Größe des Dokuments? Ich habe toe Formel wieWie finde ich die Xml-Dokumentgröße in marklogic

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

Antwort

5

Der einfachste Weg, den ich gefunden habe, um die Größe des Rohdokuments zu berechnen (bevor Indizes berücksichtigt werden), besteht darin, das Dokument in eine Binärdatei zu konvertieren und uns xdmp:binary-size(). Hier

ist ein Beispiel dafür, wie würden Sie tun, dass

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

Wie kann ich den gleichen Wert in MB oder entweder in KB bekommen? – xmlalcholic

+1

xdmp: binary-size gibt das an int zurück, das ist Bytes, also müssen Sie es nur in KB oder MB konvertieren. Also 1 KB ist 1024 Bytes 1 MB ist 1024 KB. Also würde xdmp: binary-size (.) Div 1024 dir KB xdmp geben: binary-size (.) Div 1024 div 1024 würde dir MB geben. –

7

Wenn von 'Größe' Sie meinen, wie groß das XML-Dokument sein würde, wenn es als Text ('to disk') serialisiert wurde,

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

geben Sie die Anzahl der Zeichen mit den Standard-Codierung und Serialisierungsoptionen.
Dies variiert von 1: 1 (Zeichen zu Bytes) bis 1: 3, wenn UTF8 verwendet wird, abhängig von der Verteilung der Unicode-Zeichen und dem Unterschied zwischen den angegebenen serialization Optionen zu xdmp: quote() und der analogen Formatierung vor der Aufnahme (oder nach dem Export). Für lateinische Sprachen und Standardeinstellungen ist es normalerweise nahe 1: 1 - Um genauer zu werden, müssen Sie die genauen Serialisierungs- und Kodierungsoptionen festlegen und entweder das Dokument im Dateisystem speichern oder in Binärdateien konvertieren und die binäre Länge verwenden. Auch dann wird es Dateisystem- und Betriebssystemabhängig sein (Blockgröße, Textcodierung usw.).

Wenn "Größe" Sie bedeuten, wie viel Datenträger/Speicher das Dokument innerhalb Marklogic verwendet, die statistisch ermittelt werden kann, indem Sie einen Snapshot des Speicherplatzes in allen Datenverzeichnisse nehmen, dann eine große Anzahl von Dokumenten einfügen und einen anderen Snapshot nehmen und dann durch die Anzahl der Dokumente dividieren. Je nach Faktoren wie Indizierungseinstellungen, Ähnlichkeit zwischen Dokumenten, Zusammenführungsraten und Grenzwerten usw. kann dies sehr unterschiedlich sein.

Dokumente werden in einer stark komprimierten Form gespeichert, normalerweise viel kleiner als die Textgröße, aber indexiert Optionen addieren sich zur Gesamtgröße ... Beide hängen stark davon ab, wie viel Ähnlichkeit der Begriffe/Token/Teilstrings unterschiedliche Dokumente haben.

Wenn von Größe Sie meinen, wie viel Speicher ein Dokument übernehmen, wenn zugegriffen wird, das ist noch variabler und weniger leicht messbar. Es kann zwischen 0x (Abfragen, die vollständig nach Index aufgelöst werden) und 10x oder mehr für stark strukturierte Dokumente mit wenig oder keinem Textinhalt reichen.