短JSON对象的压缩方法

时间:2015-02-22 22:42:25

标签: java json algorithm compression

我要在redis实例中存储一些JSON。没有一个JSON对象会很长 - 想想每个redis键的单个对象,每个JSON对象上可能有20组属性 - 值对。

有些事情:

关键1:

{
 "id": "de305d54-75b4-431b-adb2-eb6b9e546011",
 "email": "joe.bloggs@gmail.com",
 "telephone": "01234567890",
 "age": 18
}

关键2:

{
 "id": "de305d54-75b4-431b-adb2-eb6b9e546012",
 "email": "john.doe@gmail.com",
 "telephone": "01234567890",
 "age": 19
}

将有数百万条这样的条目。

大约12个属性名称将是静态的,其余的将变化,我期望大多数值变化(尽管有些可能是真/假,一些可能匹配的低整数,也许是某些与域名的相似之处)。

是否有合适的压缩算法,理想情况下是Java实现,这对于这类数据是理想的?也许我可以提供静态字典而不是像LZW尝试从每个数据中学习的东西?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用更有效的替代json,如:

答案 1 :(得分:0)

这看起来就像我追求的那样:

http://docs.oracle.com/javase/7/docs/api/java/util/zip/Deflater.html#setDictionary(byte[])

在Boris the Spider的评论之后,我打算尝试使用HUFFMAN_ONLY选项,但还没有。 FWIW只有一个测试数据样本,我看到压缩字节[]约为原始数据的20%。