我有一個大表,其中列USER_ID,user_feature_1,user_feature_2,...的最佳查詢的最佳方式,user_feature_n什麼是存儲面向列的表MongoDB中的數據
所以每一行對應用戶和他或她的特徵。
我通過將每個列的值作爲一個數組存儲在MongoDB中來存儲此表。
{
'name': 'user_feature_1',
'values': [
15,
10,
...
]
}
我使用流星從MongoDB中提取數據,並存儲這種方式有利於對圖形繪製整個列值的快速和容易檢索。
但是,這種存儲方式有一個主要缺點;我無法存儲大於16mb的數組。
有幾個可能的解決方案,但其中非似乎不夠好:
商店使用GridFS的每一列的值。我不確定流星是否支持gridFS,並且它不支持切分數據,也就是說,我可能需要獲得列的前1000個值。
以面向行的格式存儲表。例如。
{ 'USER_ID':1, 'user_feature_1':10, 'user_feature_2':0.9,
.... 'user_feature_n':42 }
但我認爲這種存儲數據的方式對於查詢特徵列的值是低效的
或者MongoDB根本就不適合,sql是要走的路嗎?但流星不支持SQL
更新1: 我發現這個有趣的文章,其在MongoDB中談到陣列是低效的。 https://www.mongosoup.de/blog-entry/Storing-Large-Lists-In-MongoDB.html
以下的說明是從http://bsonspec.org/spec.html
陣列 - 用於陣列中的文件是與用於鍵的整數值,從0開始並依次繼續正常的BSON文檔。例如,數組['red','blue']將被編碼爲文檔{'0':'red','1':'blue'}。鍵必須按升序編號順序。
這意味着我們可以存儲最多百萬值的文檔中,如果值和鍵是浮動型的(16MB/128位)
「看起來不錯」,「我認爲」,...表現不是感情或意見,而是關於基準和配置文件。你的在哪裏? –