2012-03-23 3 views
1

Ich stoße auf Probleme, bei denen einige unserer Datenspeicher einen hohen Durchsatz aufweisen. Wir verwenden POJOs, die mit Jackson in JSON serialisiert wurden. Wie können wir JSON-Daten komprimieren?Was sind einige der üblichen Schritte zur Reduzierung der JSON-Datengröße?

Ein erster Gedanke vorgeschlagen BSON zu verwenden, aber anscheinend ist es nicht viel kleiner als JSON.

+0

Konnten Sie eine Lösung finden? Ich habe auch dasselbe Problem. Ich habe ein JSON-Dokument, aber ich bin mir nicht sicher, wie ich dieses JSON-Dokument mithilfe von Messagepack serialisieren soll. Irgendwelche Gedanken? Ich habe bereits eine Frage dazu, aber bisher keine Antwort. Wenn Sie möchten, kann ich hier einen Link angeben. – ferhan

+0

Wir haben die Jackson-Bibliothek für die JSON-Verarbeitung verwendet und konnten die Smile-Erweiterungen verwenden, um komprimiertes JSON zu generieren, und wir mussten unseren serverseitigen Code außer einigen zusätzlichen Konfigurationen nicht ändern. http://jackson.codehaus.org/1.8.8/javadoc/org/codehau/jackson/smile/package-summary.html Ich habe einige Benchmarks für verschiedene Serialisierungsprotokolle hier http://techtraits.com/noproto/ –

+0

I siehst du, also hast du gar kein messpack benutzt? Sie haben gerade Smile-Erweiterungen auf Ihrem tatsächlichen JSON angewendet? – ferhan

Antwort

1

Wenn Sie nicht JSON vermählen Sie MessagePack versuchen könnte:

Messagepack ist eine binäre basierende effiziente Objektserialisierung Bibliothek. Es ermöglicht den Austausch strukturierter Objekte zwischen vielen Sprachen wie JSON. Aber im Gegensatz zu JSON ist es sehr schnell und klein.

Es gibt Implementierungen in vielen Sprachen.

+0

Ja, leider sind wir irgendwie mit JSON für dieses Projekt verheiratet , aber ich habe gute Dinge über MessagePack gehört –

+0

Nach einem genaueren Blick kann ich vielleicht MessagePacks nur für die Datenspeicherung verwenden, indem Sie die gleichen Objekte kommentieren. Wissen Sie, ob MessagePack Objekthierarchien unterstützt? d.h. ich sage ParentClass x = decodiere (Rohdaten); und es sollte wissen, dass x tatsächlich eine Instanz der Child-Klasse ist? –

+0

Ich bin nicht sicher, was Sie meinen, aber alles, was Sie in JSON verwandeln, sollten Sie auch mit MessagePack serialisieren können. Weitere Informationen in [dieser Antwort] (http://stackoverflow.com/a/6357042/675549). Wenn es mehr um den Speicher geht, könnten Sie Ihren JSON gzip verwenden? – jtg

Verwandte Themen