2017-01-13 27 views
0

我計劃的數據模型將包含一些屬性「字段」,包括「category/tags」屬性將是很多標籤的列表/數組。在Google數據存儲區中僅對屬性數組中的單個值進行索引(而不是對這些值的每個組合進行索引)

我打算一次查詢一個類別。我沒有興趣索引哪些實體具有類別組合,只是個別類別。

我不是簡單地引用不索引一個特定的屬性。

獎勵題:

看來谷歌的數據存儲不喜歡「單調遞增」的屬性值(即時間戳),因爲它們可能使熱點在機器上同時形成索引。 那麼只需要存儲當前的日曆日期幫助?我可以看到,甚至更多的「熱點」,因爲每個實體24小時將具有該屬性相同的指數值,是否有某種方式來存儲有關每個實體記錄時間的一些數據?

回答

0

事實上,正如上面的回覆中所提到的,人們應該不會遇到創建內建索引的問題。不過,具有數組值的屬性可以在surprising ways中運行。對於多個過濾器,由過濾器定義的所有條件必須至少滿足一個數組的單個值,以便與查詢匹配。這不適用於平等過濾器的情況。

排序順序也不尋常:索引中顯示的第一個值確定實體的排序順序。

0

我不認爲一個數組屬性的屬性索引(又名內置索引)創建索引與各種值組合。我相信數組中的每個值都被編入索引。例如,如果您有帶有兩個標籤的Book,則索引將爲每個標籤設置兩個條目。使用三個標籤添加另一本書會爲標籤索引添加3個條目。此索引允許您基於單個標籤以及多個標籤查詢圖書。

如果您創建包含多個數組類型(例如作者和書籍的標籤)的複合索引,並且所有/大多數書籍都有多個作者和多個標籤,則會提到您提到的「數值組合」。

你不應該在你的分類/標籤上創建一個內建索引。

關於索引實體創建/修改時間戳的其他問題,我確實看到Best Practices說避免索引這樣一個屬性。

不要索引屬性與單調增加的值(如一個 NOW()時間戳)。保持這樣的索引可能導致熱點 這種影響雲存儲的延遲的應用具有很高的讀寫 和寫入速率

不知道該選擇將是什麼。如果您不必查詢時間戳上的時間戳/排序,則可以通過從索引中排除屬性來很好地存儲時間戳。

+0

由於我創建了一些簡單的實體,並且爲這些實體報告的索引數量超過了您所描述的數量,所以這看起來似乎不適用於Google數據存儲的索引。 。除非我誤解了某些東西。 – SAM

+0

此外,查詢「tag1」和「tag2」有效,但查詢「tag1」或「tag2」無效。這似乎使組合索引自動編入索引的想法變得可信。此外,這是我知道的唯一可以完全獨立於數據庫大小進行擴展的方法,而是可以根據結果大小進行擴展。 – SAM

+0

當你說「索引數量」時 - 你指的是什麼? OR數據存儲尚未本機支持OR查詢。 –

相關問題