Desde que GAE fue al modelo de fijación de precios al inicio de la semana pasada, he estado luchando por exceder mi cuota de operaciones de lectura y escritura en el almacén de datos. No estoy seguro de si Google cuenta todas las actualizaciones para un escritor como una sola escritura o si cada actualización de la columna se cuenta como una escritura independiente.¿Qué clasifica Google como operación de escritura del almacén de datos en Google App Engine?
Si esto último es cierto que podría conseguir alrededor de esto por tener una función de actualización para actualizar las 6 columnas en los parámetros o haga yo también cobran por 6 actualizaciones?
Aquí está mi código existente, que se utiliza para actualizar la puntuación de un jugador (calificación) y los demás detalles al mismo tiempo. En este momento, siempre llevo el nombre, el correo electrónico, la calificación, el won, el juego y los logros con los valores del cliente. Una solución puede ser enviarlos solo desde el lado del cliente cuando hayan cambiado de valor.
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);
}
}
He visto la documentación de la aplicación Google y parece que una operación de escritura es 1 Escritura + 4 escrituras por valor de propiedad indexada modificada + 2 escrituras por valor de índice compuesto modificado. Dado que acabo de poner un nuevo índice compuesto en la calificación, achievementsCount (un recuento desnormalizado de los logros establecidos) esta semana, supongo que es la causa del aumento repentino en "escrituras". Si esto significa que me cobrarán 1 + 4 + 2 por cada calificación de write on y achievementsCount o 1 + 4 + 4 + (2?) No estoy seguro. –
Llamar a set() en pocas propiedades es poco probable que ayude: el Datastore lee y escribe entidades enteras, no columnas individuales. Si tiene suerte, el almacén de datos puede evitar realizar las actualizaciones de índice innecesarias (la manera más fácil de hacerlo es ejecutar algunas pruebas). Sin embargo, la solución más simple es hacer que algunas propiedades no estén indexadas, si es que no necesita consultarlas. –