【发布时间】:2010-11-14 13:35:00
【问题描述】:
我目前在我的 Java 项目中使用 JSON(通过 gzip 压缩),其中我需要在磁盘上存储大量对象(数亿)。我每行有一个 JSON 对象,并且不允许在 JSON 对象中使用换行符。通过这种方式,我可以逐行从磁盘流式传输数据,而无需一次读取整个文件。
事实证明,解析 JSON 代码(使用 http://www.json.org/java/)比将原始数据从磁盘中提取或解压缩(我在运行中进行)的开销更大。
理想情况下,我想要的是一种强类型的序列化格式,我可以在其中指定“此对象字段是字符串列表”(例如),并且因为系统知道会发生什么,它可以快速反序列化它.我也可以通过给别人它的“类型”来指定格式。
它还需要是跨平台的。我使用 Java,但与使用 PHP、Python 和其他语言的人一起工作。
所以,回顾一下,应该是:
- 强类型
- 可流式传输(即逐位读取文件,而无需一次将其全部加载到 RAM 中)
- 跨平台(包括Java和PHP)
- 快速
- 免费(如演讲)
任何指针?
【问题讨论】:
-
如果从磁盘上提取原始数据更快,为什么不这样做呢?如果 JSON 速度较慢,为什么还要乱用它?
-
好的,所以解析 json 比解压缩,或者从磁盘读取数据要慢。所以呢?对于您需要做的事情来说太慢了吗?或者你只是为了它而优化?
-
布列塔尼:对于我需要做的事情来说太慢了,这不是过早的优化。
标签: java php serialization strong-typing