现今,完全放弃传统">关系数据库并忙于使用新兴的NoSQL数据库可能还不是一个合理的选择。相反改进后的SQL(结构化查询语言)系统可能会对一些技术细节进行调整。在8月23日加利福尼亚圣何塞市举行的NoSQL 2011大会上分布式数据库公司VoltDB的首席技术官Michael Stonebraker表达了上述的观点。
Stonebraker所在公司本身提供的是基于NewSQL的数据库软件。他所倡导的新体系架构比传统供应商提供的数据库软件可承受更大的负载。Stonebraker是Ingres和Postgres数据库的总设计师。他还是Vertica(面向列数据库公司)的共同创始人,惠普已在2月份对Vertica进行了收购。
相对于NoSQL蓬勃发展的情况基于SQL的关系数据库系统确实显得有些死气沉沉。但这是数据库厂商的错,而不是SQL的错。
Stonebraker指出,当今大多数商业数据库软件已经在市场上存在30年或更长时间。他们的设计并没有围绕自动化、数据沉重性以及事务性环境。同时在这几十年中不断发展出的新功能并没有想象中的那么好。
Stonebraker表示数据库系统的滞后通常可归结于多项因素。诸如以恢复日志为目的的数据库系统维持的缓冲区池,以及管理锁定和锁定的数据字段。在VoltDB的测试中发现以上这些行为消耗系统96%的资源。
许多新兴的NoSQL数据库的普及,例如MongnDB和Cassandra。这很好的弥补了传统数据库系统的局限性。顾问Dan McCreary表示关系数据库的缺点刺激了开发人员创建出NoSQL数据库。关系数据库不是很灵活,其基本架构设计还是穿孔卡片时代,这反映了严格的数据建模方式。如果一个组织需要添加另一列的数据,他们必须改变架构,这可能相当棘手。建模过程中创建的关系表(实体模型)也并不总是能够准确的反应数据在现实世界中是如何存在的。
McCreary同时指出SQL数据库的另一个问题是其不具备很好的伸缩性。当数据增长超过一台服务器所能承受的极限时,就必须分享或分割数据到多台服务器上,跨越多台服务器是一个复杂的过程。此外如外部链接带来的问题。例如多个表中数据的融合,跨越服务器执行一些操作可能会产生一些问题。
Stonebraker认为NoSQL数据库可提供良好的扩展性和灵活性,但他们也有自己的不足。由于不使用SQL,NoSQL数据库系统不具备高度结构化查询等特性。NoSQL其他的问题还包括不能提供ACID(原子性、一致性、隔离性和耐久性)的操作。另外不同的NoSQL数据库都有自己的查询语言,这使得很难规范应用程序接口。
Stonebraker表示NewSQL可提供SQL独有的一些特性,同时还具备NoSQL的扩展性。NewSQL具备一个新的架构设计,他释放了主内存运行的数据库中消耗系统资源的缓冲池。VoltDB系统使用了NewSQL创新的体系架构,在执行交易时可比传统关系数据库快45倍。VoltDB可扩展服务器数量为39个,并可以每秒处理160万个交易(300个CPU核心)。而具备同样处理能力的Hadoop则需要更多的服务器。例如做相同的任务,VoltDB需要20个节点的任务,Hadoop执行起来则需要1000个节点。
DoubleClick创始人和MongoDB创始人之一Dwight Merriman与Stonebraker一致认为SQL本身并不是导致可扩展性和低性能的根源。但Dwight Merriman同时表示在未来的岁月里,可能不是所有人都愿意使用SQL分析和查询他们的数据。因为对于程序员来说,基于SQL的存储过程是特别困难的工作。
最后McCreary也同意Stonebraker的看法,NoSQL没有一个统一的查询语言,这将拖慢NoSQL的发展。但他建议在新的数据库系统统一查询工具使用一个SQL以外的语言。如XQuery,一个XML文档查询语言。
(责任编辑:吕光)