DataStore в Google App Engine действительно сильно отличается от реляционной базы данных. Есть некоторые сходства, но важно понимать различия при разработке модели данных.
Обычно вы определяете этот тип отношений с помощью справочных свойств:
class Customer(db.Model):
name = db.StringProperty()
class Order(db.Model):
customer = db.ReferenceProperty( Customer,
collection_name = 'orders' )
ReferenceProperty в определении сущности Order приводит к созданию свойства в сущности Customer с именем 'orders', так что, если 'customer' является экземпляром Customer, вы можете найти все заказы, ссылаясь на 'customer. заказы.
Например:
customer = Customer.gql("WHERE name = :1", "Bob")[0] # Returns the first customer named Bob
order1 = customer.orders[0]
order2 = customer.orders.order("date")[0] # Sorts the Orders by date and gets the first one
Ссылочные свойства задокументированы здесь.
Другим важным понятием, которое нужно понять, является идея Групп сущностей. Объекты в группах объектов хранятся на одном и том же узле, поэтому их можно хранить и извлекать более эффективно. Они также важны для использования транзакций.