云计算之GAE技
内容 ●GAE概述 ●GAE应用的限制 ●数据持久化技术 ●数据库访问: JDOQL和GQL 应用层技术Java ●GAE服务 ●GAE单元测试 学习资料:htt:code. google. com/intl/zh CN/appengine/articles/
内容 GAE概述 GAE应用的限制 数据持久化技术 数据库访问:JDOQL和GQL 应用层技术 Java GAE服务 GAE单元测试 学习资料:http://code.google.com/intl/zh- CN/appengine/articles/
GAE架构 App servers Datastore Memcache request F roten ds URL Fetch Mail Static XMPP file Servers Task Queue App Master
GAE架构
GAE概述 Google App Engine可让开发者在 Google的基础架构上运 您的网络应用程序。 App engine应用程序易于构建和维 护,并可根据运行者的访问量和数据存储需要的增长轻松 扩展。使用 Google App engine,将不再需要维护服务器: 运行者只需上传应用程序,它便可立即为用户提供服务。 Google App engine支持以几种编程语言编写的应用程序 Python和J ava 在 App engine中,运行者只需为使用的资源付费 可以免费开始使用 App engine。所有应用程序都可以使用 多达500MB的存储空间,以及可支持每月约500万页面 浏览量的足够CPU和带宽,完全免费
GAE概述 Google App Engine 可让开发者在 Google 的基础架构上运 行您的网络应用程序。App Engine 应用程序易于构建和维 护,并可根据运行者的访问量和数据存储需要的增长轻松 扩展。使用 Google App Engine,将不再需要维护服务器: 运行者只需上传应用程序,它便可立即为用户提供服务。 Google App Engine 支持以几种编程语言编写的应用程序。 Python和Java 在 App Engine 中,运行者只需为使用的资源付费。 可以免费开始使用 App Engine。所有应用程序都可以使用 多达 500 MB 的存储空间,以及可支持每月约 500 万页面 浏览量的足够 CPU 和带宽,完全免费
GAE特性 ●动态网络服务,提供对常用网络技术的完全支持 ●持久存储空间,支持查询、分类和事务 自动扩展和负载平衡 ●用于对用户进行身份验证和使用 Google帐户发送电子 邮件的API 种功能完整的本地开发环境,可以在开发者计算机 上模拟 Google App engine ●用于在指定时间和定期触发事件的计划任务
GAE特性 动态网络服务,提供对常用网络技术的完全支持 持久存储空间,支持查询、分类和事务 自动扩展和负载平衡 用于对用户进行身份验证和使用 Google 帐户发送电子 邮件的 API 一种功能完整的本地开发环境,可以在开发者计算机 上模拟 Google App Engine 用于在指定时间和定期触发事件的计划任务
GAE应用的限制 ●带宽和CPU配额限制 ●请求大小10兆字节 ●响应大小10兆字节 ●请求持续时间30秒 同时动态请求30 应用程序文件的最大数目,oo ●静态文件的最大数目1,ooo 应用程序文件的最大规模1o兆字节 静态文件的最大大小10兆字节 所有应用程序和静态文件的最大总大小150兆字节
GAE应用的限制 带宽和CPU配额限制 请求大小 10 兆字节 响应大小 10 兆字节 请求持续时间 30 秒 同时动态请求 30 * 应用程序文件的最大数目 1,000 静态文件的最大数目 1,000 应用程序文件的最大规模 10 兆字节 静态文件的最大大小 10 兆字节 所有应用程序和静态文件的最大总大小 150 兆字节
GAE数据持久化技术 App Engine提供了一个强大的分布式数据存储服务,其中包含查询引擎和事 玏能。就像分布式网络服务器随访问量増加一样,该分布式数据存储区也会 随数据而增加。 该 App Engine数据存储区与传统关系数据库不同。,数据对象(或“实体” 有一和一组属性。査询可以检索按属性值过滤和分类的指定种类的实体。属 性值可以是受支持的属性值类型中的任何一种 数据存储区实体是“无架构”的。数据实体的结构由应用程序代码提供和执行。 Java jDO/PA接口和 Python数据存储区接口包括用于在您的应用程序内应用 和执行结构的功能。您的应用程序还可以直接访问数据存储区以根据需要应用 或多或少的结构。 数据存储区高度一致并使用乐观并发控制。如果有其他进程尝试更新某实体 用程序可以在一个事务中执行多项数据存储区操作(全部成功或者全部失 而同时该实体位于以固定次数进行重新尝试的事务中,此时该实体将更新 从而确保数据的完整性)。 数据存储区通过其分布式网终使用“实体组”实现事务。一个事务操作一个组 内的实体。同一组的实体存储在一起,以高效执行事务。应用程序可以在实体 创建时将实体分配到组
GAE数据持久化技术 App Engine 提供了一个强大的分布式数据存储服务,其中包含查询引擎和事 务功能。就像分布式网络服务器随访问量增加一样,该分布式数据存储区也会 随数据而增加。 该 App Engine 数据存储区与传统关系数据库不同。数据对象(或“实体”) 有一类和一组属性。查询可以检索按属性值过滤和分类的指定种类的实体。属 性值可以是受支持的属性值类型中的任何一种。 数据存储区实体是“无架构”的。数据实体的结构由应用程序代码提供和执行。 Java JDO/JPA 接口和 Python 数据存储区接口包括用于在您的应用程序内应用 和执行结构的功能。您的应用程序还可以直接访问数据存储区以根据需要应用 或多或少的结构。 数据存储区高度一致并使用乐观并发控制。如果有其他进程尝试更新某实体, 而同时该实体位于以固定次数进行重新尝试的事务中,此时该实体将更新。应 用程序可以在一个事务中执行多项数据存储区操作(全部成功或者全部失败, 从而确保数据的完整性)。 数据存储区通过其分布式网络使用“实体组”实现事务。一个事务操作一个组 内的实体。同一组的实体存储在一起,以高效执行事务。应用程序可以在实体 创建时将实体分配到组
教据存储区 app engine数据存储区存储数据对象(称为“实体”)并对其 执行查葡。一个实体具有一个或多个属性(若千受支持数据类 型中某一类型的命名值)。属性可以是对另一实体的引用 数据存储区可以在一个事务中执行多个操作,如果任一操作失 败则回滚整个事务。这对于分布式网络应用程序尤其有用,在 这种分布式网络应用中,多个用户可以同时访问或处理同一数 据对象 与传统数据库不同,该数据存储区使用分布式体系结构管理向 超大型数据集的扩展。 APp Engine应用程序可以通过描述数据 对象之间的关系,以及定文查询的索引,来优化数据的分布方 式 App engine数据存储区具有高度的一致性,但不是关系数据库 然该数据存储区接口有许多与传统数据库相同的功能,但也 具有独特的特征,它采用了不同的数据设计和管理方式,可以 充分利用自动扩展功能
数据存储区 App Engine 数据存储区存储数据对象(称为“实体”)并对其 执行查询。一个实体具有一个或多个属性(若干受支持数据类 型中某一类型的命名值)。属性可以是对另一实体的引用。 数据存储区可以在一个事务中执行多个操作,如果任一操作失 败则回滚整个事务。这对于分布式网络应用程序尤其有用,在 这种分布式网络应用中,多个用户可以同时访问或处理同一数 据对象。 与传统数据库不同,该数据存储区使用分布式体系结构管理向 超大型数据集的扩展。App Engine 应用程序可以通过描述数据 对象之间的关系,以及定义查询的索引,来优化数据的分布方 式。 App Engine 数据存储区具有高度的一致性,但不是关系数据库。 虽然该数据存储区接口有许多与传统数据库相同的功能,但也 具有独特的特征,它采用了不同的数据设计和管理方式,可以 充分利用自动扩展功能
实体和属性 App engine数据存储区中的数据对象称为实体。一个实体具有一个或 罗个属性(若千数据类型中某一类型的命名值),包括整数值、浮点 值、字符串、日期、二进制数据等。 ●每个实体还有一个唯一标识该实体的键。最简单的键具有数据存储区 提供的类型和唯一的数字ID。ID还可以是应用程序提供的字符串 储区中抓取实体。查询可以返回零个或多个实体,并可以返回按属性 值排序的结果。查 询还可以限制数据存储区返回的结果 的数量,以节 省内存和运行时间 ●与关系数据库不同, App Engine数据存储区不要求指定类型的所有实 体要有相同的属性 程序可指定并强制其数据模型使用SDK附带 的库或其自己的代码 个属性可具有一个或多个值。具有多个值的属性可具有混合类型的 值。对具有多个值的属性进行查询可测试是否有任何值满足查询条件 这样可以使这些属性能够用子测试成员身份
实体和属性 App Engine 数据存储区中的数据对象称为实体。一个实体具有一个或 多个属性(若干数据类型中某一类型的命名值),包括整数值、浮点 值、字符串、日期、二进制数据等。 每个实体还有一个唯一标识该实体的键。最简单的键具有数据存储区 提供的类型和唯一的数字 ID。ID 还可以是应用程序提供的字符串。 应用程序可以使用实体的键或执行与实体属性匹配的查询,从数据存 储区中抓取实体。查询可以返回零个或多个实体,并可以返回按属性 值排序的结果。查询还可以限制数据存储区返回的结果的数量,以节 省内存和运行时间。 与关系数据库不同,App Engine 数据存储区不要求指定类型的所有实 体要有相同的属性。应用程序可指定并强制其数据模型使用 SDK 附带 的库或其自己的代码。 一个属性可具有一个或多个值。具有多个值的属性可具有混合类型的 值。对具有多个值的属性进行查询可测试是否有任何值满足查询条件。 这样可以使这些属性能够用于测试成员身份
查询和象引 App engine数据存储区查询对某一指定类型(数据类)的每个 实体进行操作。它对实体属性值和键指定零个或多个过滤条件 以及零个或多个排序顺序。如果一个实体对于查询的过滤条件 和排序顺序中所提及的每个属性都具有至少一个值(可能为 nul1),且属性值满足所有过滤条件,那么将返回该实体作为查 询的结果。 每个数据存储区查询都使用一个索引,即包含按指定顺序排列 的查询结果的表格。 APp Engine应用程序会在个配置文件中 定义其索引。开发网络服务器在遇到未配置索引的查询时会自 动为该文件添加建议。您可以在上传该应用程序之前编辑该文 件,以手动调整索引。当应用程序对数据存储区实体做出更改 时,数据存储区会使用正确的结果更新索引。当应用程序执行 查询时,数据存储区会直接从相应的索引中抓取结果。 该机制可支持许多査询,且适用于大部分应用程序。然而,该 机制不支持您可能惯用的其他数据库技术中的一些査询类型
查询和索引 App Engine 数据存储区查询对某一指定类型(数据类)的每个 实体进行操作。它对实体属性值和键指定零个或多个过滤条件, 以及零个或多个排序顺序。如果一个实体对于查询的过滤条件 和排序顺序中所提及的每个属性都具有至少一个值(可能为 null),且属性值满足所有过滤条件,那么将返回该实体作为查 询的结果。 每个数据存储区查询都使用一个索引,即包含按指定顺序排列 的查询结果的表格。App Engine 应用程序会在一个配置文件中 定义其索引。开发网络服务器在遇到未配置索引的查询时会自 动为该文件添加建议。您可以在上传该应用程序之前编辑该文 件,以手动调整索引。当应用程序对数据存储区实体做出更改 时,数据存储区会使用正确的结果更新索引。当应用程序执行 查询时,数据存储区会直接从相应的索引中抓取结果。 该机制可支持许多查询,且适用于大部分应用程序。然而,该 机制不支持您可能惯用的其他数据库技术中的一些查询类型