동료와 아키텍처 토론을하고 이에 대한 답변을 찾아야합니다. 같이 데이터 포인트의 수백만의 집합을 감안할 때 :색인 생성과 읽기 속도 최적화를위한 정규화 비교
data =
[{
"v" : 1.44,
"tags" : {
"account" : {
"v" : "1055",
"name" : "Circle K"
}
"region" : "IL-East"
}
}, {
"v" : 2.25,
"tags" : {
"account" : {
"v" : "1055",
"name" : "Circle K"
}
"region" : "IL-West"
}
}]
우리가 태그 컬렉션의 필드에 조회 할 필요가 (예를 들어 account.name는 == "서클 K는"여기서), 어떤이있을 것이다 이에 계정 필드를 정상화에 속도 혜택 :
accounts =
[{
_id : 507f1f77bcf86cd799439011,
v: "1055",
name : "Circle K"
}]
data =
[{
"v" : 1.44,
"tags" : {
"account" : 507f1f77bcf86cd799439011
"region" : "IL-East"
}
}, {
"v" : 2.25,
"tags" : {
"account" : 507f1f77bcf86cd799439011
"region" : "IL-West"
}
}]
은 내가 이것에 대한 2dB의의를 구축하고 단지 속도의 모습을 볼 수있을 것이다 생각한다. 문제는 mongo가 BSON ID와 문자열을 비교할 때 더 나은가요? 문제의 DB는 약 1:10 쓰기 대 읽기입니다.
B- 트리가 키를 저장하는 방식을 고려할 때이 둘 사이에는 중요한 차이가 있다고 생각하지 않습니다. – WiredPrairie
@ WiredPrairie 내 의혹도있다. 우리는 성능을 극대화해야합니다. 둘 다 테스트해야 할 것입니다. 두 개의 쿼리 대 하나의 쿼리이기 때문에 실제로는 정규화 된 버전이 더 느릴 수도 있습니다. – jcollum
분명히 두 개의 쿼리를 수행하는 것이 다소 느립니다. 나는 당신의'_id' 질문에 대해서만 논평하고있었습니다. – WiredPrairie