2013-10-06 88 views
0

我有我的collectionSocialWall並且每個用戶都有自己的Document,每月有Event驅動的通知。Mongo Map使用PHP爲社會新聞素材場景減少vs排序

我的問題是,users將要在Event對象進去SocialWall基於現場TS新的通知。有效詢問自TS以來,您能否通知我所有通知?(爲了舉例假設TS是在同一個月內)

我有1個選擇在這裏,以便給用戶只有他/她想要的東西。

1)我是否從SocialWall中獲取所有的整個月份並將其排序在PHP

隨着用戶的朋友增加,與應用程序不同的交互增加陣列將真正快速增長,因爲用戶將有很多事件。因此,我將不得不按TS排序和過濾一個巨大的數組。這可能不是大規模性能或內存管理的最佳選擇。

2)我是否製作Map Reduce函數並使MongoDB給我排序的&過濾的數組?

我一直在閱讀,有很多關於map reduce不是非常有效的評論。是的,因爲它2.4有所改善,但作爲一個new to MongoMap Reduce(我從來沒有做過一個之前)我不知道什麼是真正的意思在性能方面。因此,我擔心創建一個緩慢的查詢,反過來會給我的Mongo服務器帶來更大的壓力。此外,我一直在讀,有很多人喜歡,以獲得最佳的性能,使用Hadoop他們與map reduce複雜的查詢。

我想知道什麼是我的問題,目前最好的解決辦法?我應該去爲PHP或作出Map Reduce排序?

如果Map Reduce是最好的解決辦法,我怎麼能走呢?

文件看起來是這樣的

SocialWall 
{ 
_id: MongoId 
userId: MongoId 
Month: 1003(MonthYear) 
Events:[] 
} 

Event 
{ 
_id: MongoId 
userId: MongoId 
ts: ISODate 
details:[] 
likedBy:[] 
comments:[] 
} 
+0

社會牆面最好爲每行一個事件與該牆整牆的帖子的細節做了沒有@Sammaye你的意思是沒有'SocialWall'以及直接讀取'聯接需要 – Sammaye

+0

Event'?但是,我必須在所有用戶朋友的ID中搜索'event'才能找到他們的事件。這將創造更多的查詢?如果/當我需要啓動'Sharding'時,這也不會讓我的生活變得糟糕嗎? –

+0

MongoDB不適合某些場景。這可能是其中之一。 – WiredPrairie

回答