Project Roadmap¶
The Google Cloud Datastore ODM is actively developed. Below is the current status of features, migrating from the legacy App Engine NDB mindset to modern Python architecture.
🏗️ Core Model & Property System¶
- Model base class
- Metaclass-driven configuration
- Model-level validation hooks
- Explicit model overrides via
Metaclass (kind,namespace,project,database)
- Property system
- Descriptor-based field definitions
- Field defaults
- Field-level validation
- Properties:
- BooleanProperty
- IntegerProperty
- FloatProperty
-
BlobProperty→ to be supported but renamed toBytesProperty -
CompressedTextProperty→ support withcompressedargument in properties that make sense - TextProperty
- StringProperty
- GeoPtProperty
- PickleProperty
- JsonProperty
-
UserPropertyDeprecated, to be dropped. - KeyProperty
-
BlobKeyPropertyDeprecated, to be dropped. - DateTimeProperty
- DateProperty
- TimeProperty
- StructuredProperty
-
LocalStructuredPropertyTo be dropped. StructuredProperty and JsonProperty can accomodate sufficiently. - GenericProperty
- ComputedProperty
- Polymodel Support (TBD)
⚙️ Model Core API¶
- Datastore key expose and management
- Key allocation helpers (
allocate_ids,allocate_key) - Entity identity (
id/name) - Entity hydration from raw datastore entities
- Ancestor (hierarchical) key support
- Dict-style and attribute-style access (
doc['field']vsdoc.field) - Basic CRUD operations (
put,get,delete) - Bulk CRUD operations (
put_multi,get_multi,delete_multi) - Lifecycle hooks (
_pre_put,_post_get, etc.) - Atomic
get_or_insert
🔍 Query API¶
- Pass-through queries with raw datastore fields and operators
- ODM-style AST filtering:
- Operator overloading (
==,>,<=, etc.) - Logical grouping (
AND,OR,and_,or_) - Bitwise chaining (
&,|) - Native
IN/NOT_IN
- Operator overloading (
- Limits
- Ordered queries
- Pagination with cursors (
fetch_page) - Keys-only queries
- Projection queries
- Distinct queries
-
.get()queries for first or None - Transaction-bound queries
- Aggregations:
- Server-side
Count,Sum, andAvg - Batch aggregate RPCs
- Server-side
- Runtime warnings for queries or projections attempted on unindexed properties.
📄 Schema & Metadata Introspection¶
- Schema & Metadata Introspection API
- Field metadata exposure
- Optional index declarations at the model level
💾 Persistence, Caching & Operations¶
- Transactions
- Transaction context manager
- Transactional Decorator
- Cache support
⚡ Async Support¶
- Async model API operations (
put_async,get_async) - Async query API support (
fetch_async) - Async transaction support