在研究了一段时间的Google AppEngine之后,我发现Google AppEngine是未来一个非常不错的开发平台,希望可以尽快搞清楚GoogleAppEngine整个的平台架构,并且可以尽快基于这个平台出一个像样的东西——学习任何语言或者平台的唯一一个好办法就是赶紧拿过来就用,千万不要等,一等就过去太长时间,错过了机会。不要以为学了放在那里是一种“储备”,没有使用,就不会有储备。

  到目前为止,我认为Google的Python开发平台、BigTable、Django都是非常不错的工具,组合起来之后是一个非常强大的开发利器。

  Python是一个非常先进的、跨平台的强大的开发语言,豆瓣的后台就是使用Python进行开发的;BigTable是Google的后台存储架构,Google的部分软件就是基于BigTable进行存储的,Google的存储机制自动完成负载均衡和数据库的优化,并且在数据库的结构上就已经支持了这种网络的架构;Django是一个基于Python和关系型数据库的Web快速开发支持包,由于Google的BigTable并不是关系型数据库,所以原则上来说DJango并不支持Google的架构,但是由于Google做了从BigTable到一般关系型数据库的转换,所以DJango已经可以在Google架构下稳定的执行。

  关于BigTable,不应该将之理解为简单的关系型数据库——当然,BigTable也确实不是关系型数据库,而是Google公司基于自己的网络结构而研发的“互联网”数据库。那么,BigTable和一般的关系型数据库相比,其优点在哪儿呢?我们以一个企业的应用为例,如果一个企业应用了关系型数据库,无论是SQL Server、DB2还是其他的关系型数据库,都要考虑当数据量极大的时候数据如何均衡访问的情况,对于企业来说,必须要在现有的网络架构上扩充其架构,才能使之不断的适应越来越海量的数据要求。但是单表的数据仍然可能是极大的,比如一张表有几百万条记录,这个时候,整个系统的效能一定是非常低的。BigTable从其设计上来说,就是为了适应互联网的海量数据的,而不仅限于企业级的应用,因此其存储能力、查询能力的设计上是更加强大的。我们知道,企业级应用中,我们所面临的用户是“有限”的、可预计的;而对于互联网的应用

  ,我们所面临的用户则几乎是无法预计的,其行为也有一定的不确定性,从而给数据库带来了更大的风险。举一个不太恰当的例子,当一个突发事件发生的时候——比如当年克林顿总统“拉链门”的斯塔尔报告就曾经几乎让整个互联网瘫痪。之所以说这个例子不太恰当,是因为我们在当下的互联网上所需要做的,是云计算之下的面向全球的企业级应用,而不仅仅是若干个文档的下载。

  BigTable所做的事情之一就是存储结构上的优化——当然,由于其是基于互联网架构的,我们没有办法在自己的Windows或者Linux上安装一个BigTable来分析其底层结构——而且Google应该也不允许我们这么做。BigTable数据库系统从其根本上并不是为了将其数据放在企业内部而设计的(这也就是为什么Google AppEngine不希望将Devappserver.py开发的程序作为企业应用的理由之一,因为开发环境下根本不是真正意义上的BigTable,而只是一个文件模拟存储而已。)——另一个可能的原因就是除了Google之外,世界上可能没有其他适合BigTable运行的硬件架构,众所周知,Google的底层硬件结构是自创的。

  Google的BigTable的存储是实体的概念,我们关系型数据库传统意义上的“表”对BigTable来说是一个实体集合;而表中的每一行则是一个“实体”。对于单个的实体而言,“字段”——当然,这里所说的字段是对应于关系型数据库而言的,在BigTable中,我们称之为属性(Property),BigTable的属性可能不是确定数量的,如果对于一些实体来说,有五个属性,那么对于另外一些实体则可能有十个属性,这完全是根据需要而定的,不必为所有的实体都预先分配相同的属性。这种设计对于一般数量级的应用来说似乎无关紧要,因为关系型数据库本身就已经对“空”数据进行了优化处理;但是对于海量数据和系统的扩展而言就有很重要的意义了。BigTable的另外一个特性就是它的存储是可以“分组”的。例如,对于我们开发的一个系统,我们可能希望在一个事务中一次性处理一个用户的数据(这是非常可能的,可能来自于用户的操作,也有可能是因为系统的升级而需要对数据分别进行批量处理),如果有这种需要的话,我们可以将数据进行分组,分组的方法就是在创建一个实体的时候将另外一个实体作为新实体的父节点。已经创建的实体不能对其重新进行分组。分组后的数据,在Google后台的存储是存储在基础架构的同一个节点(注意,对Google而言的一个“节点”显然不是我们传统意义上的一台单机,而是一组后台存储架构,可能包含上千台服务器)上的。正是因为同一分组的数据放在同一个存储节点上,于是才可以在同一个事务中进行处理。

  除了GoogleAppEngine提供的以上三利器之外,为了更好的开发富应用的互联网系统,还必须要引入客户端的Ajax,比如Prototype或者Dojo等,从而可以使系统和用户的交互更加友好。

Python和Google AppEngine开发基于Google架构的应用软件相关推荐

  1. 用Python和Google AppEngine开发基于Google架构的应用软件

    用Python和Google AppEngine开发基于Google架构的应用软件 在研究了一段时间的Google AppEngine之后,我发现Google AppEngine是未来一个非常不错的开 ...

  2. 开发基于 Google Map 的 Android 应用

    开发基于 Google Map 的 Android 应用 张 谦, 软件工程师, IBM 吴 校军, 高级软件工程师, IBM 苏 琳, 软件工程师, IBM 简介: 随着移动互联网应用的迅速发展,利 ...

  3. Spring Boot开发基于三层架构设计:Dao层、Service层、Controller层

    三层架构设计:基于Spring Boot开发要使用三层架构: 数据访问层(Dao).业务逻辑层(Service).控制层(Control-ler) (1)数据访问层(Dao):Dao层是最底层的设计, ...

  4. python 游戏开发框架_Python开发 基于python实现坦克大战游戏

    这篇文章主要为大家详细介绍了基于python实现坦克大战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了python实现坦克大战游戏的具体代码, ...

  5. 大概看了一下《Flash MX 2004 -- 数据库应用开发 - 基于.NET架构》,感觉有点迷惘了!...

    整本书都是围绕flash调用.dll与aspx页面,.NET开发的页面一下从主角被扔到了配角的地位... 难道就没方法通过页面,经过Flash remoting去控制Flash吗? 而且,非常不公平的 ...

  6. 用python可以开发小程序吗,python可以小程序开发吗

    python可以开发小程序吗 谷歌人工智能写作项目:小发猫 怎样用python 写小程序 你好,python不适合做小程序的前端需要学typescript.1.微信官方为小程序提供了大量的接口api ...

  7. 基于Google Maps API的地图应用开发

      关于Google地图 API Google地图提供了两大API类库:Google Earth API 和Google Maps API,通过这些API 可以二次开发出功能强大的地图应用程序.其中G ...

  8. 利用python制作点读翻译软件(基于google api)

    利用python制作点读翻译软件(基于google api)         摘要:实现点读功能,自动朗读翻译整段.         完整代码git地址:https://github.com/luoq ...

  9. 网络应用自建利器-Google AppEngine

    网络应用自建利器-Google App Engine 最近特别无聊,看到一篇文章说作为程序员应该有自己的一个网站,感觉的确很有道理,但是要买域名,租服务器要钱,用自己电脑搭建的话,又不能经常关机,很是 ...

最新文章

  1. 用Python解密2021年最新富豪榜,马云居然连前三都没进
  2. OpenAI开源机器人模拟Python库mujoco-py:可高效处理并行模拟
  3. linux c socket 服务器 客户端 简单通讯
  4. kafka for mac安装
  5. 中文问好_直击/泷泽秀明秘访台!Hey! Say! JUMP也来了 亲切秀中文问好
  6. SAP Leonardo机器学习Restful API如何获得Access Token
  7. 安卓平板运行python_使用Python进行手机平板移动开发 | 学步园
  8. div+css 布局浏览器兼容
  9. 关于bottle WEB框架中签名cookie的一点理解
  10. 八皇后问题(非递归版)
  11. 某 iOS 零点击 0day 漏洞已存在8年之久且正遭利用?苹果称正在调查并将推出补丁...
  12. 树堆(Treap)图文详解与实现
  13. 200 行Python 实现的qq连连看 外挂
  14. 腾讯入股艺龙,在线旅游市场引发关注
  15. VS2013之error C3130 内部编译器错误的解决
  16. 汽车行业场景化营销新方向:基于 WebGL 的网上虚拟车展
  17. IDEA中两中默认背景颜色的RGB
  18. 老化测试Gsensor失败分析
  19. BAT 字符串大小写转换
  20. 日语学习的一些网站推荐

热门文章

  1. 【安卓】近场通信技术分析
  2. 谷歌浏览器 打开网页出现 out of memory
  3. android 摄像头画面竖,OpenCV for Android(5):竖屏摄像头旋转问题
  4. 关于汇编 BX 和 BLX 跳转指令
  5. C#_e.Handled用法
  6. HTML5 移动应用开发的生态环境简介
  7. WPF Prism框架
  8. ESP32-S2上使用SPI接口芯片DM9051NP转以太网的无线物联网网关开发指导
  9. metaRTC(yangwebrtc)-中国人自己的webrtc
  10. 苹果官方iCloud中的照片如何迁移到Google Photo教程来了