2014-01-19 21 views
1

我可能有一個實體,可能是成千上萬的字段,並且想知道它是否會造成任何問題(什麼都不會被編入索引):如果是一個實體有限的柱子數量?

  • 將查詢比較慢的列數的增加?
  • 理論上可以有無限數量的列嗎?
+0

還有很多其他的事情需要考慮,比如每個屬性都有一定數量的自動索引。由於您可能有1000個索引正在更新,寫入操作將非常昂貴。你真的需要1000個屬性(記住它們不是列),或者你需要許多命名屬性(可以嵌入到結構化屬性中,實體大小限制爲1MB,這包括屬性的名稱以及它們的值。此外,將您所需的所有屬性爲每個實體或會在Expando風格實體的工作? –

+0

很好的想法是有幾分地圖來算一些東西,每一天。問題是,使用物化爲一個包裝應用程序引擎,它會創建一個新的列可能每天。還有什麼是自動索引?我不熟悉,並想知道更多 – PerrierCitror

+0

哦,你使用Java,所以我不能幫助具體。每個屬性的noindex = True,那麼將會爲該屬性創建一個索引,除非它是TextProperty或BlobProperty。你需要查詢/過濾/排序這些屬性嗎?如果不是爲什麼不存儲p roperties在一個blob。 –

回答

1

雖然我從未有過數千列的瞭解的速度和性能,因爲它從數據查看儀表盤上的列數應該是無限的樣子:

number of columns

0

考慮到GAE數據存儲本質上是一個非常大的關鍵值存儲,直到屬性級別,原則上允許不限數量的屬性。就像其他人已經說過的那樣,由於空間原因,並非所有人都在一起創作。

數據存儲是無模式的,但許多庫,如JDO,JPA和Objectify旨在通過引入一些自己的模式來「修復」這種「缺陷」。這對你的情況沒有幫助。

我建議你跳過這些庫,並根據this example直接調用Datastore低級API。如果儘可能經常地將setProperty調用更改爲setUnindexedProperty,則可以避免索引開銷。請記住,要測試getProperty調用的空返回,以獲取某些記錄中可能不存在的屬性。

相關問題