Jim Melton 观点

偶像的没落:
SQL 的商品化

作者:Jim Melton

不管您喜欢与否,SQL 标准化都正处于它的没落时期。这对 SQL、RDBMS 和它们的用户意味着什么?

自 1984 年开始,SQL 走过了相当长的一段路程。它走向成熟的、漫长而曲折的道路有几个显著的标志性和里程碑式的重大事件,这些重大事件不仅帮助形成了 SQL 标准本身,而且还形成了其在 SQL 关系数据库市场中的影响。首先,当然是 1986 年“最小公分母”标准的发布,该标准由 INCITS H2(那时称为 X3H2)定义,INCITS H2 是在美国国家标准协会 (ANSI) 的资助下运作的国内技术委员会,它与国际标准组织内部的相应的 ISO SQL 委员会 ISO/IEC JTC1/SC32/WG3 (那时称为 ISO/IEC JTC1/SC21/WG3 DBL RG)合作进行工作。它们一起建立了当时的“官方” SQL 的核心,并帮助确保了它后来作为所有关系数据库的标准语言的角色。然后,在接下来的 18 年里,SQL 标准得到了长足的发展。在 1989 年它通过一个新的工具得到了更新,1992 年进行了重大的修改,1999 年得到了相当大的增强,然后在去年,2003 年,有一些小的增加。H2 和 WG3 已经在研究下一次增加 — 我们预计它将在 2007 年发布。

在早先的几年中,从 1986 到大约 1995 或 1996 年,国家标准和技术协会(前国家标准局)的积极参与对 SQL 在关系数据库市场中的发展也起到了重大的作用,它为供应商提供了对照一个 SQL 标准测试套件来认证它们的产品的服务。如果一个数据库通过了 NIST 测试,则用户可以确信该产品符合标准中定义的一组核心 SQL 功能。在早期,当大约 30 或 40 种不同的产品被创建并投放市场时,NIST 测试套件对于建立 SQL 质量控制非常重要。它不测试标准中的所有内容,但足够给用户一个基础,当用户购买 SQL 数据库时可以从这个基础出发,从而使他们解放出来,在其它的因素(如价格或性能)上作出购买决策。它还帮助创建了一个更公平的竞争环境,允许更小的供应商在 SQL 数据库市场中更有效地进行竞争。不幸的是,在二十世纪九十年代中期,当议会变更了该协会的任务时,NIST 不得不放弃掌管 SQL 测试套件,而且尽管花费了几年的努力来寻找一个替代机构,仍然没有其它机构接过这项任务。尽管如此,NIST 的工作已经打下了一个基础,它提供了标准 SQL 的基础,帮助确保了标准 SQL 在各种供应商中的实施。

SQL 数据库的商品化

然而,自二十世纪九十年代中期以来,公司合并和大公司今天绝对统治地位的共同作用,已经导致 SQL 数据库环境明显缩小。这个竞争环境已经从最初的 30 到 40 个供应商缩小为三种主要的产品,拥有着超过四分之三的市场 — Oracle Database 10g、IBM DB2 和 Microsoft SQL Server — 此外是其它大概十二个各色供应商。这些其它的供应商主要可以分为三组:曾经是主要的供应商,但现在在 SQL 市场中的影响变小的供应商,如 Sybase 和 Ingres (现在归 CA 所有);开放源代码实施商,如 MySQL 和 PostgreSQL,它们的数量增长相当快;而六名左右的供应商赢得了较小但比较稳定的地位,并满足于维持现状(只要它们能够盈利)。

随着“核心 SQL”的一个子集在开放源代码和专门群体中的广泛实施,这种“简化的”数据库市场明晰了一个事实:用户现在大致分为两类:致力并关心他们选择的数据库的特殊特性(和企业数据库中 SQL 特性的更高级实施)的用户和(简而言之)没有付出这些行动的用户。换句话说,用户现在分为“非商用”和“商用”关系数据库用户,在 SQL 的情况下也类似地分为使用该语言的一个非商用扩展集或商用子集的用户。这里我感兴趣的是后面这个群体。

