Many writes to the same object will lead to db failures. You really should consider sharding: http://code.google.com/appengine/articles/sharding_counters.html
On Sep 26, 12:41 am, Peter Dev <dev133...@gmail.com> wrote: > We are developing an application, where users can vote for many > objects. > (for example, voting the best music video of the week) > > - This means, we have millions of possible objects to vote for, and > millions of users > > To our best knowledge, after taking in consideration different > options, the best (or the only) voting system is: Memcache+Bulk DB > write in DB > - If number of objects in Memcache will achieve a specified limit (for > example 3000) then write in DB. > > The writing speed into DB is about 100/sec. This also means, if we > would set the above mentioned 3000 objects, the writing would last for > 30 sec... > > The problem; during save in DB, voting must be blocked. In other > words, if from many millions of objects, there are 3000 achieved voted > objects, we need to write it into DB and it can happen too many times, > and blocking the whole voting mechanism. > > If we do not block the voting whilst writing in DB, the result could > be wrong number of votes from cache (see Workflow: step 3). > > Workflow: > > 1. vote received > 2. find object in memcache > 3. if not found in memcache get from DB and put it in > 4. increment the number of votes of the object in memcache > 5. check object number in memcache > 6. if necessary, save in DB and empty memcache > ... -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.