gpt4 book ai didi

javascript - MongoDB : multiple indexes or multiple collections 哪个更好

转载 作者:行者123 更新时间:2023-12-03 11:14:22 24 4
gpt4 key购买 nike

我正在开发一个使用第三方服务(Facebook、Google 等)对用户进行身份验证的应用程序。我为每个用户提供一个内部 ID(uuid v4),该 ID 与他们的第 3 方 ID 相关联。现在,我的( Mongoose )用户文档模型看起来像这样:

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,其中包含指向该新用户的链接,然后保存)。

哪种方式“更好”(扩展性好、处理负载等)?

最佳答案

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

关于javascript - MongoDB : multiple indexes or multiple collections 哪个更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27410372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com