如何通过用户定义的方案和海量数据获得更好的MongoDb性能

时间:2018-07-13 10:24:16

标签: c# mongodb performance indexing

在我们的c#Web应用程序中,我们使用的是MongoDB C#驱动程序3.6。情况是:

  1. 用户定义了所需的方案(通过为每个方案定义字段和数据类型),我们基于该方案创建了一个集合(每个方案通常都有20多个字段)

  2. 数据将根据计划以不同的方式(文件读取/网络服务/ etc)插入创建的集合中

  3. 然后,用户可以(使用某种用户界面)创建要在集合上执行的某些功能(可以使用一个或多个集合来完成),例如

    -根据某些条件使用另一个馆藏中的数据在馆藏中创建新记录

    -根据公式(使用其他字段)为集合的全部或部分记录设置一个或多个字段的值

    -计算全部或部分记录的总和/平均/列数(根据特定条件)

和许多其他操作。

现在的问题是:

  1. 应用程序在查询具有超过100万条记录的集合时会遇到性能低下和操作缓慢的问题,尤其是在使用跳过,限制和排序时

  2. 假设我们有2M条记录,并且我们想根据其他字段来更新每个记录的一个字段,并且我发现MongoDB不支持通过表达式进行更新,因此我们必须遍历记录并更新手动操作很慢,通常会以无响应状态结束

当前,我们正在使用一些方法来使其工作,但似乎还不够:

  1. 我们让用户最多选择14个经常被搜索的字段,并为它们定义单个字段索引

  2. 我们在较小的段中执行大型操作,例如以200000记录为一堆。

  3. 我们使用聚合框架是为了尽可能不检索某些操作的所有记录(例如,在只需要求和或计数的情况下获取一系列字段的求和或计数)

    < / li>

因此,关于拥有用户定义的方案,大集合和不同的描述的操作,您可以建议我们提高应用程序的质量和性能吗?索引呢?使用单字段索引可以吗?最后如何使用表达式而不是值更新许多记录,有什么方法可以做到?

谢谢

0 个答案:

没有答案