Хорошо, я посмотрел видео и прочитал статьи в документации App Engine (включая Использование хранилища данных с высокой репликацией ). Однако я до сих пор полностью запутался в его практическом использовании. Я понимаю преимущества (из видео), и они звучат великолепно. Но мне не хватает нескольких практических примеров. В Интернете есть много примеров master / slave, но очень мало иллюстрирующих (с надлежащей документацией) хранилище данных с высокой репликацией. Пример кода гостевой книги, использованный в статье Использование хранилища данных с высокой репликацией , иллюстрирует ключ предка, добавляя новую функциональность, которой нет в предыдущем примере кода гостевой книги (кажется, вы можете изменить гостевую книгу). Это только добавляет путаницы.
Я часто использую djangoforms в GAE, и мне было интересно, может ли кто-нибудь помочь мне перевести все эти запросы в запросы, совместимые с хранилищем данных с высокой репликацией (давайте на минутку забудем о том, что не все запросы обязательно должны быть запросы с высокой репликацией, совместимые с хранилищем данных, и сосредоточимся на самом примере.
ОБНОВЛЕНИЕ: с запросами, совместимыми с хранилищем данных с высокой репликацией, я имею в виду запросы, которые всегда возвращают последние данные, а не потенциальные устаревшие данные. Использование групп сущностей, кажется, является подходящим способом, но, как уже упоминалось ранее, у меня не так много практических примеров кода того, как это сделать, поэтому я ищу именно это!
Итак запросы в этой статье :
Основной повторяющийся запрос в этой статье:
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')
Однако «Гостевая книга» не существует в модели , так как вы можете использовать «db.Key.from_path» для этого и почему это будет работать? Изменяет ли это способ хранения данных в хранилище данных, которое мне необходимо учитывать при извлечении данных (например, добавляет ли оно еще одно поле, которое я должен исключить из отображения при использовании djangoforms)?
Как я уже говорил, меня это сильно смущает, и ваша помощь очень ценится!