Google App Engine: Thanks for the Java, but What I Really Need is a Better Database
It is official: Google App Engine now supports Java in addition to Python. While I am a happy about the news, it doesn’t change my view of app engine: good for hobby and side projects, but not a platform for a “real” application.
What makes it limited in my eyes is not the language support, but the database support. Python is a fine language. There are things I like about it compared to Java, and some things I don’t like. On the whole, it is easy to learn and yet very powerful. I can not think of any web application I have ever made that I could not implement in Python just as well as I did in Java.
On the other hand, I do not know of any web applications I have made professionally that could run on the app engine’s database. Even my side-project WhereDoKidsEatFreeToday site is running into database limitations. Some of the showstoppers for me include:
- Very limited query logic (no OR statements, cannot do inequality comparisons on multiple columns, etc)
- No aggregate functions
- No full text search
- No data schema migration support
- No data backup ability for rollback
I understand that they are bulding a non-relational database that is designed for scalability. I understand that, and I understand choices like limiting to 1000 rows returned and no table joins. I can work around those. The issues listed above and others like it, however, do keep me from considering it as a platform for application development–even if I can code in Java.