从磁盘上的json文件访问对象

时间:2016-08-29 16:02:29

标签: json database couchdb apache-drill

我的磁盘上有~500个json文件,代表世界各地的酒店,每个大约30 mbs,所有对象都有相同的结构。

在我的Spring服务器的某些位置,我需要获取单个酒店的信息,让我们通过code(在json对象内)说。

数据是只读的,但我可能会在特定时间从酒店提供商处获得更新,例如额外的json文件或delta更改。

现在我不想将我的json文件迁移到关系数据库中,所以我一直在研究实现我想要的最佳解决方案。

我尝试Apache Drill因为直接从json文件查询让我觉得处理数据的麻烦少了,我使用Drill进行了目录查询,如:

SELECT * FROM dfs.'C:\hotels\' WHERE code='1b3474';

但这对我来说似乎并不是最有效的方式,因为需要大约10秒才能获得一家酒店。

目前我正在尝试Couch DB,但我还在学习它。我应该将所有酒店迁移到单个文档(对我来说有点意义)?或者我应该考虑每个酒店的文件?

我只是在寻找能够达到我想要的最佳解决方案的指示,所以这里要征求您的意见。

1 个答案:

答案 0 :(得分:0)

这里的主要问题是json文件没有与之关联的索引,Drill也没有为它们创建索引。因此,每当您执行SELECT * FROM dfs.'C:\hotels\' WHERE code='1b3474';之类的查询时,Drill别无选择,只能读取每个json文件并解析并处理每个文件中的所有数据。您拥有的文件和数据越多,此查询所需的时间就越长。如果您需要经常进行这样的查找,我建议不要将Drill用于此用例。一些替代方案是:

  • 一个关系数据库,您可以在其中为代码列构建索引。
  • 一个键值存储,其中代码是关键。