Indexed DB:未来一切Web应用的基石
原文出处:http://soft.chinabyte.com/database/270/11200270.shtml未来的 Web 应用是什么样子,虽然还不清晰,但浏览器厂商们认为,未来 Web 应用的基石是一种叫做 Indexed DB 的本地存储技术,这个由 Oracle 发起,最初叫 WebSimpleDB 的本地存储技术,目前只是一个原型,但已经获得微软,Mozilla,Google 等重要厂商的认可。他们还寻求将 Indexed DB 提交 W3C 成为标准。
微软的背书Indexed DB发展有微软的功劳。多年来,微软一直和各种有关 HTML 的讨论保持距离,现在,他们开始积极参与其中,比如,微软架构师 Pablo Castro 在对 Indexed DB 的反馈意见中,不仅对 Indexed DB 表示赞赏,而且表示,微软正在招聘人员从事 Indexed DB 相关的工作。另外,微软在其 IE 博客中,公开对 Indexed DB 进行背书,微软说,和 Mozilla 一起,我们对本地存储技术 Indexed DB 感到振奋,我们认为这是 Web 的一个重要方案。
微软的表态非常重要,首先,微软在浏览器市场举足轻重,因此,尽管开发者们为微软之前对标准的态度表示嘲讽,然而,当微软和他的竞争对手 Mozilla 站在一起为某种技术背书的时候,这对开发者而言意义非同寻常。微软的背书意味着,Indexed DB 将成为真实的工具,而不仅仅是学者们的一个概念。另一方面,微软正在积极开发他们的下一代浏览器 IE9,尽管有关 IE9 的新功能还很含糊,但至少说明这个公司开始重新重视他们的市场。
本地还是网络这听上去有些倒退,然而,在浏览器本地存储数据对 Web 应用来说非常重要,虽然云计算的 本质是将一切应用运行到网络上,然而,我们的网络并不是无处不在,也没有足够快。本地存储让开发者将一 些数据保存在本地计算机以便快速处理,这意味着,Gmail, Google Docs 一类的应用可以离线使用,也让数据可以缓存在本地以便将来使用,这使得云计算更快更可靠。
Opera 的首席标准官 Charles McCathieNevile 说,将一段文字存储在本地数据库,似乎有些用牛刀杀鸡的意味,然而对 Web 程序中的大规模数据,则完全有必要建立一个真正的数据库来保存。
一直以来,浏览器通过 Cookie 在本地保存小段文本数据,然而,浏览器厂商一直在寻求强大的方法,一个方法就是 Firefox 和 IE8 都支持的 LocalStorage,虽然已经被 W3C 接纳为标准,浏览器厂商们发现它的局限性越来越大,比如,它不支持多线程。Blizzard 说,因为多个浏览标签可能访问同一份数据,你必须保证一个标签的行为不被另一个标签看到,对那些像 Chrome 一样拥有多个进程的浏览器来说,这尤其难处理。
Web SQL的兴衰另一个本地存储方案,来自 Apple,称为 Web SQL ,有时称 Web DB,它使用 SQL 查询语言查询数据。Safari 支持 Web SQL,还有 Chrome 4, Opera 也在寻求对该技术的支持。然而,Web SQL 遇到了问题,因为每家数据库厂商都有自己的 SQL,Web SQL 使用的 SQLite 并非标准。Google 认为,目前的 SQL 语法各式各样,尚待统一。Apple 程序员 Maciej Stachowiak 指出,这样下去,必将产生多个 Web SQL 版本。
W3C HTML5 起草者,Google 员工 Ian Hickson 说,我不会使用那些没有被大量支持的标准,同时,在 W3C 有关 Web SQL 的提案中有这么一句话,该提案已陷入僵局。
Indexed DB的兴起Indexed DB 在浏览器层面使用底层的接口,微软和 Mozilla 认可这一策略,开发者可以自己实现基于这些底层技术的接口,就像人们使用 JavaScript 实现了各种各样的框架,如 jQuery, Dojo, 及 YUI 。现在的 Web ,开发者们并不经常使用浏览器自己的 API,相反,他们更愿意使用 jQuery,Dojo 一类跨浏览器框架,与其推出一些复杂的,不兼容的 API,还不如推出简单的底层的东西,让开发者们自己实现各种应用。
目前,关于 Indexed DB,Opera 还没有明确表态,但 McCathieNevile 在 W3C 会议上对之表示赞赏,而苹果则 拒绝评论。不过,假如 IE,Mozilla, Chrome 都支持 Indexed DB,并使之成为 W3C 标准,Apple 可能将毫无选择,因为开发者会使用。
Google 在他们的 Chrome 开发文档中提到了一些实现方法的细节,并将 Inexed DB 的相关代码加入 Webkit 代码库,这意味着,Apple 很快也会进行一些测试。
Indexed DB 还是不确定的东西,LocalStorage 的经验告诉我们,成为标准也不一定意味着什么。但 Indexed DB 有强大的背书者,它至少可以成为让开发者能够开始体验的东西,假以时日,它有可能最后成为一切 Web 应用的基石。