Boris
by Boris Bulanov

基准谷歌云扳手,蟑螂和诺贝布

对Nuodb的分布式SQL数据库感兴趣,并希望知道如何运作?下载我们的 Nuodb的数据库架构上的白皮书.

寻找下一代数据库

作为Nuodb解决方案架构师,我经常与人们谈论他们在数据库中寻找的内容。越来越多地,架构师和CTO告诉我们,他们正在构建下一代数据中心 - 通常使用容器或云基础架构 - 并且他们需要一个适合此模型的数据库。

在理想的世界中,他们想要一个熟悉的关系数据库 - 但他们想要一个可以提供的数据库 弹性能力, 维持 跨多个数据中心的一致事务和跨度 一下子多个公共云。他们要求对未来的数据库。

这通常是为什么他们在NOODB与我们交谈。作为一个 分布式SQL数据库 可以通过添加和删除节点来扩展和缩放,Nuodb可以跨多个部署环境和数据中心运行,同时仍保持严格的事务一致性和支持ANSI SQL。我们认为这使其成为现代部署需求的理想数据库。

一种新的云数据库

但实际上,我们不是唯一沿着这些线路思考的人。有一个全新的数据库类 - 该 分布式SQL数据库 - 已经出现了。此类数据库今天将我们预览为五年来的数据库。除了NOODB,还有:

  • 谷歌云扳手. 与谷歌的其他云SQL数据库不同(专门谷歌云SQL)不同,云扳手是分布式缩放的SQL数据库构建的。它已被使用多年的“AdWords”应用程序 - 谷歌的收入引擎。
  • 蟑螂。 由蟑螂实验室开发作为“幸存的数据库”,蟑螂基本上是一个开源适应扳手。它在今年早些时候发布了数据库的第一个生产发布。

我是所有这些技术的崇拜者,因为它们代表了一种关于数据库的新方法。然而,在探索多篇论文和演示后,我仍然感到难以满足。所有这些产品都在纸上看起来很有希望,但它们真正表现如何?

要回答这个问题,我的几位同事和我决定将这些产品带出来旋转并直接比较它们。不是正式的迂腐评估,但只是在空中湿手指。

YCSB评估:环境和配置

为简单起见,我们决定使用 雅虎云服务基准(YCSB) benchmark. 布莱恩库珀是YCSB的作者,加入谷歌并写了 YCSB驾驶员 对于扳手。 Cockroachdb和Nuodb都支持JDBC驱动程序,允许YCSB的开箱即用的支持。因此,旋转YCSB测试的任务是简单的。

测试配置类似地配置。单个多线程YCSB应用程序连接到最多三个在单独的主机上运行的数据库服务器。

YCSB应用程序

分布式SQL数据库的美丽是应用程序不关心组合数据库的服务器或服务器物理驻留的位置。应用程序始终针对单一一致的逻辑数据库运行。

对于我们的练习,我们在Google Cloud上运行了云扳手的YCSB扳手测试,而蟑螂和Nuodb的基准在我们的实验室中使用32GB,4核SuperMicros留在Lab的裸金属上,具有10G网络。

如果您不熟悉YCSB测试,则它们包含从A到E命名的许多工作负载。在短时间内,工作负载可以描述如下:

a - 繁重的更新(50%阅读,50%更新)
b - 大多数读取(95%读,5%更新)
C - 只读(100%阅读)
d - 阅读最新插入(90%读,10%插入)
e - 扫描最新插入(90%读取,10%插入)
f - 读取修改 - 写(50%读取,50%更新)

阅读YCSB工作负载的完整说明.

谷歌云扳手,蟑螂和诺贝布的YCSB结果

对于每个工作负载,我们将应用程序加载(通过YCSB应用程序运行的线程数)和数据库容量(1到3之间的节点数)。我们执行了多个运行,然后在每个数据库的所有运行中占据了最佳吞吐量编号,并在下面的图表中绘制它们:

峰值吞吐量 -  3个节点

此图测量峰值吞吐量期间每个数据库每秒的每秒事务数。在所有测试工作负载中,Nuodb显着优于云扳手和蟑螂。
 

