Хорошо, я просмотрел video и прочитал статьи в документации к App Engine (включая Using the High Replication Datastore). Однако я все еще полностью запутался в практическом использовании этого. Я понимаю преимущества (из видео), и они звучат великолепно. Но мне не хватает нескольких практических примеров. В Интернете есть много примеров мастеров/подчиненных, но очень мало иллюстрирует (с надлежащей документацией) высокое хранилище данных репликации. Пример кода гостевой книги, который используется в статье Using the High Replication Datastore, иллюстрирует ключ-предок, добавляя новую функциональность, которая отсутствует в предыдущем примере кода гостевой книги (кажется, вы можете изменить гостевую книгу). Это просто добавляет к путанице.Как использовать хранилище данных с высокой репликацией
Я часто использую djangoforms на GAE, и мне было интересно, может ли кто-нибудь помочь мне перевести все эти запросы в запросы, совместимые с хранилищем данных с высокой репликацией (давайте забудем на мгновение обсуждение, что не все запросы обязательно должны быть связанными с высоким качеством данных репликации и сосредоточиться на самом примере).
ОБНОВЛЕНИЕ: с высокими ответами, совместимыми с хранилищем данных. Я имею в виду запросы, которые всегда возвращают самые последние данные, а не данные, хранящиеся в памяти. По-видимому, использование групп сущностей - это путь, но, как упоминалось ранее, у меня нет много практических примеров кода, как это сделать, так что это то, что я ищу!
Так the queries in this article являются:
Основной повторяющееся запрос в этой статье:
query = db.GqlQuery("SELECT * FROM Item ORDER BY name")
, который мы будем переводить:
query = Item.all().order('name') // datastore request
проверки формы происходит как:
data = ItemForm(data=self.request.POST)
if data.is_valid():
# Save the data, and redirect to the view page
entity = data.save(commit=False)
entity.added_by = users.get_current_user()
entity.put() // datastore request
и получить последнюю запись из хранилища данных для заполнения формы происходит как:
id = int(self.request.get('id'))
item = Item.get(db.Key.from_path('Item', id)) // datastore request
data = ItemForm(data=self.request.POST, instance=item)
Так что я/мы должны сделать, чтобы все эти запросы к хранилищу данных, совместимые с высоким датасторе репликации?
Последнее, что еще не ясно для меня. Используя ключи предка, влияет ли это на модель в хранилище данных. Например, в примере гостевой книги код они используют:
def guestbook_key(guestbook_name=None):
return db.Key.from_path('Guestbook', guestbook_name or 'default_guestbook')
Однако «Гостевая книга» не существует in the model, так как вы можете использовать «db.Key.from_path» на это и почему это будет работать? Означает ли это, как данные хранятся в хранилище данных, которые мне нужно учитывать при извлечении данных (например, добавляет ли другое поле, которое я должен исключать из показа при использовании djangoforms)?
Как я уже говорил, это меня сбивает с толку, и ваша помощь очень ценится!
Похоже, вы ищете волшебный рецепт, чтобы сделать хранилище данных HR, как M/S. Существует не один - вам просто нужно рассмотреть, какие последствия устаревших данных находятся в каждом из ваших запросов, и реструктурировать, если это проблема. –
Привет, Ник, спасибо, что нашли время ответить на мои вопросы. Я не пытаюсь получить волшебный рецепт для HR, чтобы действовать как M/S, хотя я думаю, что понимаю, почему вы так думаете. То, что я пытаюсь получить, это фрагменты кода, используя эти примеры, чтобы действительно иметь возможность кодировать запросы, совместимые с HR (примечание: без устаревших данных). В течение последних нескольких лет я работал с M/S, и теперь я хочу работать с HR, но я понятия не имею, как это сделать. Документация на веб-сайте GAE очень минимальна с фактическими примерами кода. Я выбираю пример djangoforms, потому что я многому использую и могу сосредоточиться на новом коде. – reallife
«Примечание: без устаревших данных» - в значительной степени предлагается способ превратить HR в MS. Вам не нужно менять свои запросы для работы с HR - вам просто нужно признать, что это в конечном итоге непротиворечиво, и переделывать вещи там, где это необходимо, чтобы учитывать это. –