2013-11-25 39 views

回答

4

@marcadian有一個很好的答案。 ListProperty沒有特別的限制。

你需要看數據存儲限制的實體,但: https://developers.google.com/appengine/docs/python/datastore/#Python_Quotas_and_limits

兩個最明顯的限制是最大1MB大小的實體和20000個索引條目。

根據列表中的內容,它可能會有所不同。您可以在1MB的限制內容納130k 8字節的長度,但如果它們被編入索引,則由於索引限制,您將在20k條目處遇到障礙。

最糟糕的是,這些限制是在整個實體的大小上,所以如果你在一個實體中有兩個列表,一個列表的大小可能會受到另一個列表中的內容的限制。

+0

這是正確的 - 實體大小是有限的。更危險的是索引條目的限制,但不確定是否20 000個索引條目限制以簡單的方式工作 - 所以你可以有更多的條目,但索引值應該20000. – Chameleon

+0

我剛剛注意到,你說你使用這個字段作爲過濾器,因此您可以在達到實體大小限制之前達到索引入口限制。 – dragonx

+1

你是否認爲如果我僅索引這個字段並且將有更多的20 000種類型的值,它將會破壞索引約束? – Chameleon

1

30將罰款。

Guido的回答關於相關問題:https://stackoverflow.com/a/15418435/1279005 因此,最多100個重複的值將被罰款。

通過使用NDB,我認爲重複屬性更容易理解。你應該試試。 如果您將它與Long或String屬性一起使用,則無關緊要 - 如果該屬性已建立索引,則可以通過該屬性進行過濾。

+0

我不使用nbd而不打算使用。 – Chameleon

3

我有一個20K字符串的列表(雖然沒有編入索引)。我不認爲長度有限制,但每個實體大小都有限制。在索引多值屬性時要小心,它可能很昂貴。

+0

你的意思是寫入可能是昂貴的。 – Chameleon

+0

那麼基本上是有索引額外的開銷,如果不是必要的,總是設置索引=假 – marcadian

+0

我經常使用索引=假,並有一些工具來檢查哪些實體我有實體寫/讀的成本高。 – Chameleon

相關問題