【问题标题】:Datastore modeling hierarchy for efficient queries用于高效查询的数据存储建模层次结构
【发布时间】:2012-10-15 02:40:42
【问题描述】:

我对数据存储层次结构以及如何为我的应用建模感到非常困惑。

我的应用会有用户。

数据将具有这种特定的层次结构:

用户将拥有一场锦标赛。

比赛(属性:地理数据)

在锦标赛中,用户将添加一个或多个团队。

在 Teams 中,用户每天都会添加信息。

例如:

Team: Hawks  
Concept: Equipment  
String: Buy t-shirts  
Number: 11  
Number (price) : 15

这样的事情有意义吗?

class User(db.Model):
    name = db.StringProperty(required = True)
    pass = db.StringProperty(required = True)
    email= db.StringProperty()

class Tournament(db.Model):
    name  = db.StringProperty(required = True)
    place = db.GeoPt()
    owner = db.ReferenceProperty(User) 

class Teams(db.Model):
    belongs_to_tournament = db.ReferenceProperty(Tournament)
    name = db.StringProperty(required = True)
    players = db.IntegerProperty(required = True)

class DailyInfo(db.Model):
    created = db.DateTimeProperty(auto_now_add = True)
    concept = db.StringListProperty()
    info    = db.StringProperty()
    number  = db.IntegerProperty()
    price   = db.IntegerProperty()
    team    = db.ReferenceProperty(Teams)

这个模型做得对还是我也应该添加祖先路径?我可以对此进行查询以显示每个用户的相应信息吗?

【问题讨论】:

    标签: python google-app-engine google-cloud-datastore


    【解决方案1】:

    在你的模型中你没有定义indexed=False,你需要在每个数据库的每个属性上建立索引吗?

    喜欢这里,

    class Tournament(db.Model):
       name = db.StringProperty(required = True)
       place = db.GeoPt()
    
    class Teams(db.Model):
       belongs_to_tournament = db.ReferenceProperty(Tournament, collection_name =  'tournament_teams')
       name = db.StringProperty(required = True)
       players = db.IntegerProperty(required = True)
       price = db.FloatProperty(indexed=False)
    

    【讨论】:

    • 谢谢,我会更新我的代码。我终于得到建议,我应该使用参考属性以外的父母。
    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 2017-03-16
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多