• Официальный сайт SDK
  • Сайт с примерами кода

Обзор

Платформа App Engine имеет в своем составе масштабируемое хранилище, которое позволяет выполнять запросы и сохранять порции данных, называемыми объектами. Каждый объект может включать в себя одно или несколько свойств, которые имеют имена и могут хранить значения одного из поддерживаемых типов данных. Свойство также может быть ссылкой на другой объект, что позволяет создавать отношения один-к-многим и многие-к-многим.

Хранилище может выполнять в рамках одной транзакции несколько операций и выполнять ее откат, если хотя бы одна из них завершилась неудачно. Это особенно полезно для распределенных сетевых приложений, в которых множество пользователей могут получать доступ и манипулировать одними данными одновременно. Хранилище будет продолжать попытки зафиксировать транзакцию несколько раз, в то время пока другие пользователи блокируют объект.

В отличии от традиционных баз данных, хранилище использует распределенную архитектуру для управления гигантскими объемами данных. Приложения платформы App Engine могут определять, как данные будут распределены между серверами, путем описания отношений между объектами и задания индексов для запросов.

Хранилище App Engine не является реляционной базой данных. Несмотря на то, что интерфейс хранилища имеет многие возможности традиционных баз, уникальные характеристики системы подразумевают, что дизайн приложения и методы управления данными будут тщательно продуманы разработчиком для того, чтобы автоматически получить все доступные возможности по его масштабированию.


Интерфейс Datastore API реализует удобный механизм для определения моделей данных. Модель определяется как тип объекта, включающая в себя конфигурацию типов его свойств. Приложение определяет модель с помощью классов языка Python, атрибуты которого описывают ее свойства. Объекты одного типа представлены как соответствующие экземпляры класса модели, атрибуты которой соответствуют значениям свойств объекта. Объект может быть создан путем вызова его конструктора класса и дальнейшим сохранением через метод put().

CmZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IGRiCmZyb20gZ29vZ2xlLmFwcGVuZ2luZS5hcGkgaW1wb3J0IHVzZXJzCmNsYXNzIFBldChkYi5Nb2RlbCk6Cm5hbWUgPSBkYi5TdHJpbmdQcm9wZXJ0eShyZXF1aXJlZD1UcnVlKQp0eXBlID0gZGIuU3RyaW5nUHJvcGVydHkocmVxdWlyZWQ9VHJ1ZSwgY2hvaWNlcz1zZXQoWyZxdW90O2NhdCZxdW90OywgJnF1b3Q7ZG9nJnF1b3Q7LCAmcXVvdDtiaXJkJnF1b3Q7XSkpCmJpcnRoZGF0ZSA9IGRiLkRhdGVQcm9wZXJ0eSgpCndlaWdodF9pbl9wb3VuZHMgPSBkYi5JbnRlZ2VyUHJvcGVydHkoKQpzcGF5ZWRfb3JfbmV1dGVyZWQgPSBkYi5Cb29sZWFuUHJvcGVydHkoKQpvd25lciA9IGRiLlVzZXJQcm9wZXJ0eSgpCnBldCA9IFBldChuYW1lPSZxdW90O0ZsdWZmeSZxdW90OywKdHlwZT0mcXVvdDtjYXQmcXVvdDssCm93bmVyPXVzZXJzLmdldF9jdXJyZW50X3VzZXIoKSkKcGV0LndlaWdodF9pbl9wb3VuZHMgPSAyNApwZXQucHV0KCkK=

Интерфейс Datastore API предлагает два варианта подготовки и выполнения запросов: объектный интерфейс и похожий на SQL собственный язык запросов, названный GQL. Запрос возвращает объекты в форме экземпляров класса модели, которые затем могут быть изменены и опять помещены в хранилище.

CmlmIHVzZXJzLmdldF9jdXJyZW50X3VzZXIoKToKdXNlcl9wZXRzID0gZGIuR3FsUXVlcnkoJnF1b3Q7U0VMRUNUICogRlJPTSBQZXQgV0hFUkUgcGV0Lm93bmVyID0gOjEmcXVvdDssCnVzZXJzLmdldF9jdXJyZW50X3VzZXIoKSkKZm9yIHBldCBpbiB1c2VyX3BldHM6CnBldC5zcGF5ZWRfb3JfbmV1dGVyZWQgPSBUcnVlCmRiLnB1dCh1c2VyX3BldHMpCg===