與同事進行架構討論後,我們需要爲此找到答案。給定一組百萬個數據點,看起來像:爲讀取速度進行優化時的索引與規範化
data =
[{
"v" : 1.44,
"tags" : {
"account" : {
"v" : "1055",
"name" : "Circle K"
}
"region" : "IL-East"
}
}, {
"v" : 2.25,
"tags" : {
"account" : {
"v" : "1055",
"name" : "Circle K"
}
"region" : "IL-West"
}
}]
而且,我們需要在標籤集合中的字段查詢(例如在account.name ==「圓K」),會不會有任何速度效益帳戶領域標準化這樣:
accounts =
[{
_id : 507f1f77bcf86cd799439011,
v: "1055",
name : "Circle K"
}]
data =
[{
"v" : 1.44,
"tags" : {
"account" : 507f1f77bcf86cd799439011
"region" : "IL-East"
}
}, {
"v" : 2.25,
"tags" : {
"account" : 507f1f77bcf86cd799439011
"region" : "IL-West"
}
}]
我懷疑我將不得不建立2分貝的,這和剛纔看到了什麼速度樣子。問題是,在查詢BSON ID和字符串時,mongo會更好嗎?有問題的數據庫大約是1:10寫與讀。
鑑於B樹存儲密鑰的方式,我不會懷疑兩者之間存在重要差異。 – WiredPrairie
@WiredPrairie我也懷疑;我們需要最大限度地提高性能,所以我將不得不同時測試 - 實際上我認爲規格化版本可能會比較慢,因爲它是兩個查詢,而不是一個 – jcollum
肯定,執行兩個查詢會稍微慢一些。我只在你的'_id'問題上發表評論。 – WiredPrairie