2010-08-16 147 views
0

這是一般的App Engine的數據存儲索引的問題。數據存儲自動構建可用於簡單單一屬性查詢(不涉及組合鍵的查詢)的索引。App Engine的 - 數據存儲 - 索引

是否在產生該索引的開銷上的實體的屬性的基礎數據類型而變化?

基本上我的問題可以歸結爲:

def Person(db.Model): 
    name = db.StringProperty() 
    rollnumber = db.IntegerProperty() 

相比的當在索引開銷相對於財產rollnumber較小?

回答

4

需要索引的空間中的值是由:

  • 值本身的大小,
  • 如果它是可變長度的,像一個字符串,任何地方從1到3個字節來存儲長度價值
  • 名稱的大小(例如,「rollnumber」),再加上,再次,幾個字節來存儲長度
  • 大小的實體的鍵
  • 幾個額外字節的開銷

這裏唯一令人驚訝的事情應該是名稱與每個索引屬性一起存儲。這是因爲沒有靜態定義的列名 - 沒有模式 - 在數據存儲區,因此有必要將其存儲與每一個索引值。

+0

有沒有在查詢方面,即它的查詢性能取決於屬性的數據類型有什麼區別?從你的答案中,我會想象不到 - 但我只是想確定。 – Rahul 2010-08-16 21:42:46

+0

沒有,不應該有一個顯著差異對不同的數據類型的過濾,除非你在談論篩選上一個很長的字符串,例如。 – 2010-08-17 05:33:12