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

||

2019年4月2日,英特尔Optane持久存储器成为第一个商业上可获得的存储类内存(SCM)。SCM是一个存储在内存总线上的存储设备;相比之下,SSD等传统存储设备附加到PCIe总线。我们有兴趣SCM,更接近CPU,影响真实应用的性能。我们比较了MongoDB的存储引擎WireTiger在两个Op亚博贵宾会贴吧tane存储设备上的性能:一个包装为SCM,另一个包装为SSD。虽然这些设备以原始形式访问的方式提供了众异,但它们在整个软件堆栈(包括操作系统,文件系统和应用程序)下的性能并不不同,因为内存高速缓存有效屏蔽延迟。亚博科技彩票yabogame

获取存储引擎准备快速存储设备

||Wiredtiger.贮存表现

固态驱动器今天比十年前更快的数量级。存储级存储器(SCM)坐在内存总线上,甚至进一步降低I / O延迟。硬件访问曾经是瓶颈,软件开销现在可以占主导地位。亚博科技彩票yabogame有关I / O延迟的大部分,系统调用和文件系统的内务管理帐户。研究人员和从业者调查了在不放弃使用现成的操作系统和文件系统的方便时绕过这些缺陷的方式。在Mo亚博贵宾会贴吧ngoDB,我们将WireTtiger存储引擎转换为使用内存映射的文件而不是系统调用I / O,并批处理文件系统管理操作的开销。这些在一些I / O密集型基准测试中,这些变化的性能提高了63%。

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

||译者安特尔尔罗盘BSON.教学工具聚集管道编译器工程

Compass Team已经写了一款轻量级,可扩展的转换器,可将BSON与任何语言翻译。此工具允许开发人员用一种语言工作,同时能够将它们构建的查询和聚合导出到其他语言。大多数编译器是一对一,或更少,一对多或多对一。几乎没有任何多对多的委托。为避免必须从划痕开始,我们利用了开源解析工具ANTLR,该工具ANTLR为我们提供了一组编译工具以及我们所需语言的预先存在的语法。我们通过提出一个创意的类层级来成功地减少了额外的复杂程度,这减少了N²所需的工作量。

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

||表现测试EC2.CPU选项性能分析

努力提高重复性,MongoDB性能团队旨在降低在EC2实例上运行的几种性能测试套件上的亚博贵宾会贴吧噪音。在思考我们的假设和实验设置之后,我们开始记录有关我们当前设置的数据,并且没有发现特别好的EC2实例的证据。在下一步中,我们调查了IO,发现EBS实例是我们的稳定选择。由于磁盘所涉及的情况,这三个和最终实验发现了一个非常稳定的行为,转向调整CPU相关的旋钮,以最大限度地减少系统的这一部分的噪声。

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

||性能分析表现EBS.IO.

努力提高重复性,MongoDB性能团队旨在降低在EC2实例上运行的几种性能测试套件上的亚博贵宾会贴吧噪音。在思考我们的假设和实验设置之后,我们开始记录有关我们当前设置的数据,并且没有发现特别好的EC2实例的证据。但是,我们发现重复测试的结果具有高方差。鉴于我们的测试数据和我们对生产系统的知识,我们观察到许多最嘈杂的测试是最多的IO(对IO延迟或带宽敏感)。执行第一个基线测试后,我们决定通过在这些实例上测试AWS实例类型和IO配置,专注于IO性能。

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

||性能分析表现EC2.测试

努力提高重复性,MongoDB性能团队旨在降低在EC2实例上运行的几种性能测试套件上的亚博贵宾会贴吧噪音。在项目开始时,目前尚不清楚我们在公共云中运行可重复的性能测试的目标是可实现的。我们决定衡量噪声本身,而不是根据假设和信仰辩论问题,并查看我们是否可以使配置更改以最小化。

在思考我们的假设和实验设置之后,我们开始录制有关我们当前设置的数据。

降低EC2上性能测试的可变性:设置和关键结果

||性能分析表现EC2.测试

在MongoD亚博贵宾会贴吧B性能团队中,我们使用EC2运行日常系统性能测试。在构建持续集成系统以进行性能测试后,我们意识到我们的平台和系统配置中的随机变化来源,这使得我们的结果不可重复。从平台运行变化的运行比我们想要捕获的MongoDB性能的变化更大。亚博贵宾会贴吧为了减少这种变化 - 环境噪声 - 从我们的测试配置开始,我们就预订了一个项目来测量和控制我们运行测试的EC2环境。

因果担保是休闲的

||分布式系统

传统数据库,因为他们服务从一个节点读取和写入,因此自然提供了称为“因果一致性”的读写操作的顺序排序保证。分布式系统可以提供这些保证,但为了执行此操作,它必须在所有节点上协调和订购相关事件,并限制某些操作如何完成。虽然当时所有数据排序保证都保存了所有数据排序保证时,但是即使系统遇到节点崩溃或网络分区等故障时,也可以更容易理解,但是存在许多合法一致性和所有系统所需的合法一致性和耐久性权衡。

亚博贵宾会贴吧MongoDB一直不断跑步 - 和通过 -Jepsen测试多年。最近,我们一直在与之合作杰森团队测试因果关系。在他们的帮助下,我们了解了如果您对数据吞吐量和新近度交易一致性保证,则会如何复杂。

用libabigail修剪动态重建

||C ++开源优化

复杂的C ++项目经常与冗长的构建时间斗争。将项目分成多个动态链接组件可以为开发人员提供更快的增量重建和更短的编辑编译 - 测试周期,而不是依赖于静态链接,尤其是当有大量的测试二进制文件时。但是,由于如何处理传递库依赖性,构建系统通常不会实现动态增量重建中的所有可能的增益。Red Hat的Abi Introspection图书馆libabigail.提供一个可能的路径,以消除某些类源修改的不必要的传递重新链接。

考虑到介绍官方MongoDB的社区效应亚博贵宾会贴吧

||戈兰司机开源

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

提交修补程序通常是第一个选项,但您处于维护者的ercy接受它们。如果您需要的更改扫描,更改,接受的几率很低。最终,只留下一些现实选项:找到另一种选择,叉子项目,或写自己的替代品。依赖开源的每个人都在一个或另一个时间面对这个难题。

在依赖社区开发的年后Mgo Go Driver.对于Mo亚博贵宾会贴吧ngoDB,MongoDB已开始在全新的内部开发的开源转向司机上工作。我们知道,释放公司赞助的替代方案成功,社区开发的项目为用户创造了紧张和不确定性,所以我们没有轻松地决定。我们仔细考虑了我们的选择如何影响MongoDB的当前和未来的用户。亚博贵宾会贴吧