我的app-engine数据模型定义为:
class Event(db.Model):
title = db.LinkProperty();
refresh_interval = db.IntegerProperty();
class EventSchedule(db.Model):
event = db.ReferenceProperty(Event) # referencing the event
refresh_date = db.DateTimeProperty(); # date & time of last successful refresh
我想根据以下标准获取所有EventSchedule项目:
event_schedule.refresh_date + event.refresh_interval >= now
在SQL-land中,它看起来像: DATE_ADD(event_schedule.refresh_date,event.refreshInterval)> = now()
这种连接操作对数据存储是否可行?
答案 0 :(得分:4)
GAE数据存储无法实现此连接操作,并且在普通SQL数据库上也非常低效(因为它需要扫描整个event_schedule表)。
您应该在next_refresh
个实体中存储DateTimeProperty
EventSchedule
,在创建实体时初始化为refresh_date + refresh_interval
,然后只测试next_refresh >= now