很简单,我需要将时间序列数据存储在文档中。我认为有一份负责 30 分钟数据的文件是合理的。该文档可能如下所示:
但这只是每秒将更新的大约几十万个文档中的一个。
{
_id: "APAC.tky001.cpu.2011.12.04:10:00",
field1: XX,
field2: YY,
1322971800: 22,
1322971801: 23,
1322971802: 21,
// and so on
}
这意味着每 30 分钟,我使用_id
和field1
创建文档field2
。然后,每一秒我都想添加一个时间戳/值组合。
我正在使用 mongo c 库,我假设它会超快,但我这样做的方式需要一个mongo_update
不能批量完成的。我认为没有办法使用mongo_insert_batch
.
不幸的是,它的速度非常慢 - 性能很糟糕。我这样做完全不正确吗?糟糕,我的意思是通过做一些粗略的工作,我得到 600/秒,在备用数据库(不命名名称)中,我得到 27,000/秒。
代码大约是:
for (i=0;i<N;i++) {
if (mongo_update(c,n,a,b,MONGO_UPDATE_UPSERT,write_concern) != MONGO_OK)
// stuff
}
关闭或打开注销关注没有任何区别。