Wednesday, February 10, 2010

App Engine SDK 1.3.1, Including Major Improvements to Datastore!

We are excited to announce the release of version 1.3.1 of the App Engine SDK for both Python and Java. While this release contains plenty of new features and fixes, we've concentrated on using our very first SDK release of 2010 to improve the heart of many App Engine applications: the Datastore.

Here are the three major improvements that 1.3.1 has in store for datastore users:
  • Datastore Query Cursors - Cursors allow applications to save and 'bookmark' their progress through a query, so that it can be resumed later. This works great in combination with paging URLs, as well as processing in the Task Queue API, but there are many other uses. Watch for an upcoming blog post that explores Cursors in the near future. They're also really handy in the context of the next change...
  • No more 1000 result limit - That's right: with addition of Cursors and the culmination of many smaller Datastore stability and performance improvements over the last few months, we're now confident enough to remove the maximum result limit altogether. Whether you're doing a fetch, iterating, or using a Cursor, there's no limits on the number of results.
  • Reduced error rate with Automatic Datastore Retries - We've heard a lot of feedback that you don't want to deal with the Datastore's sporadic errors. In response, App Engine now automatically retries all datastore calls (with the exception of transaction commits) when your applications encounters a datastore error caused by being unable to reach Bigtable. Datastore retries automatically builds in what many of you have been doing in your code already, and our tests have shown it drastically reduces the number of errors your application experiences (by up to 3-4x error reduction for puts, 10-30x for gets).
But even with our focus on the Datastore, we were able to sneak in a quite a number of other new goodies into 1.3.1 as well:

For Python, we've included the AppStats RPC instrumentation library. AppStats lets users easily profile the performance of calls from their app to the App Engine backend services to identify and isolate issues such as ineffective caching, bottlenecks, and redundant RPC calls in their app. (A Java version is in beta testing now.)

And for Java, we've included a comprehensive new unit-testing framework for your App Engine apps. The unit-testing framework enables you to test your application code in a natural, fully supported manner, and also allows you to integrate your App Engine apps into other existing testing and automation frameworks.

The list of changes in 1.3.1 goes on and on (Custom Admin Console pages! Support for wildcard domain mappings! Java precompilation on by default for all applications!), so make sure to download the new version and read our release notes for the complete list (Python, Java).

No comments: