2013-08-27 23 views
0

我開始使用MongoDB報告/分析。我目前有一個使用SQL Server來存儲所有信息的系統。問題是我不知道是否應該將用戶可編輯信息存儲在MongoDB數據庫中。MongoDB報告外部數據庫

例如,我可以存儲喜歡信息:

[ 
    { user: {id: 123, name:"John Smith"}, login_count: 5} 
    { user: {id: 564, name:"Mike Doe"}, login_count: 3} 
    { user: {id: 678, name:"Mary Torres"}, login_count: 1} 
] 

所以,如果我想運行一個報告,「大多數用戶登錄」列出,這很容易,因爲我的名字在那裏。但是,如果用戶名更改,我需要更新NoSQL數據庫中的所有非標準化數據。如果我僅存儲ID,則在更新用戶名時沒有問題,但是當我想要顯示報告時,我也必須查詢SQL Server數據庫。

你會如何處理?

+0

它是建立在對問題給定用戶ID有許多重複filds背後(地址,PHONENUMBERS等) ?雖然對我來說似乎這個名字完全依賴於id。 – attish

+0

是的,我想在報告中顯示很多與該ID相關的信息。問題是我是應該將這些信息放在mongo中,還是隻將該ID放在那裏,並將信息保存在SQL Server中。 –

+0

我不會混合使用兩個數據庫引擎,我會使用mongo或SQL服務器,我的觀點是:如果負載可能超過SQL服務器的容量,將與mongo一起使用。有一些最佳實踐,可能有人能夠設計一個mongo數據模型,與您無需面對的問題是您存儲事情的次數並獲得不一致的問題。這些培訓涵蓋了他們在線提供的信息:https://education.mongodb.com/。如果你提供你的模型,我們也可以提出建議。 – attish

回答

0

您可以使用DBRef或手動引用:

你需要存儲第一用戶信息:

db.user.insert({id: 123, name:"John", "lastName":"Smith"}) 
db.user.insert({id: 564, name:"Mike", "lastName":"Doe"}) 
db.user.insert({id: 678, name:"Mary", "lastName":"Torres"}) 

,並在收集登錄只需要ID從用戶收集

[ 
    { user: 123, login_count: 5}, 
    { user: 564, login_count: 3}, 
    { user: 678, login_count: 1} 
] 

但你需要用戶名

flag=db.svlogin.find({"field.login_count":5}) 
user=db.user.find({"_id":flag[0]['user']}) 
print user[0] 
... 
{id: 123, name:"John", "lastName":"Smith"} 

在這個例子中,我使用Python .... 記住,MongoDB是不是RDBMS數據庫...