0

我意識到NDB/Google Datastore不支持位數據類型和支持操作符。在NDB中實現位數據/操作符的設計模式

但有沒有人有任何建議的解決方法。

我的數據是一個分類樹,用戶可以選擇多個類別。理想的實現應該是將其作爲單個數字進行存儲,並按位和操作來查找匹配。

此外,有沒有人知道NDB /數據存儲路線圖?提前致謝。

+1

請不要大叫。謝謝。 – bernie 2013-03-12 17:25:45

+0

這種過早優化的氣味。 – jterrace 2013-03-12 17:29:27

回答

1

如果你想要一些按位支持,bitstring是一個很好的庫(版本2.2作品,與patch)。但是,您將無法根據各個位進行查詢,只能查看整個位串。

如果每個用戶可能選擇的類別數量僅爲少數,請考慮使用重複屬性,併爲每個類別選擇一個列表條目。這允許輕鬆查詢,並且不會像您想象的那樣佔用您的配額。

請記住,大部分成本來自讀寫。只要您限制每次獲取的實體數量,查詢便宜;如果你有100或100萬個這樣的實體,這並不重要。

當涉及到存儲數據時,GAE需要一些開箱即用的思想(這裏,非規範化有時是件好事)。我建議從頭至尾閱讀數據存儲文檔,以便深入瞭解查詢和索引的工作方式。還有一個Google I/O演示文稿,介紹它如何在隱藏條件下工作。

正如jterrace暗示的那樣,有時您不得不懷疑是否花費在開發時間的最佳解決方案所花費的時間超過效率較低但更容易的解決方案的額外成本。

+0

在一個平臺上看起來最佳解決方案可能不是另一種情況 - 在appengine上的點位域和可索引性/可搜索性的情況;-) – 2013-03-13 01:31:48

+0

酷感謝mil!重複的財產 - 我不知道這個!涼!這應該工作!關於開箱即用的思考..非常真實...我一直在做規範化的SQL設計的年齡.. GAE確實需要一些重新佈線在我的一端..感謝mil! – 2013-03-13 02:11:19

+0

只要注意重複的屬性。如果您的查詢涉及多個重複屬性,則可以運行到爆炸索引(它們聽起來很嚇人)。 [閱讀全文](https://developers.google.com/appengine/docs/python/datastore/indexes#Index_Limits) – jdiaz5513 2013-03-13 02:33:03