这个商用数据库用户组 — 它潜在地非常巨大,包括了所有家庭小商店、小型企业、大学的教育方面等等 — 的需求很有限。他们实际上并不关心 SQL 关系数据库的极限性能,或者是用来管理巨大的 Web 站点(它们拥有庞大的可伸缩性问题)的特殊特性等。他们想要的全部就是一个“足够出色”能够完成工作的数据库,以及一个实施了标准中定义的 SQL 特性的核心子集的数据库。实际上,只要他们使用标准化 SQL 的基本工具来编写应用程序,他们就可以真正使用他们想要的任意实施。这意味着他们将购买凡是在他们选择的平台上较方便的产品。当然,在 Oracle 看来,如果他们选用了诸如 MySQL 之类的产品,他们要么将限制他们的业务成长潜力(因为 MySQL 永远不会成为像 Oracle 这样功能全面的产品),要么将沿着这条路痛苦地移植到企业级数据库。尽管如此,只要他们做出正确的选择,这些产品对他们还是有用的。

SQL 的商品化

我已经提到过,本文的实际目的不是谈论关系数据库市场商品化的部分日益增加,而是谈论 SQL 本身的商品化 — 因为这个趋势对未来 SQL 标准的发展有巨大的影响。

现在,SQL 是一种非常大型的语言,拥有成百上千的特性,而且我们已经看到,SQL 的核心遵照部分是由各个供应商实施的,并且实施得大致相同。然而 — 这里是要点 — 至少 60% 的 SQL 特性只有一种或两种产品实施了。它们不是标准的核心遵照要求的一部分,而是可选的特性。这意味着 IBM 和 Oracle 可能实施这些特性中的二十个。Oracle 和 Microsoft 可能实施它们中的 15 个。Microsoft 和 IBM 可能实施它们中的 5 个。而 MySQL 可能实施它们中的 1 个。因此,问题出现了:如果我提到的这个巨大的商用用户组仅使用商用 SQL,而企业供应商仅实施非商用 SQL 的一部分,那么 SQL 标准继续积极地发展还可能有多久?

由于在 SQL 标准委员会中工作了很长时间,所以现在我很清楚 SQL 的发展和标准化已失去了某些动力 — 上述市场发展和语言自身的成长和成熟的共同作用。如果您将 SQL-92 发展周期(大致覆盖了 1986 至 1992 这段时期)与现在做比较,前期要丰富得多。那个时候,有 40 或 50 个积极的参与者,包括用户代表。许多人撰写文章,委员会会场有非常积极的辩论,而且各种类型的新技术被创造出来。

现在,我很清楚,该语言对于大多数人而言是足够好的,实际上,它对大多数人而言太大了。而真正有能力调整标准的供应商在做它们自己的事情。他们不时做出决定,某些东西整体上看起来值得提出并放到标准中去,但它们事实上更专注于可伸缩性、健壮性、不中断的运行等。然而,这些是底层的技术问题,不是语言的问题。此外,用户实际上在标准委员会中没有资源来推动 SQL 进一步的发展。事实上,特别是在 H2 中,我们实际没有留下任何真正的用户代表 — 我们有供应商和我们有中间件厂商。用户要有更多的声音,他们需要在标准委员会中承担更积极的角色,他们需要更多地告知供应商他们的期望,并且他们需要用资金来支持他们的 SQL 实施愿望。在目前的经济和公司资源的情况下,这几乎不可能。

SQL 标准化:还剩下什么要做

那么我们应该如何看待这种情况?如果 SQL 现在已经成熟,而且它的发展和标准化已失去了某些动力,这可能是现实的情况,但我们仍然要问这个显而易见的问题:还剩下什么要做?同样重要的问题是,是否还有力量来做这些事?对于 SQL 标准化剩下的工作,我给出了我自己的的列表。这取决于您的看法,您可能认为这个列表或长或短,下面的项目或者重要或者不重要:

  • 增强的易使用性
  • 安全性的改善
  • 一些可能的新的 OLAP 增强
  • 特殊场合的新的数据类型或操作符
  • 子事务的一个更一般化的模型
  • 针对临时数据的 SQL 支持
  • 针对联合和网格数据库的 SQL 优化
  • 与 XML 和 XQuery 的集成
  • SQL 语言自身的一个 XML 表示。
