我们正在尝试制作一个"实时"我们申请的统计部分, 我们想要使用MongoDB。
所以,为此,我基本上想象一个名为存储的数据库。在此数据库中,我创建了一个统计信息集合。
我存储的数据如下:
{
"_id" : ObjectId("55642d270528055b171fedf5"),
"cat" : "module",
"name" : "Injector",
"ts_min" : ISODate("2015-05-22T13:16:00Z"),
"nb_action" : {
"0" : 156
},
"tps_action" : {
"0" : 45016
},
"min_tps" : 10,
"max_tps" : 879
}
因此,我有一个类别,名称和日期来确定一个唯一的对象。在这个对象中,我存储:
现在,要注入我的数据,我使用Upsert方法:
db.statistics.update({
ts_min: ISODate("2015-05-22T13:16:00.000Z"),
name: "Injector",
cat: "module"
},
{
$inc: {"nb_action.0":1, "tps_action.0":250},
$min: {min_tps:250},
$max: {max_tps:250}
},
{ upsert: true })
因此,我执行了2 $inc
来管理我的计数器,并使用$min
和$max
来管理我的统计数据。
所有这些都有效......
1个线程在一台机器上注入50.000个数据(无分片)(对于10个模块),我观察到每秒3.000 / 3.500个操作。
而我的问题是......我无法说出它是否有好处。
有什么建议吗?
PS:我在示例中使用长名称字段,并在插入的情况下添加一个用于初始化每秒的设置部分