我在索引的多個文檔中存儲相同的tags: ['hello', 'world']
。冗餘數據的索引優化?
是否有意義使用外部映射:tags: { hello: 1, world: 2 }
在客戶端已解決,以減少磁盤上索引空間和標記大小?
實質上,客戶端壓縮與從靜態配置文件拉的映射。
我在索引的多個文檔中存儲相同的tags: ['hello', 'world']
。冗餘數據的索引優化?
是否有意義使用外部映射:tags: { hello: 1, world: 2 }
在客戶端已解決,以減少磁盤上索引空間和標記大小?
實質上,客戶端壓縮與從靜態配置文件拉的映射。
如果存儲空間是一個問題,那麼儘可能使用小字段名稱和值是一個優點。正如你猜測的那樣,這將減少存儲在磁盤上的數據量。假設您的客戶端可以長期處理映射(並且您可以處理映射的維護),我看不出任何缺點。
其實,我想知道,當多個字段包含相同的值時引用的數據類型,如引用指向軟件程序中的原始值的指針? – paulkon
如果我已經正確理解你的問題,是的。所有MongoDB BSON字段都存儲爲最低級別的不同類型的C++基元,即使在索引中也是如此。您可以在源代碼中查看低級BSON的實現https://github.com/mongodb/mongo/tree/master/src/mongo/bson – daveh
但是,這是否會轉化爲索引? http://stackoverflow.com/questions/22942338/do-indexes-utilize-pointers – paulkon
數字1和2是指什麼?該映射映射什麼?是標記索引鍵還是它的一部分? – innoSPG
他們不提及任何東西。我只是認爲在多個文檔中可能佔用較少的空間來存儲整數而不是可能的長字符串。 – paulkon
我也有一個類似的問題,決定如何存儲一對多參考關於最小化索引空間。如果「one」_id被存儲在多個具有「one」字段索引的文檔中,或者應該將「many」_id存儲在「one」中,從而在後一種情況下不需要索引,通過「one」_id查詢「許多」文檔。 – paulkon