Erhalte eine Zeichenfolge aus den komprimierten Daten und umgekehrt in Java

9

Ich möchte eine Zeichenfolge (ein XML-Dokument) in Java komprimieren und in Cassandra db als varchar speichern. Ich sollte in der Lage sein, es zu dekomprimieren, während ich von db lese. Ich schaute in GZIP und lz4 und beide zurück ein Byte-Array beim Komprimieren.

Mein Ziel ist es, eine Zeichenfolge aus den komprimierten Daten zu erhalten, die auch dazu verwendet werden kann, die ursprüngliche Zeichenkette zu dekomprimieren und zurückzubekommen. Was ist der bestmögliche Ansatz?

    
Sukreet Roy Choudhury 21.04.2017, 10:00
quelle

2 Antworten

3

Ich sehe keine guten Gründe für Sie , Ihre Daten zu komprimieren: Cassandra kann das für Sie transparent tun (es wird standardmäßig Ihre Daten LZ4). Wenn Sie also Ihren Daten-Footprint reduzieren möchten, haben Sie ein nicht existierendes Problem, und ich füge das XML-Dokument direkt an C *.

Übrigens nehmen alle Komprimierungsalgorithmen Array von Bytes und erzeugen Array von Bytes. Als Lösung könnten Sie etwas wie eine Base64-Codierung auf Ihr komprimiertes Byte-Array anwenden. Dekomprimieren Sie bei der Dekomprimierung die Logik: dekodieren Sie base64 Ihre Zeichenfolge und wenden Sie dann Ihren Dekomprimierungsalgorithmus an.

    
xmas79 24.04.2017, 14:18
quelle
0

Nicht genug Reputation um dies zu kommentieren als Antwort. Wenn Sie eine Zeichenfolge zurück haben möchten, hängt die signifikante Komprimierung von Ihren Daten ab. Eine sehr einfache Lösung könnte etwas wie Java-Komprimierung von Strings sein, aber das würde funktionieren, wenn nur Ihre Zeichenfolge ist Zeichen und keine Zahlen. Sie können diese Lösung so ändern, dass sie für die meisten Zeichen funktioniert. Wenn Sie jedoch keine sich wiederholenden Zeichen haben, erhalten Sie möglicherweise eine größere Zeichenfolge als die ursprüngliche.

    
clinomaniac 21.04.2017 15:22
quelle