2010-11-22 89 views
2

我正在開發一款應用程序,該應用程序爲用戶收集推文,Facebook狀態和Facebook照片。目前,用戶準確地確定了何時何地想要收穫,蜘蛛在此期間提取數據。什麼時候存儲在MySQL數據庫中,我的計劃是在MongoDB中存儲所有的推文,狀態和照片元數據(在S3上有實際的圖像)。MongoDB收藏集

我在想我會爲每個用戶想要收穫的時期創建一個集合,然後將該時期的所有推文等存儲在該特定集合中。

這似乎是一個合理的方法嗎?

+0

爲什麼,你是否認爲將它們存儲在不同的集合中是一個好主意......我有點困惑?你不應該需要超過一個收藏這個我想,但也許你可以解釋一點?另外,(無恥的插件)這裏有一個Twitter/MongoDB教程,如果它有幫助:http://learnmongo.com/posts/mongodb-php-twitter-part-1/ – 2010-11-23 03:27:51

+0

我認爲這會讓我更容易退出該特定事件的所有相關內容?而不是通過搜索我想要的數十萬個文檔? – christophmccann 2010-11-23 11:21:55

回答

4

這似乎是一個合理的方法嗎?

#1用戶查詢什麼?是否「按期間查找活動」?如果用戶只想「按期發現」,那麼這是有道理的。

但是,如果用戶想要累積視圖,現在必須爲用戶收集歷史併合並顯示。

如果你想要一個「通過這個時期」和「積累」,那麼我建議簡單地將所有數據填充到單個用戶對象中。用「收穫運行」和「時間戳」標記個人行爲很容易。

Mongo Details:MongoDB可以處理大約4MB的單個文檔。最新的版本將其升至8或16MB。如果你只是使用這個空間來顯示文字,請認識到這是很多文字。戰爭副本&和平剛好超過3MB。所以你在談論數百頁4MB的文本。使用8或16MB,您大概可以在大多數人身上存儲狀態更新&多年的推文。

請注意,MongoDB具有用於存儲二進制數據(比如圖像文件)的GridFS,因此通常只在User文檔中存儲指向這些數據的指針。