2014-10-02 83 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对单个文档有16 MB的限制。

你可以做类似如下:

- 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/