2011-02-09 2 views
1

질문이 있습니다. 일부 유형의 객체 (예 : 제품 데이터)에 대한 데이터 저장소 사용을 고려 중입니다. 문서 저장소를 사용하는 기준은 개체에 세부 정보 페이지가있는 경우 전체 개체를 빠르게 읽어야하므로 (예 : 모든 특성, 이미지, 설명 등이있는 제품)입니다. SQL을 사용하는 기준은 목록을 표시하는 것입니다 (예 : N 최신, 가장 인기있는 등).MongoDB와 같은 SQL 및 문서 저장소의 데이터를 복제하는 것이 합법적 인 아이디어입니까, 아니면 피해야합니까?

일부 개체는 두 가지 기준을 모두 충족합니다. 제품 예입니다. SQL 데이터베이스의 인덱스 페이지와 문서 저장소의 다른 데이터 목록에 렌더링 목록에 사용될 정보를 저장하는 것이 일반적인 방법입니까?

+2

"SQL을 사용하는 기준은 목록을 표시합니다 (예 : 가장 최신의 N 개의 인기있는 항목 등)."-이 모든 작업은 mongodb를 사용하여 수행 할 수 있습니다. 적절한 인덱스가 있고 쿼리가 잘 작성되면 요청이 빨리됩니다. – zerkms

+0

그러나 색인을 사용하는 경우에도 많은 양의 데이터가 있으면 RDBMS에서 문서 저장소보다 쿼리가 더 빨라야한다고 생각하지 않습니까? –

답변

1

비정규 화 및 포함 내 과거 프로젝트 중 하나에서 더 나은 성능을 얻으려면 SQL 비정규 화를 했어.하지만 매우 많은 데이터를 (예를 들어 많은 관계에 하나 있다면) 때문에 SQL 비정규 화를 좋아하지 않아. 두 번째 단계는 데이터 액세스 계층을 mongoDB로 다시 작성하는 것이 었습니다. 그리고 mongoDB에서 여러 개의 문서를로드해야하는 어려운 페이지의 경우 페이지 컨텐트에 맞게 비정규 화 된 문서 (다른 문서의 포함 된 컬렉션과 일반 데이터 포함)를 만들었습니다. 내 모든 문제 페이지가 페이스 북과 같이 빠르게 작동하지는 않습니다.).

그러나 여기서 가능한 문제는 매번 비정규 화 문서를 지원해야하기 때문입니다. 또한 모든 비정규 화 된 데이터 업데이트는 비동기 적으로 작동하며 일부 데이터는 잠시 동안 만료 될 수 있지만 정상적인 방법입니다. stackoverlow조차 비정규 화를 사용합니다. 때로는 열린 질문이 대답을 볼 수 있기 때문에 언젠가 질문 목록으로 돌아가서 페이지를 새로 고침 할 때 가끔 질문에 대답이 없기 때문입니다.

비정규 화가 필요한 경우 mongodb를 선택하십시오.

+0

답변 해 주셔서 감사합니다. 레. Stackoverflow, 나는 그것이 비정규 화 된 데이터의 업데이트보다 캐싱 문제라고 생각한다. –

3

비정규 화가 성능을 얻는 데 적합한 경우 비정규 화를 진행하십시오. 그러나 비정규 화 된 데이터의 업데이트를 처리 할 수있는 방법이 있는지 확인해야합니다. MongoDB에있는 옵션은 다음과 같습니다

  • 여러 쿼리는
  • 포함 된 문서
  • 데이터베이스 참조

이 당신의 선택을 비정규 피하기 위해 ... 주요 아이디어는 MongoDB를 제작 한됩니다

관련 문제