2011-02-10 40 views
1

我很想好好听听人们对他们设计这个收集方案的意见。从mysql到mongodb - 设计集合

我想尝试使用MongoDB的一个应用程序(如我一直在使用的MySQL在过去的8年)

我会先给出一个关系表模式。

users 
user_friends 
user_notifications 

articles 
article_categories 
article_participants 

comments 

如果我要实现的是表结构到MongoDB中,这会是正确的方式来定义我的集合:

users => array 
{ 
    _id 
    email, 
    password, 
    name, 
    ... 
    user_friend => array{ 
     _user_id, 
     date_created 
    } 
    user_notifications => array{ 
     _notification_id 
    } 
    my_articles =>array{ 
     _article_id 
    } 
} 

article 
{ 
    _id, 
    content_, 
    date_created, 
    ..., 
    article_category => array{ 
     _category_id 
    } 
    article_participants = array{ 
     _user_id 
    } 
    comments=>array{ 
     _user_id 
     name, 
     comment, 
     date 
    } 
} 

categories 
{ 
    _id, 
    _user_id 
    name 
    comments=>array{ 
     _user_id 
     name, 
     comment, 
     date 
    } 
} 

请随时发表评论或解释你将如何组织你的收藏。任何帮助深表感谢。

以及,我应该甚至使用mongodb这种类型的应用程序? (社交博客分享应用)

回答

1

我的看法是最好的方法是使用值对象来嵌入实体对象的对象。

检查这个link for more details

值对象:一个包含属性,但没有概念上的身份的对象。他们应该被视为不可变的。例如:当人们交换美元钞票时,他们通常不区分每个独特的钞票;他们只关心美元钞票的面值。在这种情况下,美元钞票就是价值对象。但是,美联储可能会关注每一个独特的法案;在这种情况下,每个账单将是一个实体。

0

Mongodb将成为这种应用程序的优秀工具。

在MongoDB中,嵌入比使用额外表引用效率高得多。

欲了解更多信息,你可以看看这个链接http://www.mongodb.org/display/DOCS/Schema+Design