2011-11-26 79 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