제 3 자 서비스 (Facebook, Google 등)를 사용하여 사용자를 인증하는 응용 프로그램에서 작업하고 있습니다. 각 사용자에게 제 3 자 ID와 관련된 내부 ID (uuid v4)를 제공합니다. 내가 어떤 ID를 조회 할 수 있기 때문에어느 것이 MongoDB에서 더 낫습니다 : 다중 색인 또는 다중 모음
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'}
});
, 나는 그들 모두에 인덱스를 필요 : 지금, 내 (몽구스) 사용자 문서 모델은 다음과 같이 보인다. 나는 이것이 많은 사용자 (또는 제 3 자 로그인 (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를 만듭니다. 새 사용자를 누른 다음 저장).
어느 쪽이 "더 나은가"(잘 저울, 짐을 다루는 등)?