2011-02-23 71 views
3

我認爲沒有好的方法可以這樣做,但是如果必須的話,您會如何在Appengine的數據存儲上實現設置操作?在Appengine數據存儲中設置操作

例如,如果給定兩個整數集合,您如何將它們存儲在數據存儲中以獲得相交和除(A中所有不在B中的項目)操作的良好性能?

+0

你的用例究竟是什麼?我已經給出了一些通用的答案,但也許有更好的解決方案,無論你正在嘗試做什麼。 – 2011-02-23 20:02:47

+0

這是一個理論問題,只是我開始思考並想聽到別人的意見。 – r0u1i 2011-02-24 04:27:40

回答

4

數據存儲區API中沒有任何內置集操作。我看你有兩個選擇:

  1. 對於短小套(幾百個項目)你可能會做純鍵查詢兩個集合A和集合B中脫身,並在應用程序代碼做交集。 「smallish」的確切定義將取決於您的應用程序。

  2. 對於大集合(百萬個物品)如果您事先知道您需要的交點,您可以在每次插入新記錄時計算它們。例如,假設你有兩個集合A和B,並且你知道你最終想要查詢(A相交B)。每當你插入一個A時,檢查它是否已經在B中。如果是,就在某處記錄這個事實(在單獨的實體類型中,或者在A或B本身上作爲布爾屬性)。當然,你也需要爲你的B做這個。

使用選項1,您可以有很多不同的設置,但受到每個設置有多大的限制。

使用選項2,您可以擁有數百萬成員的集合,但是如果您有多個集合,嘗試定義集合和運算符的所有可能排列組合將變得笨重。