Используйте service: service_name
в вашем файле app.yaml
.
Благодаря вам обоим для Ваших предложений. Я реализовал (первое повторение) следующим образом. Не уверенный, если это - лучший подход, но это работает.
Класс A = Статьи. Имеет StringListProperty, который может быть запрошен на, он - элементы списка
Класс B = Теги. Один объект на тег, также проводит рабочий подсчет общего количества статей с помощью каждого тега.
Модификации данных к A сопровождаются работами по техническому обслуживанию B. Думая, что предварительно вычисляемые количества являются хорошим подходом в тяжелой чтением среде.
предварительно вычисляемые количества не только практичны, но также и необходимы, потому что количество () функция возвращает максимум 1 000. если конкуренция записи могла бы быть проблемой, удостоверьтесь, что проверили пример счетчика черепка.
http://code.google.com/appengine/articles/sharding_counters.html
Many-many звучит разумным. Возможно, необходимо попробовать его сначала, чтобы видеть, на самом деле ли это дорого.
Хорошая вещь о G.A.E. состоит в том, что он скажет Вам при использовании слишком многих циклов. Профилирование бесплатно!
Один возможный путь с Expando
, где Вы добавили бы тег как:
setattr(entity, 'tag_'+tag_name, True)
Затем Вы могли запросить все объекты с тегом как:
def get_all_with_tag(model_class, tag):
return model_class.all().filter('tag_%s =' % tag, True)
Конечно, необходимо очистить теги, чтобы быть надлежащими идентификаторами Python. Я не попробовал это, таким образом, я не уверен, является ли это действительно хорошее решение.