我们用存储级内存替换了SSD。这是我们学到的。

||

2019年4月2日,Intel Optane持久内存成为第一款商用存储类内存(SCM)。SCM是位于内存总线上的存储设备;相比之下,SSD等传统存储设备连接到PCIe总线。我们感兴趣的是,SCM更接近CPU,如何影响实际应用程序的性能。我们比较了MongoDB的存储引擎WiredTiger在两种Optane存储设备上的性能:一种封装为SCM,另一种封装为SSD。尽管这些设备在以原始形式访问时提供了截然不同的性能,但它们在整个软件堆栈(包括操作系统、文件系统和应用程序)下的性能并没有那么大的不同,因为内存缓存有效地屏蔽了延迟。1888bet亚洲体育188金宝慱官网下载188金宝搏手机客户端安卓下载

为快速存储设备准备好存储引擎

||线规存储表演

如今,固态硬盘比十年前快了一个数量级。存储类内存(SCM)位于内存总线上,甚至可以进一步减少I/O延迟。在硬件访问曾经是瓶颈的地方,软件开销现在可能占主导地位。系统调用和文件系统内务管理占了大部分I/O延迟。研究人员和从业者研究了在不放弃使用现成操作系统和文件系统的便利性的情况下绕过这些缺点的方法。在MongoDB,我们将WiredTiger存储引擎转换为使用内存映射文件而不是系统调用I/O,并批量处理文件系统内务管理操作的开销。在一些I/O密188金宝慱官网下载1888bet亚洲体育集型基准测试中,这些更改将性能提高了63%。188金宝搏手机客户端安卓下载

任何编程语言之间的转换(第1部分)

||运输机ANTLR罗盘布森教学工具聚合管道编译程序工程

Compass团队已经编写了一个轻量级、可扩展的transpiler,可以将BSON翻译成任何语言,也可以从任何语言转换BSON。此工具允许开发人员使用一种语言工作,同时能够将他们构建的查询和聚合导出到其他语言。大多数编译器是一对一的,或者不太常见的一对多或多对一。几乎没有多对多的传送机。为了避免从头开始,我们利用了开源解析工具ANTLR,它为我们提供了一组编译器工具以及我们所需语言的现有语法。我们提出了一组创造性的类层次结构,将所需的工作量从n²减少到n²,从而成功地将额外的复杂性降至最低。

可重复的性能测试:最好禁用CPU选项

||表演测试EC2CPU选项性能分析

为了提高可重复性,MongoDB性能团队着手减少在EC2实例上运行的几个性能测试套件的188金宝搏手机客户端安卓下载噪音。在考虑了我们的假设和实验设置后,我们开始记录当前设置的数据,没有发现EC2实例特别好或特别坏的证据。在下一步中,我们调查了IO,发现EBS实例是我们的稳定选项。就磁盘而言,已经发现了非常稳定的行为,第三个也是最后一个实验转向调整与CPU相关的旋钮,以最小化系统这一部分的噪音。

可重复的性能测试:EBS实例是稳定的选项

||性能分析表演EBS木卫一

为了提高可重复性,MongoDB性能团队着手减少在EC2实例上运行的几个性能测试套件的188金宝搏手机客户端安卓下载噪音。在考虑了我们的假设和实验设置后,我们开始记录当前设置的数据,没有发现EC2实例特别好或特别坏的证据。然而,我们发现重复测试的结果有很高的方差。考虑到我们的测试数据和我们对生产系统的了解,我们观察到许多噪音最大的测试都会产生最多的IO(对IO延迟或带宽敏感)。在执行了第一次基线测试之后,我们决定通过在这些实例上测试AWS实例类型和IO配置来关注IO性能。

可重复的性能测试:EC2实例既不好也不坏

||性能分析表演EC2测试

为了提高可重复性,MongoDB性能团队着手减少在EC2实例上运行的几个性能测试套件的188金宝搏手机客户端安卓下载噪音。在项目开始时,还不清楚我们在公共云中运行可重复性能测试的目标是否能够实现。我们决定测量噪声本身,看看是否可以进行配置更改以将其最小化,而不是基于假设和信念来讨论这个问题。

在考虑了我们的假设和实验设置后,我们开始记录当前设置的数据。

减少EC2性能测试的可变性:设置和关键结果

||性能分析表演EC2测试

在MongoD188金宝搏手机客户端安卓下载B性能团队中,我们使用EC2运行日常系统性能测试。在为性能测试构建了一个持续集成系统之后,我们意识到我们的平台和系统配置中存在随机变化的来源,这使得我们的许多结果不可再现。平台的运行到运行的变化比我们想要捕获的MongoDB性能变化更大。为了减少测试配置中的这种变化(环境噪音),我们开始了一个项目,以测量和控制运行测试的EC2环境。

因果保证绝不是偶然的

||分布式系统

传统的数据库,因为它们服务于单个节点的读写操作,自然地为读写操作提供顺序保证,称为“因果一致性”。分布式系统可以提供这些保证,但为了做到这一点,它必须在其所有节点上协调和排序相关事件,并限制某些操作的完成速度。虽然因果一致性在所有数据排序保证得到保留时最容易理解——模仿垂直扩展的数据库,即使系统遇到节点崩溃或网络分区等故障时也是如此——但所有系统都需要进行许多合法的一致性和耐久性权衡。

188金宝搏手机客户端安卓下载MongoDB一直在不断地运行和传递-杰普森试验多年来。最近,我们一直在与犹太人团队负责测试因果一致性。在他们的帮助下,我们了解了如果用一致性保证换取数据吞吐量和最近性,故障模式会变得多么复杂。

用libabigail修剪动态重建

||C++开源优化

复杂C++项目经常与冗长的构建时间进行斗争。与依赖静态链接相比,将项目拆分为多个动态链接的组件可以为开发人员提供更快的增量重建和更短的编辑-编译测试周期,特别是在存在大量测试二进制文件的情况下。然而,由于构建系统如何处理可传递的库依赖关系,它们通常无法实现动态增量重建的所有可能收益。红帽的ABI自省库利巴比盖尔为某些类的源代码修改提供了一种消除不必要的可传递重新链接的可能途径。

考虑引入官方MongoDB Go驱动程序的社区效应188金宝搏手机客户端安卓下载

||戈兰司机开源

当您所依赖的开源项目不再满足您的需求时,您会怎么做?当你的选择不仅影响到你,而且影响到一个更大的社区时,什么样的原则指导你的决定?

提交补丁通常是第一个选择,但您是否接受它们取决于维护人员。如果你需要的改变是彻底的、实质性的改变,那么接受的几率很低。最终,只剩下几个现实的选择:找到替代方案,完成项目,或者编写自己的替代方案。每个依赖开源的人都会在某个时候面临这个难题。

经过多年对社区的依赖发展起来mgo围棋手对于Mo188金宝搏手机客户端安卓下载ngoDB,MongoDB已经开始开发一个全新的、内部开发的、开源的Go驱动程序。我们知道,发布一个由公司赞助的替代方案来替代一个成功的、社区开发的项目会给用户带来紧张和不确定性,所以我们并没有轻率地做出这个决定。我们仔细考虑了我们的选择将如何影响MongoDB当前和未来的Go用户。