App Engine team:

Thanks for introducing BlobstoreService. It looked like it was going
to solve a major impediment in an application I am prototyping, but I
hit the wall (again) with only being able to regurgitate blobs during
an http response, and not do anything useful with them in the cloud.

I am using BlobstoreService to upload and store serialized spatial
indexes. I want to be able to query them with point geometry, but once
they are in the store there is no way for me to fetch them again
within the context of my application. I can delete(key) in an
application context, and serve(key) them directly back to the browser,
but I cannot fetch them from the blobstore and operate on them, which
is exactly what I need to do in my app.

For a minute I was tricked into thinking that I could use the URL
Fetch API from within my app, since serve(key) pumps out the data in
response to a get call. But an internal URL Fetch is also limited to
1MB, and I receive the dreaded: "The response from url
http://localhost:8888/serve/blob?blob-key=2rdXcmNBIZz3_mDE8msbXg was
too large." (Of course, if I just hit that same URL in my browser, I
download the data just fine -- its just within a programmatic App
Engine context that I cannot fetch that URL.)

"All I want for Christmas is my two front teeth." In this case, the
teeth are either or both of the following hooks:

1) New URL Fetch API feature realizes that it is calling the
BlobstoreService, and lets data > 1MB pass through. Since
BlobstoreService is handling the response internally, add an extra
header that URL Fetch understands to lift the size limit restriction.
You could even restrict this to only allow URL Fetch of blobs in the
same App Engine application.

2) Expose a BlobstoreService.get(BlobKey key) method so applications
can fetch blobs after they are stored and do something useful with
them -- like geospatial operations on spatial index blobs, or opening
stored zip archives and processing contents with task queues. No
worries if people go blob crazy -- billing is turned on, and real
fancy querying needs to be done with basic datastore entities anyways.

Please consider one or both of these options. Option #2 sounds like a
no-brainer to me, because somewhere under the serve() hood you must be
fetching the blob by key already.

Stuart

--

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 [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-java?hl=en.


Reply via email to