I'm trying to understand how to structure keys so that data stored in the GAE NDB Datastore scales horizontally. To take a specific scenario, I'd like to ensure that in a multi-tenant application, tenant data is partitioned in such a way that there are no hot points as the number of tenants grows.
Given a simple model like
class Tenant(ndb.Model):
name = ndb.StringProperty (required = True, indexed = True)
timestamp = ndb.DateTimeProperty(required = True, indexed = True)
tags = ndb.StringProperty (repeated = True, indexed = True)
Do we have control over how the data is partitioned across storage nodes without overlap (as much as possible)?