压缩JSON以提高带宽效率

时间:2016-05-24 16:24:55

标签: arrays json compression

我发布了一些代码来更有效地在Code Review上存储JSON(数组),但它开始吸引StackOverflow类型的响应,所以我想我会在这里发布辩论目的而不是代码。

JSON正在迅速成为快速,方便,可靠的机器到机器通信的首选格式化标准。它具有灵活性和广泛支持,但在数据负载(如数据库中的数据负载)方面存在一些缺点。来自名为fruits的数据库表的JSON有效负载可能如下所示:

[{"id":1,"abbreviation":"appl","name":"Apple"},
{"id":2,"abbreviation":"pear","name":"Pear"},
{"id":3,"abbreviation":"bana","name":"Banana"},
{"id":4,"abbreviation":"bkby","name":"Blackberry"},
{"id":5,"abbreviation":"strw","name":"Stawberry"},
{"id":5,"abbreviation":"pech","name":"Peach"},
{"id":6,"abbreviation":"plum","name":"Plum"}]

由于数组键,此有效负载中的大多数数据都会重复。从带宽的角度来看,这是非常低效和麻烦的。我想出了一种方法来压缩JSON,方法是删除键并将它们放在数组的第一行,如下所示:

C[["id","abbreviation","name"],
[1,"appl","Apple"],
[2,"pear","Pear"],
[3,"bana","Banana"],
[4,"bkby","Blackberry"],
[5,"strw","Stawberry"],
[5,"pech","Peach"],
[6,"plum","Plum"]]

我知道gzip通常用于减少有效负载所需的带宽,但我想为什么不同时执行这两种操作? Gzip是无损的,意味着它只能压缩,因为它必须完全恢复所有内容。更好的存储效率与gzip相结合,可以获得最佳效果。

我的问题是这个建议的优缺点是什么。有人建议对此处理开销不值得。我辩论说,这些天带宽比处理能力要昂贵得多。我错了吗?我错过了什么吗?如果你可以减少一半以上的有效载荷,是不是值得呢?

1 个答案:

答案 0 :(得分:0)

  

“我认为,这些天带宽比处理能力要昂贵得多。”

这取决于您发送的数据量和频率。如果你每天发送10g的5gb文件,这就是很多数据,所以考虑压缩它。如果您每天发送10kb的5kb文件,那么对于普通高速连接几乎没有任何带宽。它还取决于接收器的连接速度。超过3.5mb / s连接的50gb数据(我曾经拥有的)将需要一段时间才能下载接收器。

The Archive Compression Test仍在那里,但我不知道它上次更新的时间。它将各种条件下的许多档案馆(图像,文本等)与所有档案馆的链接进行了比较。

您的个人申请决定应基于这些项目等。 然后随着条件的变化调整应用程序。即如果需要更多压缩,有能力的用户可以轻松插入不同的归档程序。