MongoDb的流量分析

问题描述:

所以我打算使用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

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