让我们考虑这个列表,什么有可能放到标准中去?新的数据类型和操作符可能仍将成为标准,但仅仅是有机会,当出现需求时。子事务的一个更一般化的模型怎么样?目前的 SQL 标准有一个非常局限的子事务定义,称为 Savepoints。我们可以拥有一个更一般化的模型,一些应用程序将真正从中受益(特别是现在在 Web 服务领域中),但实际上没有使之标准化的市场推动力。针对临时数据的 SQL 支持怎么样?可能不行,即使事实上每一个企业应用程序本质上都是临时的。只是大多数人不认为这是个问题。(银行可能认为这是问题。它们能够重新创建您前 7 年的银行账单 — 如果您需要的话。但它们用自己的方法来实现它,使用定制的程序或工具,而不是标准 SQL,因为 SQL 标准中没有对临时数据的支持。}或者针对来自多个供应商的联合数据库的 SQL 优化怎么样?这也基本上不可能,不是因为它不重要,而是因为每一个主要的供应商(和大多数小型的供应商)已经有了自己实现它的方法。这些供应商都不打算按照 SQL 标准来重新实施这项功能。这里的情况是,您可以获得您需要的东西,但您将把自己限制在一个供应商上来实现它。然而,网格计算不断增长的重要性可能实际上为标准化 SQL 语言中额外的联合数据库功能创造动力和资源。但这仍有待观察。

SQL 和 XML:未来一瞥

SQL 标准化的推进中非常活跃的领域是 SQL 与 XML 和 XQuery 集成。这个领域在委员会中有许多推动者,我相信 SQL/XML 集成将持续活跃一段时间 — 我的意思是 4 到 7 年。这是因为我们仍需要弄清楚这两种技术的交互作用将如何影响用户、应用程序和数据库实施。我们实际上仍没有理解 SQL/XML 交互作用的所有问题和后果,更不用说解决方案。

除此之外,很明显我们现在正处于 SQL 标准化工作的没落时期 — 而这,我的朋友,是一个相当清醒的看法。这对 SQL 和 SQL 关系数据库意味着什么?让我在这里做一些最终的评价和预测,以使这一事实更加清楚。

  • 我相信在至少接下来的 5 年里(实际上,在接下来的 8-10 年里),在关系系统中使用 SQL 来开发新的、主要的应用程序是安全和适当的。但这样的新的、主要的产品数量和范围在此期间将慢慢减少。
  • 经过适当增强的 XQuery 获得心理认同份额的速度将比获得市场份额的速度快得多,但它将在 2005 年之前成为一股可靠的力量,我认为在 2010 或 2012 年左右之前,在使用它的主要的新应用程序方面,它将超过 SQL。这很骇人听闻,但 Oracle、IBM 和 Microsoft 都在积极地研究 XQuery,并试图将其与它们的数据库产品和它们的 SQL 产品集成,这一事实大大增强了这一预测的可信度。
  • 接下来的步骤

    阅读技术白皮书,Oracle Database 10g 中的 SQL 2003 标准支持

    访问 Oracle XQuery 技术页面

    下载 Oracle 的 XQuery 原型

    访问 W3C 的 XQuery 页面
  • 带点玩笑性质,我认为即将涌现大量的研究 XQuery 优化的博士生,但这将几乎没什么意义。只要看看 SQL 的历史和这个领域中相应的工作就可以知道这一点。
  • 我还认为最初将有许多的 XQuery 供应商 — 实际上,现在已经有了大概 30 种 XQuery 实施了 — 但就像 SQL 一样,这很快将减少为一个更小的数量,然后更缓慢地减少为三个或四个主要的供应商。我没有预测这将花多长时间,但一定少于 10 年。
  • XQuery 将逐渐集成到主要的 SQL 系统中,以利用它们的行业级实施技术。就像 SQL 一样,企业级系统进入市场的成本将成为门槛性因素。
下面的预测争议较大:主要的 SQL 供应商最终将支配 XQuery 市场。它们已经拥有了技术基础架构,因此它们拥有内在的优势。虽然三个主要的 SQL 供应商今天拥有的 XML Query 市场可能低于 10%,但这将完全按照 SQL 所遵循的模式进行变化,但要快得多。(我一直在告诉自己情况变化的速度可能会有一些限度,但显然,我们还没有达到这个限度。)


Jim Melton (jim.melton@oracle.com),Oracle 的技术工作团队的一位咨询成员,是 Oracle 在各种标准组织(包括 INCITS H2 和 ISO/IEC JTC1/SC32/WG3)中的代表。他是 SQL 标准所有部分的编辑,也是 XML Query Functions & Operators 规范、XQuery 规范和即将推出的 XQuery Update 规范的编辑。



请评价这篇文章:

极好 一般 较差 很差

将您的意见发送给我们

寄送此页面
Printer View 打印机视图