The App Engine environment provides multiple options to store data for your application:
- App Engine Datastore: A schemaless object datastore with automatic caching, a sophisticated query engine, and atomic transactions.
- Google Cloud SQL: A relational SQL database for your App Engine application, based on the familiar MySQL database.
- Google Cloud Storage: A storage service for objects and files up to terabytes in size, and accessible to App Engine apps via the Google Cloud Storage client library.
Name | Structure | Consistency | Cost |
---|---|---|---|
App Engine Datastore | Schemaless | Strongly consistent except when performing global queries. | The App Engine Datastore offers a free quota with daily limits. Paid accounts offer unlimited storage, read, and write operations. More information is available on the Datastore Quotas page . |
Google Cloud SQL | Relational | Strongly consistent | Google offers two billing plans for Google Cloud SQL: Packages and Per Use. More information is available in the Cloud SQL price sheet . |
Google Cloud Storage (GCS) | Files and their associated metadata | Strongly consistent except when performing list operations that get a list of buckets or objects. |
There are no charges associated with making calls to Google Cloud Storage. However, any data stored in GCS is charged the usual GCS data storage fees.
Cloud Storage prices are available on the Cloud Storage price sheet . |
App Engine Datastore
App Engine Datastore is a schemaless object datastore providing robust, scalable storage for your application, with the following features:
- Highly reliable and covered by the App Engine SLA .
- ACID transactions.
- Advanced querying features .
- High availability of reads and writes.
- Strong consistency for reads and ancestor queries.
- Eventual consistency for all other queries.
-
The
StructuredProperty
class, which allows entities to have nested structure. - Integrated automatic caching, which typically gives fast (and inexpensive) reads via an in-context cache and Memcache.
- Asynchronous APIs which allow concurrent actions (and synchronous APIs if you don't need that). To get started using NDB, read the Python NDB Documentation .