我想以JSON格式下载一些开放数据(地理数据)。
可下载的文件以bz2
格式存档,重量约为430 Mb。当未压缩时,json
文件的重量约为3,2 Gb。
还有机会下载对应于单个区域的部分数据(总共100个)。在这种情况下,每个文件重约4 Mb,一旦未压缩,给出一个24 Mb的json
文件。
我计划在rails应用程序中使用这些数据(目前使用postgres数据库)。
由于数据以JSON格式提供,我考虑将mongodb数据库与postgres数据库集成在一起。
但我不知道mongodb是否能够加载如此庞大的文件,例如。使用mongoimport
。
我听说过8或16 Mb文档大小的限制。但是这个限制是对应于文件的单个“行”还是文件对应于整个文档?
在后一种情况下即使使用部分文件也不可能使用mongodb,对吗?
但是因为我也听说mongoid
“慢”,我想知道在postgres本身,在自己的表(甚至是自己的数据库)上“加载”这些数据会更好。
如果是这样,我如何加载这些数据?
我想用普通的Ruby逐行读取文件并在seed.rb
文件中填充数据库。 (我知道它可能需要非常宽松的时间)
任何人都可以告诉我在我的情况下什么可能是最好的选择?
一些考虑: 我没有任何限制。 我正在使用泊坞容器。 这些数据只会被读取,以便通过自动完成功能为主应用程序中的某些字段提供信息。 我计划每周从新下载的文件更新数据。
编辑:我感兴趣的“字段”(我的意思是JSON文件的键)是可以有多个单词的字符串(即空格分隔的字符串)。 最终我希望在单词的开头有最快的查找搜索(可能在字符串的中间)。 也许根据mongodb和postgres提供的索引可能性来限制选择。 对于postgres,我可以将这些数据存储在字符串字段中,甚至可以在JSONB字段中“按原样”存储,以提供最快的索引。