我在設計數據存儲模型並試圖在思考查詢過濾器如何工作時決定最佳方法。Google App Engine上的動態屬性與固定屬性查詢速度
最好如果我只寫出兩個例子。第一個例子是,如果我有一個固定的「性別」屬性,只有一個字符串可以設置爲「男性」或「女性」。
class Person(db.Model):
name = db.StringProperty()
gender = db.StringProperty()
p1 = Person(name="Steve", gender="male")
p2 = Person(name="Jane", gender="female")
p1.put()
p2.put()
males = db.GqlQuery("SELECT * FROM Person WHERE gender = :1", "male")
第二個例子是,如果該人實體是Expando模型和I動態地設置一個「is_male」或「is_female」動態屬性。
class Person(db.Expando):
name = db.StringProperty()
p1 = Person(name="Steve")
p1.is_male = True
p1.put()
p2 = Person(name="Jane")
p2.is_female = True
p2.put()
males = db.GqlQuery("SELECT * FROM Person WHERE is_male = :1", True)
現在讓我們說,我們收集數百萬條記錄,我們希望做一個查詢,這兩種方法中的一種以上的速度會更快生產谷歌App Engine上運行的Python 2.7?
你是什麼意思動態屬性?您的第二個代碼片段看起來像沒有別的名稱保存到數據存儲區,那麼爲什麼您認爲您將能夠在該屬性上進行查詢? – aschmid00
因爲它的擴展模型:https://developers.google.com/appengine/docs/python/datastore/datamodeling#The_Expando_Class – adam
問題中的代碼沒有說:)我建議你更新問題以反映'一點細節 – aschmid00