Mongodb 我们如何优化mongo日志以进行分析
我们使用mongo在我们的网站上记录活动,但现在我们的流量已经增长,我们正在努力获取我们想要的报告。我们暂停了。每个用户会话都有自己的记录,其中包括以下属性-Mongodb 我们如何优化mongo日志以进行分析,mongodb,logging,analytics,Mongodb,Logging,Analytics,我们使用mongo在我们的网站上记录活动,但现在我们的流量已经增长,我们正在努力获取我们想要的报告。我们暂停了。每个用户会话都有自己的记录,其中包括以下属性- { channel: 'adwords', device: { type: 'mobile' }, abTestArms: [ test1_arm2, test3_arm4 ], userEventCounters: { clickOnRedButton: 3, adjust
{
channel: 'adwords',
device: {
type: 'mobile'
},
abTestArms: [
test1_arm2,
test3_arm4
],
userEventCounters: {
clickOnRedButton: 3,
adjustPriceSlider: 4,
clickOnBlueButton: 2,
useSearchBox: 4
}
}
我们运行了大量的AB测试,希望找到不同版本如何影响用户活动。所以我们可以运行如下查询-
db.sessions.count({channel:'bing',device:'tablet',abTestArms:'test1_arm1','userEventCounters.useSearchBox':{$exists:true}})
或
db.sessions.count({频道:'bing',设备:'tablet',abTestArms:'test1\u arm1'})
我们以前使用聚合管道,但它们开始超时,所以现在我们正在一点一点地构建结果,但即使这样,我们也遇到了超时
我们尝试了各种不同的索引,例如
{channel:1, device:1, abTestArms:1, userEventCounters:1}
{channel:1, device:1, abTestArms:1, 'userEventCounters.hoverOverAd':1}
我们唯一没有尝试过的就是创建很多复合索引,比如
{channel:1, device:1, abTestArms:1, userEventCounters:1}
{channel:1, device:1, abTestArms:1, 'userEventCounters.hoverOverAd':1}
问题是,我们跟踪的用户事件很多,我们不希望有40多个这样的复合索引。此外,我们还必须在跟踪新事件时创建新索引
我们目前在数据库中保持大约300万个会话,而更大数量的查询通常在10万个。这并不是一件不寻常的事情,理想情况下,我希望能够在飞行中完成这项工作(就像我们过去在流量较小时所做的那样)。我错过了什么