2011-11-26 81 views
3

我在node.js上构建了一个应用程序,该应用程序具有多对多关系中的用户和产品(一个用户有多个产品,同一个产品可能属于多个用户)。每个用户也有位置信息。MongoDb适合我的应用程序吗?

大多数情况下,我需要在用户第一次访问时进行很多写操作(在以下访问中写了几个),然后我需要匹配用户,例如,拥有最多共同产品的用户,并返回相同的产品相同。我可能还需要

我使用Postgres的现在,以匹配位置的用户(或通过匹配的位置对它们进行排序),但我想我会从长远来看,这样做蒙戈的更好。问题是,我从来没有工作的NOSQL数据库(没有恐惧;))

的问题是,在下面的“模式”适用于上面所描述的?

[user]{ 
_id 
name 
age 
[location]{ 
      streep 
      town 
      country 
      } 
} 

[products]{ 
_id 
name 
color 
[users]{ 
     user_id_1 
     user_id_2 
     user_id_3 
     } 
} 

我认为,由于要求,我比通过嵌入方式更好。我对吗?你认为我应该将products_id存储在用户文档中吗?

谢谢!

+0

只是好奇,你为什么认为mongo更好?您是否在使用当前数据库时遇到任何问题? – JohnP

+0

对于其中一种我听说会更好的性能(看过一些很有前途的图形),我在使用node.js的postgres实现方面遇到了一些问题,这让我很沮丧。你认为我应该坚持使用postgres吗?谢谢!! – jribeiro

+1

只是想知道你为什么要做这个开关。 mongo驱动程序非常好,有很多框架,所以不用担心。但是,如果你要使用连接的数据,它不会像关系数据库那样干净。取决于你愿意忍受多少重复的数据。规范化在mongodb上会带来一些冲击,因为用例有点不同。 – JohnP

回答

3

您的数据似乎与我很相关。我不会看到MongoDB或NoSQL解决方案的巨大优势。它们适用于非关系型文档解决方案。

如果您遇到缩放或性能问题,我会得到一些数据。除非你知道根本原因是什么,否则不要假设一个解决方案。它可能是node.js - 谁知道? Some people不关心它。

+0

这里有一些非常好的点,但对我来说,node.js的优点是在广泛接受的语言像JavaScript这是简单的使用。我看到它的方式是服务器成本/效率与您的时间成本和效率。这就是说,当节点(最终)咬人时,知道并做好准备是非常好的,但现在数据库性能是主要问题。第一次访问约2000年平均插入,然后才能节点做它的魔术(这有点违反节点原则,但我认为我有一个解决方案)谢谢! – jribeiro

+0

对不起拼写错误... – jribeiro