我應該將對象存儲在數組中還是存儲在具有最高寫入速度的對象中?將數據作爲對象存儲在MongoDb中用於寫入性能
我試圖決定數據是否應該被存儲作爲對象的陣列,或使用的mongodb文檔內嵌套的對象。
在這種特殊情況下,我跟蹤一組不斷更新的文件,這些文件是我添加和更新的,文件名作爲密鑰和文件中處理的行數。
文件看起來像這樣
{
t_id:1220,
some-other-info: {}, // there's other info here not updated frequently
files: {
log1-txt: {filename:"log1.txt",numlines:233,filesize:19928},
log2-txt: {filename:"log2.txt",numlines:2,filesize:843}
}
}
或本
{
t_id:1220,
some-other-info: {},
files:[
{filename:"log1.txt",numlines:233,filesize:19928},
{filename:"log2.txt",numlines:2,filesize:843}
]
}
我想提出一個假設,即處理文檔,尤其是當它涉及到更新,更容易對付的對象,因爲對象的位置可以由名字確定;不像數組,我必須查看每個對象的值,直到找到匹配。因爲對象鍵將有句點,所以我需要轉換(或刪除)句點才能創建一個有效的鍵(fi.le.log
至filelog
或fi-le-log
)。 我並不擔心文件可能出現重複名稱(例如fi.le.log
和fi-le.log
),所以我更願意使用對象,因爲文件數量相對較少,但更新頻繁。
或者,它會得到更好的最佳寫入性能分別收集來處理此數據...
{
"_id": ObjectId('56d9f1202d777d9806000003'),"t_id": "1220","filename": "log1.txt","filesize": 1843,"numlines": 554
},
{
"_id": ObjectId('56d9f1392d777d9806000004'),"t_id": "1220","filename": "log2.txt","filesize": 5231,"numlines": 3027
}
一個快速測試值得大量猜測...... – dandavis
't_id'表示什麼? – AxxE
它的一個模糊的id,意義在於有多個't_id's並且每個都有多個'file_name's(1:m) – Daniel