2013-02-20 33 views
0

所以我打算使用mongodb(我是新的)跟蹤我的色情網站的一般印象和流量。我的橫幅廣告有時超過100萬次展示。我也有各種各樣的橫幅......所以我可能每天都會有10億次的橫幅廣告印象,我想將它存儲在數據庫中,以便我可以看到哪個橫幅在某個時間範圍內最好轉換,最好在某些國家等MongoDb的流量分析

對象的集合,例如看起來是這樣的:

{ "_id" : ObjectId("5124d03d512c175714000000"), "bid" : ObjectId("5124a9ec512c178710000000"), "city" : "Rome", "country" : "Italy", "client_id" : "127.0.0.1", "referer" : "youporn.com", "user_agent" : "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0", "visit_datetime" : "2013-Feb-20 02:31:41", "visit_year" : "2013", "visit_month" : "Feb", "visit_day" : "20" } 

所以我需要的信息和建議是存儲的印象這個好辦法,還是我的組織應該是完全以不同的(也許分開每個國家的收藏品,但在某些時候再次會出現問題)?

我很欣賞所有的想法,建議,問題和意見。

+0

每天約400字節和1Bn行,你每天會看到大約400GB的數據。爲此添加索引開銷,並且您可能會查看每日至少1 TB的日誌。不要說它不會工作,我不明白爲什麼不,只是問你的網站是否合理。 – 2013-02-20 15:01:33

+0

1-2TB對我來說是可以接受的,當然我有更小的彙總表,我的想法是每天清空收集或類似的東西,並使用匯總表進行分析。 – Splendid 2013-02-21 07:22:22

回答

1

AS @Joachim Isaksson對您的問題發表了評論,您生成的數據量很大。基於此,您必須決定是否有能力處理這一數量。

如果你確實有他們,我想你會需要一些地圖&之後減少方法從數據中獲取某些東西(使用當前的數據設計)。

我在這裏看到的主要問題是,你應該有一些你想要回答的具體問題。如果你這樣做,你可以相應地建模集合。尤其是你需要什麼樣的維度。否則,你最有可能收集一堆你永遠不會使用的數據,甚至收集錯誤的數據。

如果您只對國家和日期感興趣,爲什麼不在一個橫幅/日/國家/地區組合中的條目上增加計數器?因此,而不是節約每一次整日期和國家,創建這樣一個條目:

{ "bannerId" : "b1", "country" : "IT", "date" : "20130220", "count" : 0 } 

然後就是增加對象的計數的一部分。這將爲您節省大量數據。如果您需要更詳細的信息(例如每小時時間段),您還可以每小時保存一個條目(日期+小時)。

否則,爲什麼不看看現有的數據倉庫應用程序,它也提供了所有解釋數據的工具?也是一種選擇。

+0

感謝您的建議,我肯定會在每個橫幅上留下印象和獨一無二的印象,這是必須的,但如果在更新中的表現會很好,那麼在這裏使用您的建議也是可以接受的,因爲首先必須是橫幅廣告儘快交付。 – Splendid 2013-02-21 07:19:50

+0

無論如何我會做的是將分析部分與橫幅的交付解耦。 MongoDB的更新速度通常非常快,但是由於網絡問題需要比預期更長的時間。 爲了達到這個目的,你可以使用一些只需要獲取信息並稍後處理的系統,或者你可以更多地研究一下MongoDB驅動程序的「Fire and Forget」方法。基本上,你接受一些操作可能會丟失。如果這是可以接受的,那也是一個選擇。 – rit 2013-02-21 08:55:29