您会注意到我们没有完成工作负载e,因为它需要对YCSB应用程序的次要更改,以便使用Nuodb正确运行。为了保留测试的完整性,我们希望在没有任何更改的情况下运行YCSB,因此从我们的测试中排除工作负载e。对于有兴趣在NOODB上运行YCSB Workload E的人,您可以 联系我们 或者在下面的评论有关您需要更改的详细信息。

您可以从图中看到,Nuodb优于其他分布式SQL数据库,在所有工作负载中具有更高的交易吞吐量。但是,最引人注目的差异是使用工作负载C - 只读测试。预计此行为是由于诺博德布的 以内存为中心的架构.

除了观察吞吐量结果外,我们还希望了解延迟 - 分布式数据库的关键问题。正如您在下面的图表中看到的那样,这是Nuodb的内存中心架构提供优势的另一个领域 - 在这种情况下,以低延迟数据访问的形式。诺福德的延迟编号明显低于扳手和蟑螂的延迟。

读取延迟 - 峰值吞吐量

此图测量峰值吞吐量期间读取应用程序所经历的平均等待时间。最小的延迟是最好的用户体验的理想选择。
 

为了公平,与本机LAN速度相比,一些扳手的迟钝可能归因于谷歌云的网络延迟。我们选择在我们的硬件上运行蟑螂和诺博德布,以便我们可以更容易地了解测试运行之间的任何异常 - 在云覆盖下会难以做的事情。

YCSB还收集下面捕获的“更新”延迟编号。对于所有数据库,结果都更加对齐,因为所有数据库都被I / O性能所置换。

更新延迟 - 峰值吞吐量

此图测量应用程序在峰值吞吐量期间应用程序更新和插入的平均等待时间。最小的延迟是最好的用户体验的理想选择。请注意,工作负载C未在此表示,因为它是只读工作负载。
 

明显地,Google Spanner的插入延迟(工作负载D)非常低。我们的测试反复表现出同样的行为。目前尚不清楚这是一个只是测试异常,还是简单地,扳手对于本地插入延迟很好地优化。

摘要:现代数据中心的三个选项

总之,我们的实践实验使我们对性能范围感到非常良好。我们还提出了一些一般性意见:

  • 谷歌云扳手 非常容易管理。只有一个配置参数 - 扳手节点的数量和位置。其余的沉重举起是在窗帘后面完成的。这种方法为管理易用性设定了一个高杆
  • 蟑螂 非常容易设置并开始使用。它被包装为您在主机上删除并通过一些配置参数的单个可执行文件。并且它是一个致力于基于开源的基础架构的开源分发
  • Nuodb. 是灵活快速的。它可以实现吞吐量和卷的卓越性能。但它需要了解建筑和最佳实践

虽然我们尝试将基准测试进行比较,但我们承认,作为诺福德的专家,我们的知识可能至少偏见了结果,例如,我们运行了一个配置,使能够在内存中适合整个数据设置的配置。但是,我们也耗尽了蟑螂的相同配置。也就是说,我们不认为可以单独解释急剧差异。

1983年1月以来一般可用Nuodb,因此我们已经花了多年的努力工作,改善我们的产品以艰苦击中, 现实世界客户体验。我们很高兴欢迎这些新的孩子在街区上,看看他们带来了什么。我想我们有很多我们可以互相学习。

通常,我认为这些“分布式SQL”数据库中的三个都是非常有前途的选择,满足现代数据中心的需求。问题是 - 你觉得怎么样?你会把这些旋转旋转吗?

提供您的思想,或者获得我们的社区版 www.nuodb.com/dev-center/community-edition-download.

对Nuodb的分布式SQL数据库感兴趣,并希望知道如何运作?下载我们的白皮书 诺博德的数据库架构.

---

Boris Bulanov..作为技术的VP,Boris Bulanov与战略客户在设计和部署下一代,基于云的企业系统方面,并指导在关键账户中采用Nuodb的突破性数据库技术。 

Boris的20多年的经验跨越了一系列学科,包括企业应用和金融服务和电信系统。他的专业知识包括设计和实现高性能应用,架构大规模系统和不断发展的企业架构。 

(这篇文章最初发表于2017年,并已更新。)