2011-07-03 5 views
2

Q를 모델링해야합니다 & mongoDB에서 stackoverflow와 같은 사이트가 있습니다. 여기에 주요 문제가 있습니다.mongoDB의 Q & A 사이트 모델링

나는 2 가지 주요 객체를 가지고 있습니다 - 질문과 사용자 (답변과 같은 다른 것을 잊어 버리십시오 ...).

사용자가 질문합니다. 항상 질문이있는 사용자를 표시해야합니다. 질문을 검색하고 모든 질문을 탐색 할 수 있습니다. 사용자가 1000 개 미만의 질문을하게 될 것이라고 말하는 것이 더 안전합니다.

사용자는 자주 업데이트되는 평판이 있으며 현재의 평판은 항상 질문에 표시되어야합니다.

해결 방법 1 : 삽입 질문 내부 사용자 -

A가 사용자의 평판 변경, 모든 관련 질문 업데이트해야하지만, 경우에 가입 수행 할 필요가 없습니다.

지금의 명성을 업데이트하는 것은 문제가되지 않습니다

하지만 사용자들 사이에 가입 할 필요가 - (단지 RDBMS처럼) 분리 수거 같은 모델 사용자와 질문 : 그리고 쉽지 않은 단일 사용자

해결 방법 2를 표시 질문이 검색 될 때마다 질문을합니다. RDBMS 에서처럼. 또한 mongoDB에는 조인이없고 조인은 실제로 2 개의 호출입니다. 질문을하기 위해 1 개, 사용자를 얻기 위해 1 개이므로 검색 할 100 개의 질문이 있으면 100 개의 개별 사용자를 얻는 100 개의 호출이 있습니다. .

Soluion 3 : 질문 내부에 삽입 사용자와 사용자에 대해 별도의 컬렉션이 너무

업데이트 할 때, 사용자 수집 및 사용자 만 표시 포함 된 사용자 업데이트 - 사용 사용자

그래서 어느 것을 사용해야합니까? 그렇지 않으면 MySQL과 같은 RDBMS로 가장 잘 해결됩니까? 그리고 mongoDB의 필드 업데이트는 얼마나 빠릅니까? 여러 가지 방법이 있습니다

답변

3

Solution 1 미완성 된 것처럼 나를 위해 sonunds 어떤 식 으로든 모든 사용자의 스토리지가 있어야합니다.

솔루션이 또한 해결책이 될 수 있으며, 문서 데이터베이스에서 당신은 '진짜'에 가입 할 수 없기 때문에 어떤 RDBMS보다 아마 더 좋을 것입니다 그입니다 당신이 쉽게 시스템을 확장 할 수 있다는 것을 의미한다.

시스템이 그렇게 큰 것은 아니므로 솔루션 # 2를 선택하십시오.

해결책 3 질문에 모든 사용자 정보를 포함시키지 않고도 표시해야하는 정보 만 포함 할 수 있습니다.

그래서 높은 확장 성있는 시스템을위한 최적의 솔루션이 될 것입니다 :

이 이

Users - 모든 사용자 관련 정보의 주 저장, 당신은 질문 평판, 셀 수 있습니다 여기에 추가로이 답변 계산 및 통계 데이터 당신은

필요

Questions {ShortUserInfo {UserName, Reputation, GoldBadgetsCount, ...} } - 필요한 사용자 관련 정보가 포함 된 질문을 저장할 수 있습니다.

Answers 특정 질문에 대해서도 포함시켜야합니다. 그리고 아마도 cont cont ShortUserInfo (또는 그 정도)이 될 것입니다.

해결 방법 # 3을 사용하면 손쉽게 시스템을 조정하고 빠르게 처리 할 수 ​​있습니다. 그러나 사용자가 프로필 (평판)을 업데이트 할 때 각 질문/답변에서이 정보를 업데이트해야하지만이 작업은 비동기식으로 수행 할 수 있습니다.이 경우 정보는 오래 동안 부실 할 수 있지만 괜찮습니다. 귀하의 SO 프로파일을 변경할 수 있으며 사용자 이름이 일부 질문/답변에서 여전히 오래된 것을 볼 수 있습니다.

희망이 도움이 될 것입니다.

+0

정확히 내가 필요한 친구, 감사합니다.) – Amila

+0

@Amila : 당신은 환영합니다. –

0

();

때문에 나는 내 사이트 어쨌든 가능성이 단일 서버에서 자란 경우 (복제본과 샤딩하는 경로 읽기 요청에 대한 속도와 용이의 몽고를 사용 싶어요 이 작업을 수행하지만 난 아마 있을 것입니다 - 사용자 수집 -. 질문 모음을 질문 문서에 내가 대답의 배열을 포함 할 것은

가 유용한 사람들을 찾을 수 있습니다 스키마 디자인 프리젠 테이션 및 비디오가 있습니다 개체를

.