Mongodb架构设计可实现最佳搜索性能

时间:2018-01-25 04:51:12

标签: node.js mongodb performance mongoose mongoose-schema

目前我正在使用MEAN堆栈实现Web应用程序。根据我的业务逻辑(与fiverr.com相同的业务逻辑)

  • 可以有多种服务
  • 一项服务可以拥有数百万服务提供商
  • 一个提供商可以提供许多服务
  • 用户应该能够根据average_cost和location搜索服务提供商。
  • 搜索提供商应该非常快。 (必须使用最佳方法)

我目前的方法是

  • 将服务详细信息和提供商详细信息保存在单独的架构中
  • 参考服务文档中的提供商,其中包含搜索所需的详细信息(average_cost,location)
  • 从服务文档中选择合适的提供者_id(基于average_cost和位置)
  • 然后使用选定的_ids获取提供者的完整文档。

这是我的服务架构

  var ServiceSchema = new Schema({ 

      service: {
            type: String,
            unique: true,
            index: true, 
            required: true
      }
      providers :[{
            _id:false,
            provider: {
                   type: Schema.Types.ObjectId,
                   ref: "Provider"
            },
            average_cost:{
                   type: String,
                   default: null
            },
            location:{
                   type: String,
                   default: null
            }
      }] 
  });

这是我的提供者架构

var ProviderSchema = new Schema({

  _id: {
        type: Schema.Types.ObjectId,
        ref: "User"
    },


  basic_info: {

              business_name: {
                  type: String,
                  required: true
              },

              discription :{
                  type: String,
                  default: null
              },
              tagline :{
                  type: String,
                  default: null
              }
    }
});

我的问题是,在服务文档中,提供者数组可以包含数百万个对象。 因为在Mongodb中,最大文档大小为16MB,所以数百万个对象可能超过该限制。所以我认为这不是一个好的架构设计。

任何人都可以建议我一个好的架构设计。

0 个答案:

没有答案