2014-10-02 2 views
-1

MongoDB에서 데이터베이스를 모델링하는 데 도움이 필요합니다.MongoDB의 스키마 디자인

아래 모델은 성능 문제를 보여줍니다.

- Collection users 
    - email 
    - hash 
    - store 
     - name 
     - adress 
     - logo 
     - products 
      - name 
      - value 
      - description 
      - image 
      - featured 
      - categories 
       - id_category 

- Collection category 
    - id 
    - name 

시스템에서 사용자는 상점을 가질 수 있고 상점에는 많은 제품이 있고 제품에는 많은 카테고리가 있습니다.

문제는 홈페이지에 추천 된 제품을 넣고 싶을 때 시스템이 모든 사용자를 검색하는데 좋지 않습니다.

다른 컬렉션에 제품을 넣으려고 생각했지만 MongoDB가 아닌 "관계형"모드를 생각해 보았습니다.

답변

0

MongoDB에서는 관계형 데이터베이스를 염두에두고 관계형 데이터베이스를 작성할 수 있으므로 관계형 데이터베이스가 일반적으로주의해야 할 사항에주의를 기울여야합니다. 또한 해당 작업을 수행해야합니다. 조인처럼 누락되었습니다. 그러나 그것은 당신이 관계형을 할 수 없다는 것을 의미하지 않으며 당신이 당신의 스키마를 본다면 당신은 이미 관계형 카테고리를하고 있습니다.

또한 제품과 함께 이미지를 저장하기 때문에 많은 상점이 생길 수 있으므로 조만간 16MB 문서 크기 제한에 부딪 힐 수 있습니다.

아마도 제품 컬렉션은 질문의 정보를 제공하는 올바른 방법 일 것입니다.

0

사용자가 많은 제품을 보유하고 있으므로 "제품"을 다른 컬렉션에 넣는 것이 좋습니다.

MongoDB는 단일 문서의 경우 16MB로 제한됩니다.

다음과 같은 일을 할 수 있습니다

- Collection users 
    - email 
    - hash 
    - store 
     - name 
     - adress 
     - logo 
     - products :[product1ID, product2ID,...] 
- Collection Product 
     - ProductID 
     - name 
     - value 
     - description 
     - image 
     - featured 
     - categories 
       - id_category 
- Collection category 
    - id 
    - name 

포함 된 문서 모델은 다 대다 관계를위한 좋은 선택이 아니다. 정규화 된 데이터 모델을 사용하면 디스크 공간을 절약하고 스키마를 명확히 할 수 있습니다. "JOIN"에 대해 여러 개의 쿼리를 실행해야 할 수도 있습니다. 자세한 내용은 공식 설명서의 데이터 모델 섹션을 참조하십시오. http://docs.mongodb.org/manual/core/data-modeling-introduction/