SQL日薄西山 NoSQL标准化刻不容缓

如同拉里.埃里森的豪华游艇一样,关系型数据库正驶向日薄西山之处。但对NoSQL而言,标准的查询语言和应用程序接口亟待建立标准。


Oracle已称霸数据库世界多年,但在未来,霸权的衰落不可避免的。在NoSQL和大数据浪潮的冲击下,基于逻辑范式设计的RDBMS已然摇摇欲坠。虽然Oracle及其盟友已经做出了快速的反映,并推出了自己的NoSQL数据库,但是Oracle所面对的尴尬情形就如同当年的Novell一样。


关系型数据库不会立刻消亡,它是一种影响深远的技术,在数据库领域曾独领风骚。关系型数据库有着严密的数学背景,其事务处理具有著名的ACID属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。


但我并不认为事务处理是关系型数据库的优势。事务处理跨越多个请求和响应周期,保证数据一致性的能力往往被夸大了。除了事务处理机制,我们还有其它方法保证数据一致性。


关系型数据库最大的优势其实是标准化。关系型数据库自身的发展史也证明,即便是最基本的标准化也比漫无章法更能占据市场。事实上,标准化也成为数据库融合、收购的极大障碍。


从关系型数据库到NoSQL的过渡是不可避免的。关系型数据库早在硬盘只有10MB的时代就被创造出来,而在现在,存储已经非常便宜,我们对性能和扩展性的期望也变得非常高。另一方面,随着互联网信息的膨胀,我们对数据分析和数据挖掘的要求也与日俱增。毫无疑问,在互联网时代,NoSQL才是数据库的未来。


许多公司并不具备能力极强的IT部门,也有许多公司通过外包的方式维持IT的运营。以Oracle数据库为例,在许多公司可能很缺乏具备专业知识的DBA,甚至其职责往往由系统管理员代理。传统数据库的复杂度成为阻碍公司发展的瓶颈。


所有的一切都意味着,我们不必使用结构化的数据,我们追求数据库的分布式、低延迟,以及快速处理海量数据的能力。


然而,这种转变困难重重。NoSQL缺乏一种主导力量。以关系型数据库为例,不管你选择哪种数据库产品(例如,DB2、Oracle或者SQL Server),它们都会遵循ANSI SQL标准,这让我们有所依赖。对于新的数据库,Pig、Hive等查询语言,也让我们觉得有共通之处。关系型数据库为我们提供了标准的访问接口,即便是最古老的ODBC。而对于NoSQL,你必须使用特定的数据库连接器。


大家都知道,NoSQL并不是为所有人设计的,但是标准的设计有助于市场的拓展。不论是对于可能成为潜在客户的大型机构,还是对于独立的风险投资商,标准化的产品、供应商、长期的技术支持都是吸引其注意力的筹码。当今,几乎没有人乐意采购昂贵的软件,但标准化仍然可以为技术的发展提供良好的空间。


为什么NoSQL要与传统的关系型数据库一决雌雄?原因就在于争夺数据库驱动SPI(服务编程接口)和API对主要编程语言平台的支持,这和构建标准化的查询语言别无二致。


不必追求完美的标准。关系型数据库供应商也没有在标准化方面做到尽善尽美,NoSQL只要将标准化做到足够好,足够吸引人,以至于人们乐意迁移到NoSQL平台就可以了。另一方面,我们要考虑到如何为不同类型的NoSQL数据库制定标准,比如文档类型的MongoDB,图形数据库Neo4j。


对图形数据库设计的查询语言不一定适用于文档数据库或键值结构数据库。当然,在常规情况下,我们的查询都很简单,非常容易得到支持。这些非关系型数据库也有许多共通之处,例如,它们都支持层次化查询(hierarchical query)。我认为,一种标准不是一种强制,而是一种建议。


微软的一些研究人员也曾提出NoSQL的标准化问题。他们曾试图使MongoDB支持UnQL和LINQ。在Java的世界里,Spring Data是通用的CRUD接口,但一切还没有眉目。


NoSQL供应商及所有NoSQL支持者是时候走到一起了!乘风破浪,共同制定NoSQL的标准,迎接NoSQL的未来!