Lovefield:谷歌开发的类似 SQL 的查询引擎

  • Abel Avram
  • 谢丽

2014 年 11 月 27 日

话题:数据库开源JavaScriptGoogleChrome语言 & 开发AI

Lovefield 是一个 JavaScript 库。它为希望利用关系型数据库优点的 Web 开发人员提供了一个类似 SQL 的查询引擎。

早在 2010 年,Chrome 4 就包含了 WebSQL Database API,尝试向 Web 开发人员提供一种 SQL 数据存储。Chrome 的持久化存储是 SQLite。Safari 开发人员也致力于支持该 API。问题在于,W3C 停止了该API 规范的制定工作,因为“所有感兴趣的实现者都使用了相同的 SQL 后端(SQLite), 但是,他们需要多种独立的实现才能沿着标准化的道路继续前进。”W3C 继续致力于Web StorageIndexed Database API方面的工作,两者都为主流浏览器所广泛采用,其中前者是一个简单的键值存储解决方案。

Lovefield是一个跨浏览器的类似 SQL 的查询引擎。现在,谷歌希望通过它再次为开发人员提供关系型数据库。Lovefield 并不包含 SQL 查询分析器,但它以 JavaScript 库的形式提供对 SQL 2003 的一个有限子集的支持。开发人员可以使用 JavaScript 函数调用查询数据库。该引擎使用 IndexedDB 作为持久化存储,但为便于测试,它也可以运行在基于内存的临时存储上。Demetrios Papadopoulos 是 Chrome 团队的一名开发人员。据他介绍,Lovefield 适用于对存储需求较小的应用程序:数据集当前限制在 2GB,数据在 5 万行之内时,引擎性能尚有保证,但将来其性能还会提升。

Lovefield 支持:

  • 查询:select、insert、update、delete
  • 事务
  • 完整性约束检查
  • 聚合函数(count、min、max、sum、avg、stddev、distinct)
  • 多表关联
  • 模式升级
  • Promises
  • 其设计考虑了低端设备
  • 可以在 Chrome、Firefox 和 IE 10 上运行,并提供了必要的 Polyfill。在有一种“可用的”IndexedDB 实现之前,对 Safari 的支持暂时不会进行。

有些 SQL 功能将不会实现,如游标、视图、子查询和触发器。

虽然没有提供详细信息,但谷歌提到,他们计划未来将这项技术标准化,而且他们已经把它用在了 Chrome 应用、Google Play Movies&TV中。

Lovefield 目前只支持 JavaScript,但将来它可能会增加对其它语言的支持。Dart 是一种可能。

相关资源:Lovefield 规范设计GitHub 库

查看英文原文:Lovefield: An SQL-like Query Engine by Google

数据库开源JavaScriptGoogleChrome语言 & 开发AI