SQL借助于NewSQL开始回归

http://www.infoq.com/cn/news/2013/12/sql-newsql-nosql
新一轮的数据库开发风潮展现出了向SQL回归的趋势,只不过这种趋势并非是在更大、更好的硬件上(甚至不是在分片的架构上)运行传统的关系型存储,而是通过NewSQL解决方案来实现。

在市场被NoSQL(一开始叫做“No more SQL”,后来改为“Not only SQL”)逐步蚕食后,近一段时间以来传统的SQL开始回归。其中广为传颂的一个解决方案就是分片,不过对于某些情况来说这还远远不够。因此,人们推出了新的方式,有些方式结合了SQL与NoSQL这两种技术,还有些方式是通过改进关系型存储的性能与可伸缩性来实现,人们将这些方式称作NewSQL。Google(NoSQL最初的支持者之一)构建了F1,这是一个分布式的关系型数据库,将BigTable的高可用性与可伸缩性与SQL的“一致性和可用性”结合起来。Google在白皮书F1: A Distributed SQL Database That Scales(PDF)中是这样介绍F1的:

这是由Google构建的一个容错、分布式的OLTP与OLAP数据库,作为新的存储系统用在Google的AdWords系统上。设计它的目标旨在替换掉分片的MySQL实现,因为后者已经无法满足日益增长的可伸缩性与可靠性的需求了。

MemSQL就是众多的NewSQL解决方案中的一个,这是个完全的内存解决方案,用于对结构化与半结构化(JSON)数据进行实时分析。它并没有使用列式存储,而是使用了“无锁的skip列表与无锁的hash tables”以实现更快的数据访问,并且对非分片架构使用了并行处理,不会出现单点失败的情况。

另一个NewSQL解决方案是ClustrixDB,这是个点对点的非分片的分布式数据库,用于事务处理与实时分析。根据Clustrix CEO Robin Purohit所述,他们的数据库在Twoo.com每天能够处理4.4B个事务,21个节点(每个节点的配置是8核,48GB内存)的平均延迟为5到10毫秒,其构建方式是这样的:

从头开始构建的点对点分布式SQL数据库,没有单独的协调者(因此就不会出现单个的失败点)。ClustrixDB使用了分布式事务,事务使用了Paxos的一致性协议。ClustrixDB针对写使用了2阶段锁,还使用了分布式的多版本并发控制,用于确保读与写不会互相干扰。这可以保证分布式环境下单个节点数据库严格的ACID属性。

ClustrixDB并没有使用分片架构,这种方式也是唯一一种可以实现线性伸缩的架构。ClustrixDB将原来只有数据仓库中才拥有的用于实时分析的Massively Parallel Processing (MPP)带到了主流数据库上。

我们也向Twoo.com的CEO Toon Coppens提出了这样一个问题:为何最初的MySQL分片解决方案无法满足他们的要求,转而去选择一个NewSQL呢:

我们花了一些时间了解Netlog.com的架构,他们拥有成百个MySQL分片,重新平衡与管理这些分片的代价是非常高昂的,更不必说即时修改查询或是在所有分片上创建新查询时的不灵活性了,这种方式并不可取。我们希望一个查询就能将数据查出来。

虽然NoSQL提供了不错的可伸缩性,但我们并不想将自己绑定在底层的数据表示上。我们希望在修改产品与特性需求时拥有完全的灵活性,同时又不必修改每天都在变化的网站的数据层(clustrix提供了快速的变化,同时又能在高负载下运行良好,当然了,它还有其他很多优秀的特性)。

虽然NoSQL因其性能、可伸缩性与可用性而广受赞誉,但其开发与数据重构的工作量要大于SQL存储。因此,有些人开始转向了NewSQL,它将NoSQL的优势与SQL的能力结合了起来。最为重要的是使用能够满足需要的解决方案。

查看英文原文:SQL Makes a Comeback through NewSQL

This entry was posted in DB. Bookmark the permalink.

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s