0
我有30Gb制表符分隔的文本文件与数字,我需要最快的方式索引它并做第一和第二列的查询。我试过MongoDB,但上传数据到数据库需要很长时间,我试过通过json文件进行mongoimport,但它需要大量的时间。最快速的方式来索引和查询巨大的制表符分隔文件
mongoimport --upsert --upsertFields A,B,S1,E1,S2,E2 -d数据库名-c 表名data.json
数据文件片段:
504 246 91.92007 93 0 4657 5631 5911 0 39 1061 1162
813 469 92.14697 109 0 2057 2665 7252 1 363 961 1399
2388 987 92.20945 61 0 1183 1575 1824 0 66 560 5088
2388 2323 92.88472 129 0 75 1161 1824 1 2516 3592 12488
2729 1008 95.29058 47 0 435 1166 1193 1 76 654 1055
2757 76 94.25837 12 0 0 44 1946 0 51 68 247
2757 2089 92.63158 14 0 12 30 1946 0 14 30 211
用最少的时间做正确有效的方法是什么?任何有关最好的数据库提示?或者关于mongo上传速度优化?
查询的示例:
objs = db.TableName.find({'A':2757})
objs = db.TableName.find({'B':76})
对于列A和B有多达1000个命中与平均20
你要多久查询?你有一个示例查询? – 2014-12-13 12:27:52
30Gb/50 = 600Mtuples!需要上传多长时间并制作索引? – JJoao 2014-12-13 18:10:54
您的问题是关于进口速度,查询速度还是两者?仅供参考,MongoDB 2.6中的'mongoimport'工具是单线程的,因此不是导入大型数据集的最快方法。对于即将发布的MongoDB 2.8版本,命令行工具已在Go中重写,以提高性能和并发性。 MongoDB 2.8目前仍处于候选版本阶段(2015年12月15日),但您可以尝试新的'mongoimport'进行比较。为了加快查询速度,您需要提供更多信息,首先使用.explain(true)输出查询。另外,你的MongoDB版本。 – Stennie 2014-12-14 19:58:13