С тех пор как GAE перешел к модели ценообразования в начале прошлой недели, я боролся с превышением квоты на операции чтения и записи в Datastore. Я не уверен, учитывает ли Google все обновления для одной записи как одну запись или каждое обновление столбца считается отдельной записью.
Если последнее верно, могу ли я обойти это, имея одну функцию обновления для обновления 6 столбцов в параметрах, или мне также придется платить за 6 обновлений?
Вот мой существующий код, используемый для обновления рейтинга игрока (рейтинга) и других деталей одновременно. На данный момент я всегда заполняю имя, адрес электронной почты, рейтинг, выиграл, играл и достижения с ценностями от клиента. Одним из решений может быть отправка их только со стороны клиента, когда они изменили значение.
Long key = Long.valueOf(updateIdStr);
System.out.println("Key to update: " + key);
PlayerPersistentData ppd =null;
try {
ppd = pm.getObjectById(
PlayerPersistentData.class, key);
// for all of these, make sure we actually got a value via
// the query variables
if (name != null && name.length() > 0) {
ppd.setName(name);
}
if (ratingStr != null && ratingStr.length() > 0) {
ppd.setRating(rating);
}
if (playedStr != null && playedStr.length() > 0) {
ppd.setPlayed(played);
}
if (wonStr != null && wonStr.length() > 0) {
ppd.setWon(won);
}
if (encryptedAchievements != null
&& encryptedAchievements.length() > 0) {
ppd.setAchievements(achievements);
}
if (email != null & email.length() > 0) {
ppd.setEmail(email);
}
resp.getWriter().print(key);
} catch (JDOObjectNotFoundException e) {
resp.getWriter().print(-1);
}
}