Python MongoDB与大数据

Python MongoDB与大数据,python,mongodb,optimization,bigdata,Python,Mongodb,Optimization,Bigdata,我有一个很大的数据库,其中一个集合有近5亿个文档,如下所示: {'WP43234' : '12312312'} 第一个是登入,第二个是ID——基本上它是两个数据集之间链接的集合。问题是,许多访问都指向同一个ID,这使得它非常庞大。我在第一个字段上有一个索引,它加快了查找过程,但每个记录大约2分钟的速度仍然太慢: [ { "v" : 2, "key" : { "_id" : 1 }, "name" :

我有一个很大的数据库,其中一个集合有近5亿个文档,如下所示:

{'WP43234' : '12312312'}
第一个是登入,第二个是ID——基本上它是两个数据集之间链接的集合。问题是,许多访问都指向同一个ID,这使得它非常庞大。我在第一个字段上有一个索引,它加快了查找过程,但每个记录大约2分钟的速度仍然太慢:

[
    {
        "v" : 2,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "TaxIDMapper.links"
    },
    {
        "v" : 2,
        "unique" : true,
        "key" : {
            "ProteinID" : 1
        },
        "name" : "ProteinID_1",
        "ns" : "TaxIDMapper.links"
    }
]
主要目的是在我用python编写的应用程序中加速以下过程:

用户上传的文件的访问蛋白质ID说高达100k 查找登录和相关ID最耗时的部分 从第二次收集中获取数据小,工作速度快,无需对其进行任何处理 就我个人而言,我认为这些措施应该奏效:

将数据库放在SSD上而不是硬盘上 更强大的CPU 多处理-并行请求数据线程可能更好?
但是,我不确定速度是否会显著加快,足以处理大量用户请求。还有什么可以做的吗?我正在考虑切换到SQL,但MongoDB的性能似乎更好。

您应该为您的收藏使用不同的结构:按taxonId对登录进行分组,如下所示:

{ 
  _id: taxonID, 
  acc: [ "WP43234", 
         "WP43234.1",
         "WP43234.2"
       ]
}
然后在acc字段上创建索引。 在考虑升级硬件之前,请确保您的查询已优化。查看解释,确保正确使用索引IXSCAN而不是COLLSCAN。
使用mongodb 3.4,wiredTiger引擎和快速压缩

我将试用它并报告结果。谢谢请注意:我使用的不是版本,而是附件。数据集很大,因为我有来自不同数据库的acc映射到NCBI税务id。