您的位置:首页 > 移动开发

GAE(Google App Engine Datastore API)翻译(1)

2008-05-26 15:23 591 查看
[align=left]概览[/align]
[align=left] 具备可伸缩性的GAE 数据存储中,能够存储和查询的数据对象,称之为实体:entities.一个entity有一个或多个属性,表示所支持的几种支持的数据类型的一种值。属性还可以关联到其它entity,创建一对多或者多对多的关系。[/align]
[align=left] [/align]
[align=left] GAE 数据存储能在一个事务当中进行多个操作,并且可以在失败后回滚。在分布式的Web 应用程序中这尤其重要。因为可能有多个用户同时读取和操作同样的数据。在多个用户都在改变数据时,GAE 数据存储尝试重新执行事务。[/align]
[align=left] [/align]
[align=left]和传统的数据库不一样,GAE 数据存储利用分布式的结构以存储海量数据。一个GAE应用程序可以能够通过定义关联,查询索引来优化数据的分布式存储。[/align]
[align=left] [/align]
GAE 数据存储并不是关系数据库。在提供与传统数据库的相似介面的同时,利用它本身具备了可伸缩性的能力,提供了另外的方法来管理和设计数据库。

GAE 数据存储API 用一种别具特色的机制定义数据模型。一个模型描述了一种实体:entity,包括多个属性的类型和配置。应用程序利用python类来定义模型,类的attributes描述属性。一种类型的entity对应了一个模型类的对象实例。实例的python attributes则对应了属性值。一个entity可以用类的构造函数创建,并通过调用put()方法之后保存到服务器。

from google.appengine.ext import db

from google.appengine.api import users

classPet(db.Model):

name = db.StringProperty(required=True)

type = db.StringProperty(required=True, choices=set(["cat","dog","bird"]))

birthdate = db.DateProperty()

weight_in_pounds = db.IntegerProperty()

spayed_or_neutered = db.BooleanProperty()

owner = db.UserProperty()

pet =Pet(name="Fluffy",

type="cat",

owner=users.get_current_user())

pet.weight_in_pounds =24

pet.put()


GAE数据存储提供了2种查询方式介面:一种是查询对象的介面,一种是类SQL 的语言:GQL。一个查询返回了多个entitiy,放在对应的类模型的实例里面。可以修改,并返回到存储服务器。

if users.get_current_user():

user_pets = db.GqlQuery("SELECT * FROM Pet WHERE pet.owner = :1",

users.get_current_user())

for pet in user_pets:

pet.spayed_or_neutered =True

db.put(user_pets)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: