Что Google классифицирует как операцию записи в хранилище данных в Google App Engine? - PullRequest
9 голосов
/ 13 ноября 2011

С тех пор как 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);
}
        }

Ответы [ 2 ]

17 голосов
/ 14 ноября 2011

Количество записей, за которые вы платите, зависит от вашей организации.Как правило, вы платите за 1 запись для объекта и 1 запись за каждое обновление индекса.Каждое индексированное свойство включается в восходящий и нисходящий индексы с одним свойством, поэтому на каждую проиндексированную сущность приходится минимум 2 записи плюс любые записи для составных (пользовательских) индексов.

При обновлении существующей сущностивы платите за различие старых и новых индексов.Поэтому, если вы измените одно свойство, с вас будет взиматься плата за запись объекта, плюс 4 записи за свойство (удаление старого значения и добавление нового) для встроенных индексов, а также для любых составных индексов.

2 голосов
/ 01 июля 2016

Обратите внимание на изменения в структуре цен, вступающие в силу 1 июля 2016 г. переход от per operation до per entity. Это меняет ваши взгляды на эффективную (* экономичную) запись в Datastore.

Новые цены в облачном хранилище данных, начиная с 1 июля 2016 года

1 июля 2016 г. цены в Google Cloud Datastore изменятся с начисление за операцию до начисления за единицу Это намного проще ценообразование означает, что использование полной мощности Google Cloud Datastore.

Например, в текущем ценообразовании, написание новой сущности с 1 Индексированное свойство будет стоить 4 операции записи. В новых ценах это будет стоить только 1 запись. Точно так же, удалив эту сущность в текущая цена будет стоить 4 операции записи, но при новой оценке удаление будет стоить только 1 объект.

...