Динамическая фильтрация данных ядра приложения из хранилища данных - PullRequest
2 голосов
/ 31 августа 2011

Моя модель данных движка приложения определяется как:

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-стране это будет выглядеть примерно так: DATE_ADD (event_schedule.refresh_date, event.refreshInterval)> = now ()

Возможна ли такая операция соединения с хранилищем данных?

1 Ответ

4 голосов
/ 31 августа 2011

Эта операция соединения невозможна с хранилищем данных GAE, и она также крайне неэффективна в обычных базах данных SQL (поскольку требует сканирования всей таблицы event_schedule).

Вместо этого вы должны хранить next_refresh DateTimeProperty в ваших EventSchedule сущностях, инициализированных как refresh_date + refresh_interval при создании сущности, и просто проверить на next_refresh >= now.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...