Hi all!
I'm looking for a lesson from 'pricing oriented programming'. My service
has a REST-style endpoint that I use to replicate/export/import data.
Surprisingly export consumes ~10x more Datastore Small Operations than
Datastore Read Operations. Thus I'm almost running out of free quota. There
are ~2500 entities, the export does 10x count()s and reads all the data as
follows:
public List getPage(Class clazz, int from, int to, int pageSize) {
PersistenceManager pm = getPm();
try {
Query queryStatement = pm.newQuery(clazz);
if(from==0) {
queryStatement.setRange(from, to);
} else {
if(from>0) {
Cursor cursor = Cursor.fromWebSafeString(getTablePageCursors.get(clazz));
Map<String, Object> extensionMap = new HashMap<String,
Object>();
extensionMap.put(JDOCursorHelper.CURSOR_EXTENSION, cursor);
queryStatement.setExtensions(extensionMap);
queryStatement.setRange(0, pageSize);
}
}
List<?> queryResultList = (List<?>)queryStatement.execute();
Cursor cursor = JDOCursorHelper.getCursor(queryResultList);
getTablePageCursors.put(clazz, cursor.toWebSafeString());
...
} finally {
pm.close();
}
return result;
}
My question is what can I do to optimize the code. I don't think that
count() is a problem. Can it be structure of entities exported? It seems
that certain types consumer more small operations than others. Can it be
caused by cursors?
*Any suggestion or idea will be highly appreciated! *
--
You received this message because you are subscribed to the Google Groups
"Google App Engine" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/google-appengine/-/FZdIS-LQ-bEJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-appengine?hl=en.