如何在Google App Engine中创建复合字符串属性?

时间:2011-12-30 16:04:09

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

我正在构建一个应用程序,其中有一些事件存储在数据存储区中,该模型(简化)如下:

class Event(db.Model)
 plan = db.ReferenceProperty(Plan)
 points = db.FloatProperty()
 date = db.DateTimeProperty()
 cumelativePoints = db.FloatProperty()

其中Plan是将事件分组给用户的父实例。我的挑战是(a)我需要一个一致性排序,因为事件之前事件的得分总和存储在事件中(b)多个事件可以同时发生(c)日期可以改变(即,事件的顺序改变)

Building Scalable Web Applications with Google App Engine(幻灯片36)中,建议使用复合字符串属性。我的问题是如何实施?我有两个建议:

  1. 在模型中创建一个额外的字符串属性(称之为索引)和计划中的计数器,因此新属性(在psudo中)self.index = self.date.tostring+"|"+self.plan.counter?当按索引查询顺序和更新日期更新索引时。

  2. 在模型中创建增量计数器(例如self.i),排序时,首先按计数器(i)排序,然后按日期排序;总共.order("i").order("date")

  3. 哪个最好还是有另一个更好的解决方案?

    非常感谢答案!对不起草率的记谱法,糟糕的英语和项目的所有额外细节!

0 个答案:

没有答案