Choosing the best way to access data depends on the use case, so it would probably be better to figure out the use case first. Nevertheless, since you asked for alternatives:
3. Again assuming the app is on App Engine, you can access the different persistent data services directly. For instance, the datastore can be accessed through the Cloud Datastore service:
https://developers.google.com/datastore/docs/getstarted/start_java/ . The Cloud SQL and Cloud Storage services can also be accessed by different applications by whitelisting their IDs.