Исходя из реляционных баз данных, как я уверен, многие другие, я ищу некоторые твердые рекомендации по настройке/разработке моего хранилища данных в Google App Engine. Существуют ли какие-либо хорошие правила для людей с ограниченными возможностями для создания таких хранилищ данных без схемы? Я понимаю некоторые основы, такие как денормализация, так как вы не можете присоединяться, но мне было интересно, какие другие рекомендации были у людей.
Конкретный простой пример: я работаю над проблемами хранения запросов и их результатов. Например, у меня есть следующие две модели, определенные в приложении Google App Engine с помощью Python:
class Search(db.Model):
who = db.StringProperty()
what = db.StringProperty()
where = db.StringProperty()
createDate = db.DateTimeProperty(auto_now_add=True)
class SearchResult(db.Model):
title = db.StringProperty()
content = db.StringProperty()
who = db.StringProperty()
what = db.StringProperty()
where = db.StringProperty()
createDate = db.DateTimeProperty(auto_now_add=True)
Я дублирую кучу свойств между моделями ради денормализации, так как я не могу присоединиться к Search
и SearchResult
вместе. Имеет ли это смысл? Или я должен хранить идентификатор поиска в модели SearchResult
и эффективно "присоединяться" к двум моделям в коде, когда я их извлекаю из хранилища данных? Пожалуйста, имейте в виду, что это простой пример. Обе модели будут иметь гораздо больше свойств и способ, которым я сейчас подхожу к этому, я бы поместил любое свойство, которое я поместил в модель поиска в модель SearchResult
, а также.