首页>参考读物>工商管理>管理学

GAE编程指南
作者 : (美) Dan Sanderson 著
译者 : 唐学韬 何继业 等译
出版日期 : 2010-11-24
ISBN : 978-7-111-31452-3
定价 : 65.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 365
开本 : 16
原书名 : Programming Google App Engine(1E)
原出版社: OReilly Associates
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

随着云计算变得越来越热,G公司跟随着成功的商业领导者Amazon,推出了自己的面向开发者的API业务。GAE就是其重要的一项技术。它可以帮助Web开发者构建Web应用程序,帮助小公司快速成长,并且开拓了构建Web基础设置的新路子。
本书介绍了如何利用GAE强大的网络设施来构建Web应用程序。本书教授中级和高级的Web开发者使用App Engine来构建具有强大的可移植性的应用,介绍了使用App Engine API和服务来执行常见开发任务的方法,并说明了什么样的Web应用最适合使用App Engine来开发。

图书特色

“毫无疑问,这是一本关于App Engine的最全面的、最新的参考手册。如果你已经仔细看完这本书,那么你现在就是App Engine方面的专家。”
——Kevin Gibbs,GAE的项目组长和技术经理
GAE是一种云计算服务,跟其他的同类产品不同,它提供了一种简单的应用程序构建模型,通过这种模型,你可以轻松地构建出能够容纳数百万用户的应用程序。本书是介绍使用这个强大平台的专家级实践指南。高级工程师Dan Sanderson将向你讲述如何设计高可伸缩性应用程序的方法,以及如何使用App Engine的API和可伸缩的服务来实现常见的开发任务。
你将会学到有关App Engine的应用程序服务器架构、运行时环境以及可伸缩数据存储区等知识,还可以学到一些应用程序优化方法。App Engine提供了几乎无限的计算能力,本书从源代码方面简单明了地阐述了其使用方法。
了解传统Web应用程序与App Engine应用程序之间的区别。
学习App Engine中Python和Java运行时环境的具体内容。
了解App Engine处理Web请求以及执行应用程序代码的方式。
学习如何使用App Engine中的可伸缩的数据存储区,包括查询、索引、事务以及数据建模等。
利用任务队列来实现在G公司基础架构上的分布式并行计算。
熟练地部署和管理应用程序。




Dan Sanderson是一名技术作者,也是一名软件工程师。他有十多年的Web领域从业经验,服务过的企业有Amazon.com以及Walt Disney Internet Group等。

图书前言

在互联网上,事物的流行总是迅速的也是短暂的。如果某个受欢迎的博客稍微提到了一下你的网站,就能够立刻给你带去30万潜在顾客,人们都想要知道你是谁以及你能给他们带来什么。不过,如果你只是一个刚刚起步的小公司,那么你所拥有的硬件和软件则不大可能有本事应付如此大的流量。也许你已经很明智地建立了一个能够应付每小时3 万次访问的网站;在最初的6个月中,你实际的需要也就只是这样了。然而在大负载的时候,对于另外27万也想来随便瞅瞅的用户而言,这样的系统慢得让你甚至连公司的标志都显示不出来。而且,那些潜在客户也不大可能会在负载趋于平稳之后再回来。
  最好不要一开始就花费时间和金钱去构建能够满足数百万访客的系统,因为那些系统在随后的几个月中都只需要应付每天几千的访客量而已。然而,如果你推迟了构建大系统的工作,那么你又可能会错过利用顾客反馈改进产品的机会。在允许顾客使用产品之前就构建大系统,搞不好会弄出客户不想要的东西。
  小公司通常无法在刚开始的时候就得到一大堆的服务器。他们所能做的,就是先构建一个小的,然后祈祷那些可能出现的系统崩溃不会毁掉他们好不容易积累起来的声誉。运气好的呢,会找到他们的知音,拿到新一轮的投资,停掉功能开发并重建其产品以应对更大的负载;而那些运气不好的呢,呃,那就不好说了。
  不过,现在有了另外一些选择。诸如Amazon.com以及Microsoft之类的大型互联网企业正在通过一种按使用付费的模式出租他们的大容量系统。你的网站得到这些大型系统的支持,就能够轻松处理流量上的突发峰值。此外,由于只需为实际使用的资源付费,所以在流量较低的时候不会出现前期投资浪费的情况。只有当你的客户基数变大以后,成本才会相应地增加。
  GAE(G公司的应用程序托管服务)绝不只是提供了硬件那么简单。它还提供了一种用于构建可自动扩展的应用程序的模型。由于是App Engine在运行你的应用程序,因此, 无论是几十个并发用户还是成千上万个,每个用户在访问它时都会得到与其他用户相同的体验。你的应用程序将会用上G公司为自己的应用程序所提供的数据存储和检索、缓存、网络访问等大型服务。App Engine会自动处理大型计算任务,比如负载平衡、数据复制以及容错等。
  传统系统总是会成长到无法再使用其第一个数据库服务器的时候,App Engine模型则真正解决了这一问题。对于传统系统而言,添加一些负载平衡的Web服务器和缓存层的确可以缓解这一问题,不过当应用程序需要向多个地方写数据时,你就会遇到大麻烦了。
  如果开发工作依赖于数据库软件的某些特性,而这些数据库软件又从来没想过要把数据分布到多台机器,那么麻烦就更大了。如果预先以App Engine的模型来考虑数据,那么你就不用再花费额外的精力去重建整个系统。
  “运行在G公司的基础架构上”意味着你无须架设任何服务器,也不需要更换坏掉的硬盘或是查找网卡上的故障。你再也不会在大半夜被疯了似的手机吵醒,而原因只是一个ISP小故障被误认为是服务警报。另外,由于有了自动伸缩的能力,你也不必再为流量的增加而手忙脚乱地添置新硬件了。
  GAE使你能够将注意力集中在应用程序的功能和用户体验上。你可以尽早地开展业务, 享受有如洪水泛滥般的关注度,留住用户,并在用户的帮助下改进你的产品。应用程序将随着受众数量的增长而不断成长,完全不需要重新建立新的架构。然而与此同时,你的竞争对手还在到处救火和配置数据库呢。
  通过本书,你将会学到如何开发能够运行于GAE的应用程序,以及如何最大限度地发挥这个可扩展模型的作用。本书着重介绍了App Engine的可扩展数据存储区,它跟关系型数据库不同,后者在过去十年中是Web开发的主力军。把这个应用程序模型和数据存储区放到一起就得到了一种全新的Web应用程序开发模型;也就是说,在与我们所熟知的模型几乎一样简单的前提之下,我们需要重新考虑一些原本是理所当然的原则。
  本书介绍了App Engine的主要特性,包括可扩展的服务(比如用于发送电子邮件和操作图片)、用于部署和管理应用程序的工具,还有那些使你能够通过自定义域名将应用程序跟GAccount和Apps集成起来的功能。本书还将讨论一些其他的技术,比如应用程序优化、使用任务队列和离线处理等,以及其他一些能让GAE发光发热的技术。
使用本书
  直到编写本书时,App Engine共支持两类用于构建Web应用程序的技术:Java和Python。Java技术类使你在开发Web应用程序时可以使用Java编程语言(或者是其他能够编译为Java字节码的语言,还可以是那些拥有基于JVM的解释器的语言)以及诸如servlet和JSP之类的Java Web技术。Python技术类提供了一个针对Python编程语言的快速解释器,且兼容许多主流开源Web应用程序框架(如Django)。
  本书涵盖了这两类技术的知识,还有一些特定于语言的重要主题。如果已经决定了要使用哪种语言,那么你可能会对跟这种语言无关的信息不感兴趣。但是,这对一本图书来说实在是一个挑战:要如何组织文字才能让一种技术的信息不会影响到另一种呢?
  首先,我们试图按照所有App Engine应用程序都会涉及的主要知识点对章节进行组织。只要有需要,我们就会把章划分成单独的节以针对每种语言进行单独的讲解。如果某个示例所阐述的知识点在两种语言中都很相似,那么该示例就会以Python的形式给出。如果Python并不是你所喜欢的编程语言,那么也可以从本书其他部分或是App Engine的官方文档中找到相关的信息。
  数据存储区是一个较大的主题,只是这个就占了好几章。从第4章开始,我们将同时使用Python和相应的Java API来介绍数据存储区的知识。注意,我们将使用一种非传统的方式来介绍数据存储区API,首先介绍的将是与数据存储区概念直接相关的低级API。在应用程序中,也许你更喜欢数据建模方面的高级API。数据建模是分别针对两种语言进行讨论的:第7章针对Python,第8章针对Java。
  G公司也许会在未来发布针对其他语言的技术类。如果在你阅读本书的时候他们已经那样做了,那么这里所讨论的知识也一样是派得上用场的。可以在本书的网站上找到未来版本的相关信息。
  本书主要包括以下这些内容:
  第1章 GAE简介
  对GAE及其组件、工具和主要功能的高度概括。这一章还将大致介绍一下你可能希望GAE有而实际上暂时还没有的功能。
第2章 创建一个应用程序关于Python和Java的入门教程,包括如何设置开发环境、设置账户和域名、把应用程序部署到App Engine等。教学应用程序演示了如何利用几个App Engine功能实现Web应用程序所常用的模式:存储和检索用户的使用偏好。
  第3章 处理Web请求
  详细讲解App Engine的架构,以及一些关于前端、应用程序服务器和静态文件服务器的特性,同时还会详细介绍Python和Java的应用程序服务器运行时环境。前端将请求路由到应用程序服务器和静态文件服务器,并管理安全连接以及GAccount的认证和授权。这一章还会讨论配额和限制,以及如何通过设定预算来提高这些东西。
  第4章 数据存储区实体
  从这一章开始,接下来的几章都将讨论App Engine的数据存储区;它是一个强大的、带有本地事务支持的、可扩展的对象数据存储系统。这一章将介绍数据实体、键和属性,以及用于创建、更新和删除实体的Python和Java API。
  第5章 数据存储区查询
  介绍数据存储区查询和索引,以及用于查询的Python和Java API。App Engine的数据存储区查询引擎对所有查询都使用预先构建的索引。这一章将详细说明查询引擎的功能,以及各功能是如何使用索引的;还将讨论如何为应用程序的查询定义和管理索引。
  第6章 数据存储区事务
  如何利用事务来保持数据的一致性。App Engine数据存储区会在一个可扩展的环境中使用本地事务。应用程序以事务性为单位将实体组织起来,也就是实体组。这一章将详细介绍数据存储区是如何更新数据的,以及应该如何对你的数据和应用程序进行设计才能用好这些功能。
  第7章 用Python进行数据建模
  如何利用Python的数据建模API来实现数据架构的不变性。数据存储区本身是无架构的,这也是其可扩展性的根本。你可以通过App Engine的数据建模接口来自动地强制执行数据架构。这一章将只介绍Python,Java开发人员如果希望得到一些数据建模方面的建议,看看也无妨。
  第8章 Java持久化API
  简单介绍了Java持久化API(Java Persistence API,JPA)。它里面的那些内容是如何翻译给数据存储区的以及如何用它来建模数据架构。JPA是一个Java EE标准接口。App Engine还支持另外一种叫做Java数据对象(Java Data Objects,JDO)的标准接口,不过本书并没有介绍JDO。这一章专门介绍Java。
  第9章 内存缓存
  介绍App Engine的内存缓存服务(也就是memcache)及其Python和Java API。强制缓存对高性能Web应用程序而言是必不可少的。
  第10章 获取URL和Web资源
  如何利用URL Fetch服务通过HTTP访问互联网上的其他资源。这一章涵盖了Python 和Java的接口,包括标准的URL获取库实现。这一章还将介绍异步URL Fetch接口(在编写本书的时候,它只能用于Python)。
  第11章 收发电子邮件和即时消息
  如何通过App Engine的服务向兼容于XMPP的服务(比如GTalk)发送电子邮件和即时消息。这一章将介绍如何使用请求处理器来接收由App Engine转发的电子邮件和XMPP聊天消息。此外,还将讨论如何利用API中的工具来创建和处理消息。
  第12章 大批量数据处理和远程访问
  如何在本地计算机上运行脚本去完成在线应用程序中的大型维护工作。SDK中的工具可以使你在备份、恢复、加载和检索应用程序数据存储区中的数据时更加轻松。
  你也可以利用远程访问API编写自己的工具以实现数据转换或其他功能。你还可以通过一个交互式Python命令行shell程序(也用到了远程API)去控制在线的Python 或Java应用程序。
  第13章 任务队列和计划任务
  如何使用任务队列来完成除请求处理以外的其他工作。任务队列通过在多个应用程序服务器上运行代码的方式来实现任务的并行处理。你可以通过配置文件控制具体的处理速率。任务还可以按照时间表执行,无须用户干预。
  第14章 Web应用程序框架:Django
  如何在Python运行时环境中使用Django这个Web应用程序框架。这一章将讨论如何建立Django项目,如何使用Django App Engine Helper,以及如何通过Django App Engine Helper用上Django的功能(比如在表单和Test Fixture译注1中使用App Engine 的数据建模接口)。
  第15章 部署和管理应用程序
  如何上传应用程序并在App Engine上运行,如何根据版本对应用程序进行更新和测试,如何管理和检查运行中的应用程序。这一章还将介绍Administrator Console的其他管理功能,比如账单管理等。最后我们还会给出一些便于你获取帮助和深入学习的网站。
本书约定
  本书所使用的排版约定如下:
  斜体(Italic)
  表示新的术语、URL、电子邮件地址、文件名以及文件扩展名。
  等宽字体(Constant width)
  用于程序代码清单,也用在段落中以引用变量、函数名、数据库、数据类型、环境
  变量、语句和关键字等程序元素。
  译注1: Test Fixture就是单元测试中所需的一切东西(主要是数据),为了不引起误会,这个词在本书中没有进行翻译。
  等宽粗体(Constant width bold)
  用来显示用户需要逐字输入的命令或其他文本。
  等宽斜体(Constant width italic)
  用来显示需要以用户给出的或由上下文决定的值来代替的文本。
  使用示例代码
  本书的目的是协助你完成工作。一般来说,可以将本书中的代码用到你自己的程序或文档中。除非你要对代码的关键部分的文字做较大的改动,否则无需征得我们的许可。
  比如说,使用本书中的大量代码编写一个程序是不需要许可的,而出售或发布含有 O’Reilly图书中的示例的CD-ROM则是需要许可的;援引本书及其示例代码以回答某个问题是不需要许可的,而将本书中的大量代码添加到你的产品文档中则是需要许可的。
  如果你在引用本书时给出出处,我们将不胜感激,但不强求你一定说明出处。出处通常包括书名、作者、出版商以及ISBN号,例如:“Programming Google App Engine by Dan Sanderson. Copyright 2010 Dan Sanderson,978-0-596-52272-8”。
  如果你觉得你对这些示例代码的使用方式超出了正常使用的范围或上述许可,请随时通过permissions@oreilly.com与我们联系。
如何联系我们
  请把你在阅读本书时遇到的问题发送给出版社:
  美国:
  O’Reilly Media, Inc.
  1005 Gravenstein Highway North
  Sebastopol, CA 95472
  中国:
  北京市西城区西直门南大街2号成铭大厦C座807室(100035)
  奥莱利技术咨询(北京)有限公司
  O’Reilly的每一本书都有专属网站,你可以在那里找到关于本书的相关信息,包括勘误列表、示例代码以及其他的信息。本书的网站地址是: http://oreilly.com/catalog/9780596522728
  你也可以从作者的网站上下载示例代码: http://www.dansanderson.com/appengine
  若要询问本书中的相关技术问题,可以发送电子邮件到: bookquestions@oreilly.com
  关于本书的更多信息、会议、资料中心和网站,请访问以下网站: http://www.oreilly.com/
  http://www.oreilly.com.cn/
致谢
  我欠App Engine团队的谢意实在是太多了,我也非常自豪能在2008年成为其中的一员。
  感谢Paul McDonald、Pete Koomen,还有App Engine的项目组长Kevin Gibbs,如果没有他们的努力和领导,这本书将不会出版。
  我要特别感谢一下App Engine数据存储区团队,他们在有关数据存储区的那几章中给予了我非常大的帮助。Ryan Barrett(首席数据存储区工程师)花了不少时间跟我交谈,还在技术方面做了详细的审阅。Max Ross(Java数据存储区接口以及JDO和JPA适配器的实现者)编写了第8章中的大部分内容。Rafe Kaplan(Python数据建模库的设计者)编写了第7章中的许多内容。感谢他们。
  感谢Matthew Blain、Michael Davidson、Alex Gaysinsky、Peter McKenzie、Don Schwarz、Jeffrey Scudder仔细地审阅了本书中的相关内容。还要感谢Andy Smith在最后时刻改进了本书所讲的Django App Engine Helper。还有很多其他的App Engine 贡献者也直接或间接地促成了本书的面世:Freeland Abbott、Mike Aizatsky、Ken Ashcraft、Anthony Baxter、Chris Beckmann、Andrew Bowers、Matthew Brown、Ryan Brown、Hannah Chen、Lei Chen、Jason Cooper、Mark Dalrymple、Pavni Diwanji、Brad Fitzpatrick、Alfred Fuller、David Glazer、John Grabowski、Joe Gregorio、Raju Gulabani、Justin Haugh、Jeff Huber、Kevin Jin、Erik Johnson、Nick Johnson、Mickey Kataria、Scott Knaster、Marc Kriguer、Alon Levi、Sean Lynch、Gianni Mariani、Mano Marks、Jon McAlister、Sean McBride、Marzia Niccolai、Alan Noble、Brandon Nutter、Karsten Petersen、George Pirocanac、Alexander Power、Mike Repass、Toby Reyelts、Fred Sauer、Jens Scheffler、Robert Schuppenies、Lindsey Simon、John Skidgel、Brett Slatkin、Graham Spencer、Amanda Surya、David Symonds、Joseph Ternasky、Eric Tholomé、Troy Trimble、Guido van Rossum、Nicholas Verne、Michael Winton以及Wenbo Zhu。
  还要感谢Dan Morrill、Mark Pilgrim、Steffi Wu、Karen Wickre、Jane Penner、Jon Murchinson、Tom Stocky、Vic Gundotra、Bill Coughran以及Alan Eustace。
  对于O’Reilly,我将永远感激Michael Loukides,他对于一个新手作者总是提供好的建议并具有令人吃惊的耐心。让我们再合作一次吧!

上架指导

计算机\程序设计

封底文字

“毫无疑问,这是一本关于App Engine的最全面的、最新的且制作精良的书籍。如果你已经仔细看完这本书,那么你现在就是App Engine方面的专家。”
                        ——Kevin Gibbs,GAE的项目组长和技术经理
GAE是一种云计算服务,跟其他的同类产品不同:它提供了一种简单的应用程序构建模型,通过这种模型,你可以轻松地构建出能够容纳数百万用户的应用程序。通过学习本书,你可以得到使用这个强大平台的专家级实践指南。高级工程师Dan Sanderson将向你讲述如何设计高可伸缩性应用程序的方法,以及如何用App Engine的API以及可伸缩的服务来实现常见的开发任务。
你将会学到有关App Engine的应用程序服务器架构、运行时环境以及可伸缩数据存储区等方面的知识,还会学到一些应用程序优化方面的手段。App Engine提供了几乎无限的计算能力,本书简单明了地阐述了其使用方法(从源代码入手)。
了解传统Web应用程序与App Engine应用程序之间的区别。
学习App Engine中Python和Java运行时环境的具体内容。
了解App Engine处理Web请求以及执行应用程序代码的方式。
学习如何使用App Engine中的可伸缩的数据存储区,包括查询、索引、事务以及数据建模等。
利用任务队列来实现在G公司基础架构上的分布式并行计算。
熟练地部署和管理应用程序。

作者简介

(美) Dan Sanderson 著:Dan Sanderson是一名技术作者,也是一名软件工程师。他有十多年的Web领域从业经验,服务过的企业有Amazon.com以及Walt Disney Internet Group等。

译者简介

唐学韬 何继业 等译:暂无简介

译者序

简单来说,GAE其实就是一个Web应用程序托管平台,它使得我们有机会可以用到直正的大型企业级基础架构来运行我们的应用程序。时下的Web应用程序其实主要也就两大部分,一部分是数据,另一部分是逻辑,如果还有其他的部分,那就是资源这一部分了。GAE为我们所提供的也就是这几大部分的基础服务,我们只需要按部就班地开发程序即可,其他的一切都可以交给GAE去做。
  本书共15章,深入介绍了GAE的方方面面,非常具体,是绝佳的GAE学习资料。在对GAE做了一个概括性的介绍之后,Dan立刻就教我们如何创建第一个GAE应用程序,这样我们也就算是进了GAE的门了。然后,Dan为我们介绍了GAE的各个方面。为了使初学者能够更好地使用Python,他还在第14章中着重介绍了Django这个Python框架。
  为了方便开发人员了解GAE,本书同时使用了Java和Python。不过,我更建议大家使用Python,这是因为GAE目前对Java的支持还不是很好,而且GAE对Python还有不少额外的支持。
  本书作者Dan Sanderson是一名软件工程师,在Web领域工作了十多年,服务过很多著名的企业,经验非常丰富。他把自己的经验和知识都融入到本书的编写中,再次感谢作者为我们所做的这么一件了不起的事情。希望大家能够喜欢上GAE。
  本书的主要翻译工作由我和何继业完成,其中第10~15章由何继业老师翻译,我负责其余部分的翻译工作以及全书的统稿工作。参加本书翻译校对工作的还有黄惠庄、卢彦良、蒲巧惠、陈丽丽、胡元江、张杨、赵杰、吴斌、郭敏、林丹、王跃等。
  由于时间紧迫,再加上译者水平有限,书中可能会存在一些错误或不妥,因此,大家若是在阅读过程中发现有任何问题,请随时联系我(Email是tonytang1999@126.com),我们将及时更新本书的勘误表。
唐学韬
2010年7月于广州

图书目录

前言 ...................... 1
第1章 GAE简介 ..... 9
运行时环境 .........................................9
静态文件服务器 ..........................................12
数据存储区 ..................................................12
实体和属性...........................................13
查询和索引...........................................13
事务 14
服务 .......16
GAccount .....................................................17
任务队列和计划任务 ...................................17
开发人员工具 ..............................................18
管理控制台 ..................................................19
App Engine暂时还做不到的事情 ................19
使用入门 .....................................................20
第2章 创建一个应用程序 ............................................ 22
安装SDK .....................................................22
安装Python SDK ..................................23
安装Java SDK ......................................27
开发应用程序 ..............................................31
用户偏好模式 .......................................31
开发一个Python应用程序 ....................32
开发一个Java应用程序.........................45
开发控制台...........................................60
注册应用程序 ..............................................62
应用程序的ID和标题 ...........................63
设置域名 ..............................................64
Apps和身份验证 ..................................65
上传应用程序 ..............................................66
管理控制台简介 ..........................................67
第3章 处理Web请求 .................................................. 70
App Engine的架构 .......................................71
对前端进行配置 ..........................................73
配置Python应用程序 ............................73
配置Java应用程序 ................................75
域名 76
应用程序的ID和版本号 ........................77
请求处理器...........................................78
静态文件和资源文件 ............................82
安全连接 ..............................................88
通过GAccount进行授权 .......................91
应用程序是如何运行的 ...............................93
Python运行时环境 ................................93
Java运行时环境 ....................................95
沙盒 95
应用程序缓存 .......................................97
日志 ....................................................100
配额限制 ...................................................104
请求限制 ............................................104
CPU限制 ............................................104
服务限制 ............................................105
部署限制 ............................................106
付费配额 ............................................107
有关资源使用量的头 ..........................109
第4章 数据存储区实体 ............................................. 110
实体、键和属性 ........................................ 111
Python数据存储区API简介 ....................... 112
Java数据存储区API简介 ........................... 115
属性值 . 117
字符串、文本和字节字符串 .............. 119
未设置与空值 .....................................120
多值属性 ............................................120
键和键对象 ................................................121
使用实体 ...................................................123
通过键获取实体 .................................123
查看实体对象 .....................................124
保存实体 ............................................125
删除实体 ............................................126
第5章 数据存储区查询 ............................................. 127
查询和类别 ................................................128
查询结果和键 ............................................128
GQL .....129
Python的查询API ......................................132
Query类 ..............................................133
Python中的GQL .................................134
获取结果 ............................................135
Keys-Only查询 ...................................137
Java的查询API ..........................................138
Java中的Keys-Only查询 .....................140
索引简介 ...................................................140
自动索引和简单查询 .................................142
单个类别上的所有实体 ......................143
单个等式筛选条件 .............................143
大于和小于筛选条件 ..........................144
单个排序规则 .....................................145
针对键的查询 .....................................147
类别无关查询 .....................................148
自定义索引和复杂查询 .............................149
多个排序规则 .....................................149
多个属性上的筛选条件 ......................150
多个等式筛选条件 .............................153
不等于和IN运算符 ....................................156
未设置和不编入索引的属性 ......................157
排序和值类型 ............................................158
查询和多值属性 ........................................159
一个简单的例子 .................................160
Python中的MVP .................................161
MVP和等式筛选条件 .........................161
MVP和不等式筛选条件 .....................163
MVP和排序规则 ................................164
爆炸式索引.........................................166
配置索引 ...................................................166
Python中的索引配置 ..........................167
Java中的索引配置 ..............................168
第6章 数据存储区事务 ............................................. 170
实体和实体组 ............................................172
键、路径和祖先 .................................173
祖先查询 ............................................174
事务中都会发生些什么 .............................175
事务读 ................................................176
Python中的事务 .........................................176
Java中的事务 .............................................178
实体是如何被更新的 .................................182
实体是如何被读取的 .................................185
批量更新 ...................................................185
索引是如何被更新的 .................................186
第7章 用Python进行数据建模 .................................. 188
模型与属性 ................................................189
属性声明 ...................................................190
属性值的类型 .....................................191
属性的验证.........................................192
不编入索引的属性 .............................194
自动值 ................................................194
列表属性 ............................................195
模型和架构的迁移 .............................197
对关系进行建模 ........................................197
一对多关系.........................................200
一对一关系.........................................200
多对多关系.........................................201
模型的继承 ................................................203
查询和多态模型 ........................................204
创建你自己的属性类 .................................206
验证属性值.........................................206
封送值类型.........................................207
自定义默认值 .....................................209
接受参数 ............................................210
第8章 Java持久化API .............................................. 212
设置JPA .....................................................213
实体和键 ...................................................214
实体的属性 ................................................217
嵌入式对象 ................................................219
保存、获取和删除对象 .............................219
JPA中的事务 .............................................221
查询和JPQL ...............................................222
关系 .....226
更多信息 ...................................................231
第9章 内存缓存 . 232
Python的Memcache API ............................234
在Python中设置和获取值 ..................234
设置和获取多个值 .............................235
memcache命名空间 ............................236
缓存过期时间 .....................................237
删除键 ................................................237
memcache计数器 ................................238
缓存统计信息 .....................................239
Java的Memcache API ................................240
第10章 获取URL和Web资源 .................................... 245
在Python中获取URL .................................246
在Java中获取URL .....................................248
Python中的异步请求 .................................250
RPC对象 .............................................252
通过回调函数处理结果 ......................253
第11章 收发电子邮件和即时消息 .............................. 256
启用入站服务 ............................................258
发送电子邮件消息 .....................................259
发件人地址.........................................260
收件人 ................................................262
附件 ....................................................262
在Python中发送电子邮件 ..................263
在Java中发送电子邮件.......................266
接收电子邮件消息 .....................................268
在Python中接收电子邮件 ..................269
在Java中接收电子邮件.......................271
发送XMPP消息 .........................................273
发送聊天邀请 .....................................275
发送聊天消息 .....................................275
检查GTalk用户的状态 ........................277
接收XMPP消息 .........................................278
在Python中接收XMPP消息 ................279
在Java中接收XMPP消息 ....................281
第12章 大批量数据操作和远程访问 .......................... 283
在Python中设置远程API ...........................284
在Java中设置远程API ...............................285
使用Bulk Loader工具 ................................285
安装SQLite .........................................286
备份与恢复.........................................287
上传数据 ............................................288
下载数据 ............................................292
控制Bulk Loader ................................295
使用远程外壳工具 .....................................296
通过脚本使用远程API ..............................297
第13章 任务队列和计划任务 .................................... 299
任务队列 ...................................................300
处理速率和令牌桶 .............................301
任务的要素.........................................302
任务处理器和重试 .............................303
对任务进行测试和管理 ......................304
在Python中使用任务队列 ..................305
在Java中使用任务队列.......................310
事务型的任务入队操作 ......................313
计划任务 ...................................................314
第14章 Web应用程序框架: Django ........................... 318
安装Django ................................................319
创建一个Django项目 .................................320
请求处理器脚本 ........................................321
Django App Engine Helper.........................322
创建一个Django应用程序 .........................325
在Django中使用App Engine模型 ..............327
使用Django的单元测试和Fixture ..............329
使用Django表单 ........................................333
第15章 部署和管理应用程序 .................................... 337
上传应用程序 ............................................338
使用版本 ...................................................339
管理服务配置文件 .....................................341
管理索引 ...................................................341
浏览和下载日志 ........................................343
监控数据存储区 ........................................346
应用程序设置 ............................................346
管理开发人员 ............................................347
配额与付费 ................................................348
获得帮助 ...................................................349

教学资源推荐
作者: (美)理查德 L. 达夫特(Richard L. Daft)范德比尔特大学多萝西·马西克(Dorothy Marcic)范德比尔特大学著
作者: [美]斯蒂芬 P.罗宾斯(Stephen P. Robbins) 玛丽·库尔特(Mary Coulter) 戴维 A.德森佐( David A. DeCenzo) 著
作者: 李彦斌 主编
作者: 主编 刘力刚 副主编 王季 韩亮亮
参考读物推荐
作者: [美]瑞安·埃文特(Ryan Avent) 著
作者: (英) 鲍勃·加勒特
作者: (美)劳伦斯·彼得(Laurence J.Peter)雷蒙德·赫尔(Raymond Hull)著