技术开发 频道

大数据管理系统: NewSQL数据库概述

        【IT168 评论】人们曾普遍认为传统数据库支持ACID和SQL等特性限制了数据库的扩展和处理海量数据的性能,因此尝试通过牺牲这些特性来提升对海量数据的存储管理能力,但是现在一些人则持有不同的观念,他们认为并不是ACID和支持SQL的特性,而是其他的一些机制如锁机制、日志机制、缓冲区管理等制约了系统的性能,只要优化这些技术,关系型数据库系统在处理海量数据时仍能获得很好的性能。

  关系型数据库处理事务时对性能影响较大、需要优化的因素有:

  ·通信。应用程序通过ODBC或JDBC与DBMS进行通信是OLTP事务中的主要开销。

  ·日志。关系型数据库事务中对数据的修改需要记录到日志中,而日志则需要不断写到硬盘上来保证持久性,这种代价是昂贵的,而且降低了事务的性能。

  ·锁。事务中修改操作需要对数据进行加锁,这就需要在锁表中进行写操作,造成了一定的开销。

  ·闩。关系型数据库中一些数据结构,如B树、锁表、资源表等的共享影响了事务的性能。这些数据结构常常被多线程读取,所以需要短期锁即闩。

  ·缓冲区管理。关系型数据将数据组织成固定大小的页,内存中磁盘页的缓冲管理会造成一定的开销。

  为了解决上面的问题,一些新的数据库采用部分不同的设计,它取消了耗费资源的缓冲池,在内存中运行整个数据库。它还摈弃了单线程服务的锁机制,也通过使用冗余机器来实现复制和故障恢复,取代原有的昂贵的恢复操作。这种可扩展、高性能的SQL数据库被称为NewSQL,其中“New”用来表明与传统关系型数据库系统的区别,但是NewSQL也是很宽泛的概念。它首先由451集团在一份报告中提出,其主要包括两类系统:拥有关系型数据库产品和服务,并将关系模型的好处带到分布式架构上;或者提高关系数据库的性能,使之达到不用考虑水平扩展问题的程度。前一类NewSQL包括Clustrix、GenieDB、ScalArc、ScaleBase、NimbusDB,也包括带有NDB的MySQL集群、Drizzle等。后一类NewSQL包括Tokutek、JustOne DB。还有一些“NewSQL即服务”,包括Amazon的关系数据库服务、Microsoft的SQL Azure、FathomDB等。

  当然,NewSQL和NoSQL也有交叉的地方,例如,RethinkDB可以看作NoSQL数据库中键/值存储的高速缓存系统,也可以当作NewSQL数据库中MySQL的存储引擎。现在许多NewSQL提供商使用自己的数据库为没有固定模式的数据提供存储服务,同时一些NoSQL数据库开始支持SQL查询和ACID事务特性。

  NewSQL能够提供SQL数据库的质量保证,也能提供NoSQL数据库的可扩展性。VoltDB是NewSQL的实现之一,其开发公司的CTO宣称,它们的系统使用NewSQL的方法处理事务的速度比传统数据库系统快45倍。VoltDB可以扩展到39个机器上,在300个CPU内核中每分钟处理1600万事务,其所需的机器数比Hadoop集群要少很多。

  随着NoSQL、NewSQL数据库阵营的迅速崛起,当今数据库系统“百花齐放”,现有系统达数百种之多,下图将广义的数据库系统进行了分类。

Hadoop 2.0新增YARN 威胁MapReduce地位
▲图:数据库系统的分类

  上图中将数据库分为关系型数据库、非关系型数据库以及数据库缓存系统。其中,非关系型数据库主要指的是NoSQL数据库,分为:键值数据库、列存数据库、图存数据库以及文档数据库四大类。关系型数据库包含了传统关系数据库系统以及NewSQL数据库。

  高容量、高分布式、高复杂性应用程序的需求迫使传统数据库不断扩展自己的容量极限,这些驱动传统关系型数据库采用不同的数据管理技术的6个关键因素可以概括为“SPRAIN”,即:

  ·可扩展性(Scalability)——硬件价格

  ·高性能(Performance)——MySQL的性能瓶颈

  ·弱一致性(Relaxed consistency)——CAP理论

  ·敏捷性(Agility)——持久多样性

  ·复杂性(Intricacy)——海量数据

  ·必然性(Necessity)——开源

  作者简介

  陆嘉恒,中国人民大学副教授,新加坡国立大学博士,美国加利福尼亚大学尔湾分校(University of California, Irvine) 博士后。

0
相关文章