많은 메시지가있는 응용 프로그램이 있습니다. 모든 사용자는이 메시지를 다른 사용자에게 보내기 위해 하나의 메시지를 선택할 수 있습니다. 마지막으로이 메시지는 플래그 ('메시지를 보낸 사람 : user1, user2, ...)을 가져옵니다. 이러한 정보는 mongoDB에 저장되어야합니다. 지금은 생각하고 2 가지 방법 : 하나 개의 컬렉션작은 문서가 많거나 적은 큰 문서
1) 많은 작은 문서
모든 문서처럼,이 메시지와받는 사람의 배열을 보낼 메시지 ID, 사용자 이름을 포함 이 : 연간 3.6 백만 문서가있는 경우
{
_id:'3DA5FC203,
sender:'username1',
recipient:['user1','user2','user3']
},
{
_id:'4AD290FC,
sender:'username1',
recipient:['user1','user2','user3']
},
{
_id:'4AD290FC,
sender:'usernameX',
recipient:['user2']
}
1000의 경우 사용자는 1 개 광석 더받는 사람에게 10 개의 메시지 하루를 보내기 때문에. 하나 명의 컬렉션을
다른 방법으로 덜
2) 더 큰 문서를 적은 문서 수 있지만 하나를 더 큰 것입니다. 예를 들어이 메시지의 모든 보낸 사람과받는 사람에 대한 정보가있는 모든 메시지에 대한 하나의 문서. (위의 예)에만이 문서 대신 3,하지만 하나 개의 문서는 100 개 이상의 보낸 사람을 포함 할 수있다 :이 경우
{
_id:'3DA5FC203,
'username1':['user1','user2','user3'],
},
{
_id:'4AD290FC,
'username1':['user1','user2','user3'],
'usernameX'['user2']
},
: 측정 MongoDB의 항목은 그렇게 볼 수 있었다.
제 질문은 어떤 경우 mongoDB가 더 잘 처리 할 수 있습니까? 작은 문서가 많거나 적습니까? 그리고 하나의 발신자 (username1)로부터 모든 메시지와 수신자를 표시하는 것과 같은 분석을 수행하는 것이 더 나은 시나리오입니까? 당신이처럼, 값으로 키를 사용하여
큰 문서를 가지고 최대 문서 크기가 16MB를 초과하지 않거나 필요한 오버플로 문서를 처리 할 전략이 있는지 결정하기 위해 분석을 수행 했습니까? – WiredPrairie
MongoDB가 더 잘 처리 할 수 있는지 여부는 데이터, 특정 쿼리 등을 어떻게 사용하는지에 달려 있습니다. – WiredPrairie