【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数据库阵营的迅速崛起,当今数据库系统“百花齐放”,现有系统达数百种之多,下图将广义的数据库系统进行了分类。
上图中将数据库分为关系型数据库、非关系型数据库以及数据库缓存系统。其中,非关系型数据库主要指的是NoSQL数据库,分为:键值数据库、列存数据库、图存数据库以及文档数据库四大类。关系型数据库包含了传统关系数据库系统以及NewSQL数据库。
高容量、高分布式、高复杂性应用程序的需求传统数据库不断扩展自己的容量极限,这些驱动传统关系型数据库采用不同的数据管理技术的6个关键因素可以概括为“SPRAIN”,即:
陆嘉恒,中国人民大学副教授,新加坡国立大学博士,美国加利福尼亚大学尔湾分校(University of California, Irvine) 博士后。
本文由 790游戏(www.790.kim)整理发布