[appengine-java] Re: Delete Lots Of Data

2011-09-12 Thread Cyrille Vincey
you MUST have a look at 
http://ikaisays.com/2010/07/09/using-the-java-mapper-framework-for-app-engine/
There's a special section at the end of the post delete all entities
of a given kind.
You can delete 35M entities in a few minutes using mapreduce.

-- 
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.



[appengine-java] Re: Delete Lots Of Data

2011-09-11 Thread Nichole

Can use low-level datastore and iterate over batches:

binSize = 1000;// or smaller if needed  30 sec timeout

DatastoreService datastore =
DatastoreServiceFactory.getDatastoreService();

Keys only select and delete:
javax.jdo.Query q = pm.newQuery(select key from  +
entityKind.getClass().getName());
q.setRange(0, binSize);
(ListKey) q.execute();
ds.delete(keys);

Or slower entity-by-entity delete:
   FetchOptions fetchOptions =
FetchOptions.Builder.withLimit(binSize);
   com.google.appengine.api.datastore.Query q = new
com.google.appengine.api.datastore.Query(entityKind);
   PreparedQuery pq = datastore.prepare(q);
   Listcom.google.appengine.api.datastore.Entity results =
pq.asList(fetchOptions);
   for (com.google.appengine.api.datastore.Entity result : results) {
   com.google.appengine.api.datastore.Key key = result.getKey();
   datastore.delete(key);
   }



On Sep 9, 9:55 pm, Didier Durand durand.did...@gmail.com wrote:
 If you don't want to introduce MapReduce solely for this purpose, you
 can write a queued task that loops through the data to delete it 
 and that recreates a new instance of itself just before time limit (10
 min) to continue the deletion.

 regards

 didier

 On Sep 9, 8:37 pm, Marcelo Liberato mliber...@gmail.com wrote:







  You may use MapReduce programmatically or just use Datastore admin (which
  uses mapreduce behind the scenes).

  On Thu, Sep 8, 2011 at 12:30 PM, blitzer brian.blit...@gmail.com wrote:
   So I have ~ 35 million rows of data. I have seen that I need to get the
   data into a collection and then call deletePersistAll(). Is that the only
   way?

   --
   You received this message because you are subscribed to the Google Groups
   Google App Engine for Java group.
   To view this discussion on the web visit
  https://groups.google.com/d/msg/google-appengine-java/-/gg8buxlS2JUJ.
   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.

-- 
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.



[appengine-java] Re: Delete Lots Of Data

2011-09-09 Thread Didier Durand
If you don't want to introduce MapReduce solely for this purpose, you
can write a queued task that loops through the data to delete it 
and that recreates a new instance of itself just before time limit (10
min) to continue the deletion.

regards

didier

On Sep 9, 8:37 pm, Marcelo Liberato mliber...@gmail.com wrote:
 You may use MapReduce programmatically or just use Datastore admin (which
 uses mapreduce behind the scenes).

 On Thu, Sep 8, 2011 at 12:30 PM, blitzer brian.blit...@gmail.com wrote:
  So I have ~ 35 million rows of data. I have seen that I need to get the
  data into a collection and then call deletePersistAll(). Is that the only
  way?

  --
  You received this message because you are subscribed to the Google Groups
  Google App Engine for Java group.
  To view this discussion on the web visit
 https://groups.google.com/d/msg/google-appengine-java/-/gg8buxlS2JUJ.
  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.



-- 
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.