我的磁盘上有~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
,但我还在学习它。我应该将所有酒店迁移到单个文档(对我来说有点意义)?或者我应该考虑每个酒店的文件?
我只是在寻找能够达到我想要的最佳解决方案的指示,所以这里要征求您的意见。
答案 0 :(得分:0)
这里的主要问题是json文件没有与之关联的索引,Drill也没有为它们创建索引。因此,每当您执行SELECT * FROM dfs.'C:\hotels\' WHERE code='1b3474';
之类的查询时,Drill别无选择,只能读取每个json文件并解析并处理每个文件中的所有数据。您拥有的文件和数据越多,此查询所需的时间就越长。如果您需要经常进行这样的查找,我建议不要将Drill用于此用例。一些替代方案是: