10件你可能不知道的有关GAE的事
2009 6 6 09:26 PM 1747次查看
分类:Google App Engine 标签:Google App Engine
这篇文章的作者是GAE团队的Nick Johnson,所以不用担心真实性。
- App版本是字符串,不是数字。
所以你可以用任意字符串来做版本,例如dev,而访问时则可通过这个URL:dev.latest.yourapp.appspot.com。
当然,如果包含特殊字符,可能是没法这样访问的。例如空格会被自动替换成%20,不过我没试过=。= - 一个App可以同时运行多个版本。
这个应该是众人皆知的事情了,不过真正让我意外的是,每个版本使用的是不同的实例。
这就意味着,你可以在版本A里使用Python环境,而在版本B里使用Java环境,而且它们共用一个数据库和memcache。 - Java运行环境支持所有可以编译为Java字节码的语言。
因此你可以在GAE上使用JRuby、Groovy、Scala、Rhino (一个JavaScript解释器)、Quercus (一个PHP解释/编译器)和Jython等语言。 - IN和!=操作符会生成多条数据库查询。
文档里有说明,不用解释了。 - put、get和delete支持批操作。
简单来说就是用db的方法来取代model的方法。
当时看有人测试GAE数据库性能时,我就发现那人没用这种方法,于是性能相差4倍。 - 数据库性能不取决于你有多少实体。
查询性能只取决于一次操作返回的实体。
原因被作者糊弄过去了,也没说put和delete的性能。实际上经我测试,后者和实体及实体上的索引多少密切相关。 - 构造索引的时间并不完全取决于实体的大小。
按作者的说法,大致意思是当添加新索引时,索引并不会立刻生效,而是有个后台任务帮你更新。 - Stored Data值每天更新一次。
这就是为什么添加或删除很多实体时,在后台看到的数据库大小没变的原因。 - app.yaml、web.xml和appengine-web.xml中的handler是按顺序匹配的。
所以越详细的路径就越应该放在前面,避免因冲突而覆盖。 - 你不需要手动构造GQL字符串。
因为GQL提供占位符和bind函数。
不过我习惯使用Query对象,只是没法使用bind函数=。=
0条评论 你不来一发么↓