In the first part I’ve left-off with some good news: successful deployment in the local GAE container. In this second part I’ll talk about the following:
- – Loading data and browsing
- – Table indexing
- – Limitations of datastore queries
- – More datastore limitations and JPA issues
- – Deployment
- – Performance
- – Production monitoring
- – Usage and quotas
- – Other limitations
- – Final thoughts
Loading data and browsing
After finishing-off the first successful deployment, next on the agenda was testing out the persistence tier but for this I needed some data to work with in the GAE datastore.
Along with the local container Google makes available a local datastore but so far the only way to populate the datastore is described here and it uses python. Furthermore, currently there is one documented way to browse the local datastore using the local development console but this again requires the python environment. There’s a hint from Google though that there will be a data viewer for the Java SDK. In the mean time I voted up the feature request.
Back to bulk loading, after voting on the feature request to have a bulk uploader, I decided not to use the python solution but to handcraft a loader that will fill-in two tables: COUNTRY and COUNTRY_STATE (for federated countries like US and CAN). Since there’s no way to schedule worker threads (but is on it’s way) the only mechanism to trigger the data loading is via URLs. I’m using Spring 3.0 and so it wasn’t hard to create a new @Controller, some methods to handle data loading then map them to URLs:
@Controller public class BulkLoadController { @RequestMapping("/importCountries") public ModelAndView importCountries() { ... } @RequestMapping("/importProvinces") public ModelAndView importProvinces() { ... } }
Continue reading “Reviewing Google AppEngine for Java (Part 2)”