非常簡單,我需要將時間序列數據存儲在文檔中。我已經決定有一份30分鐘的數據文件是合理的。文檔可能如下所示:Mongo C驅動程序,儘快更新文檔
但這只是每秒鐘將更新的數百/千個文檔中的一個。
{
_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
}
設置寫入關注或關閉沒有差別。
1更新聽起來很合理。也許你可以發佈一些代碼?此外,每秒創建一個新文檔可能會更快,因爲它會減少文檔的潛在碎片。 – Cameron 2012-08-16 02:47:37
你的實際更新代碼是什麼? – 2012-08-16 02:50:02
@Cameron - 想要接近30-40k插入每秒 – stackmate 2012-08-16 03:08:39