short JSON 对象的压缩方法
Compression method for short JSON objects
我要在 redis 实例中存储一些 JSON。 JSON 对象中的 None 将非常长 - 考虑每个 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 个属性名称将是静态的,其余的会有所不同,我希望大多数值会有所不同(尽管有些可能是 true/false,一些可能匹配的低整数也许与域名有相似之处)。
是否有适合这种数据的压缩算法,最好是 Java 实现?也许我可以提供静态字典而不是像 LZW 尝试从每条数据中学习的东西?
您可以尝试使用比 json 更有效的替代方法,例如:
- 消息包http://msgpack.org
- Bson http://bsonspec.org
- ubjson http://ubjson.org
这看起来像我想要的:
http://docs.oracle.com/javase/7/docs/api/java/util/zip/Deflater.html#setDictionary(byte[])
在蜘蛛鲍里斯的评论之后,我打算尝试 HUFFMAN_ONLY 选项,但还没有。 FWIW 使用单个测试数据样本我看到压缩字节 [] 是原始字节的 ~20%。
我要在 redis 实例中存储一些 JSON。 JSON 对象中的 None 将非常长 - 考虑每个 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 个属性名称将是静态的,其余的会有所不同,我希望大多数值会有所不同(尽管有些可能是 true/false,一些可能匹配的低整数也许与域名有相似之处)。
是否有适合这种数据的压缩算法,最好是 Java 实现?也许我可以提供静态字典而不是像 LZW 尝试从每条数据中学习的东西?
您可以尝试使用比 json 更有效的替代方法,例如:
- 消息包http://msgpack.org
- Bson http://bsonspec.org
- ubjson http://ubjson.org
这看起来像我想要的:
http://docs.oracle.com/javase/7/docs/api/java/util/zip/Deflater.html#setDictionary(byte[])
在蜘蛛鲍里斯的评论之后,我打算尝试 HUFFMAN_ONLY 选项,但还没有。 FWIW 使用单个测试数据样本我看到压缩字节 [] 是原始字节的 ~20%。