繁体   English   中英

在MongoDB中哪个更好:多个索引或多个集合

[英]Which is better in MongoDB: multiple indexes or multiple collections

我正在开发一个使用第三方服务(Facebook,Google等)对用户进行身份验证的应用程序。 我给每个用户一个内部ID(uuid v4),该ID与他们的第三方ID相关联。 现在,我的(猫鼬)用户文档模型如下所示:

var user = new mongoose.Schema({
    uuid: {type: String, required: true, unique: true, index: true, alias: 'userId'},
    fbid: {type: String, required: false, index: true, alias: 'facebookId'},
    gid: {type: String, required: false, index: true, alias: 'googleId'}
});

因为我可以查询任何ID,所以我需要所有ID的索引。 我认为这可能成为大量用户的问题(或者如果我添加更多的第三方登录(Twitter,LinkedIn等)。现在,我的问题是这是否是正确的方法,或者如果有更好的解决方案。

我有一个想法是有多个集合,每个ID类型一个。 像这样:

var user = new mongoose.Schema({
    uuid: {type: String, required: true, unique: true, index: true, alias: 'userId'},
});

var facebookUser = new mongoose.Schema({
    fbid: {type: String, required: false, index: true, alias: 'facebookId'},
    userId: {type: Schema.Types.ObjectId, ref: 'user'}
});

这样做的好处是不会使用户模型混乱并且易于分片,但是这意味着要检索更多的查询来检索用户,甚至要创建更多的用户(1.检查facebookUser集合中是否存在用户,如果不存在,则创建一个新用户。 ,保存它,然后创建一个新的facebookUser,并带有指向该新用户的链接,然后保存该链接。

哪种方法“更好”(可以很好地缩放,处理负载等)?

索引要考虑的主要问题是它们将在内存中修复。 一个集合中有三个索引还是一个索引中三个集合无关(就索引而言)。 我倾向于将它们全部放入一个集合中以易于使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM