我们替换为存储级内存的SSD。下面是我们学到了什么。

||

于2019年4月2日英特尔Optane持久存储器成为第一市售存储级存储器(SCM)。SCM是存储器总线上位于一个存储装置;与此相反,像SSD传统的存储设备连接到PCIe总线。我们感兴趣的是如何SCM,是更接近CPU,影响了实际应用的性能。我们比较了MongoDB的存储引擎WiredTiger的两个O亚博贵宾会贴吧ptane存储设备的性能:一个包装成供应链管理,另一种包装成SSD。虽然在原始形式,他们对整个软件栈下的性能,包括操作系统,文件系统和应用程序访问,当这些设备提供完全不同的表现,是没有什么不同,因为在内存中缓存有效地掩盖延迟。亚博科技彩票yabogame

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

||wiredtiger存储性能

固态硬盘是一个数量级的速度更快今天比十年前。存储类存储器(SCM)坐内存总线上,并进一步减少I / O延迟。凡曾经是瓶颈访问硬件,软件开销现在可能占据主导地位。亚博科技彩票yabogame系统调用和文件系统看家占太多的I / O延迟。研究人员和从业者调查的方式对这些缺点导航周围没有放弃使用过的,现成的操作系统和文件系统的便利性。在Mo亚博贵宾会贴吧ngoDB中,我们转换的WiredTiger存储引擎使用内存映射文件,而不是系统调用的I / O,以及批处理文件系统内务操作的开销。这些变化可节省高达63%,在某些I / O密集型基准测试更高的性能。

任何编程语言之间Transpiling(第一部分)

||TranspilersANTLR罗盘BSON教学工具聚合管道编译器工程

指南针团队已经写了一个轻量级的,可扩展的transpiler是BSON转换和从任何语言。这个工具允许开发人员工作在一种语言,同时能够导出他们建立其他语言的查询和聚合。大多数编译器是一个对一个,或不太常用,一个一对多或多对一的一个。有几乎没有任何许多一对多transpilers。为了避免从头开始,我们利用开源分析工具ANTLR这与已有的语法为我们所需要的语言以及一套编译工具为我们提供。我们通过想出一个创意组的类层次是减少需要从N²到n的工作量最小化成功的额外的复杂性的量。

重复性能测试:CPU的选择是最好禁用

||性能测试EC2CPU的选择性能分析

为了改善可重复性的工作,MongoDB的性能团队着手噪音减少对多项性能测试套件对EC2亚博贵宾会贴吧实例中运行。想着我们的假设,实验设置后,我们开始通过记录我们目前的设置数据,发现没有什么特别好的或坏的EC2实例的证据。在接下来的步骤中,我们研究IO,发现EBS情况下,对我们稳定的选项。已经找到了一个非常稳定的表现就盘而言,这第三个也是最后的实验轮流调整CPU与旋钮噪声系统的这部分减少。

重复性能测试:EBS情况下是稳定的选项

||性能分析性能EBSIO

为了改善可重复性的工作,MongoDB的性能团队着手噪音减少对多项性能测试套件对EC2亚博贵宾会贴吧实例中运行。想着我们的假设,实验设置后,我们开始通过记录我们目前的设置数据,发现没有什么特别好的或坏的EC2实例的证据。然而,我们发现,反复试验的结果有较大差异。由于我们的测试数据和我们的生产系统的知识,我们已经观察到许多最嘈杂的测试做过的最IO(即到IO延迟,或带宽无论是大小写)。在执行第一基准测试之后,我们因此决定通过在这些情况下,同时测试AWS实例类型和IO配置把重点放在IO性能。

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

||性能分析性能EC2测试

为了改善可重复性的工作,MongoDB的性能团队着手噪音减少对多项性能测试套件对EC2亚博贵宾会贴吧实例中运行。在项目的开始,现在还不清楚我们在公共云中运行的可重复的性能测试的目标是否是可以实现的。相反辩论基于假设和信念的问题,我们决定噪声测量本身,看看我们是否可以进行配置更改,以尽量减少它。

想着我们的假设,实验设置后,我们开始通过记录我们目前的设置数据。

减少对EC2性能测试中的变化:设置和主要成果

||性能分析性能EC2测试

在MongoD亚博贵宾会贴吧B的性能团队,我们使用EC2运行日常的系统性能测试。建立一个持续集成系统进行性能测试后,我们意识到有随机变化在我们的平台和系统配置的来源产生很多我们的研究结果的不可再现。从平台的运行变化的运行比变化MongoDB中的表现,我们想捕捉更大。亚博贵宾会贴吧为了减少这样的变化 - 环境噪音 - 从我们的测试配置中,我们设置了一个项目,测量和控制上,我们运行我们的测试的EC2环境。

因果的保证是什么,但休闲

||分布式系统

传统的数据库,因为他们的服务可以读取和单个节点的写入,自然提供了被称为“因果一致性”读取和写入操作的顺序排序保证。分布式系统可以提供这些保证,但为了做到这一点,就必须协调和为了在其所有节点的相关事件,并限制某些操作的速度完成。虽然因果一致性是最容易理解的,当所有的数据排序保证被保留 - 模仿垂直缩放数据库,即使像节点崩溃或网络分区的系统遇到故障 - 存在着许多合法的一致性和耐久性权衡所有系统都需要做。

亚博贵宾会贴吧MongoDB中已连续运行 - 并通过 -杰普森测试多年。最近,我们一直在努力与杰普森组队测试因果一致性。在他们的帮助,我们了解到,如果你交易一致性保证吞吐量数据和新近故障模式成为多么复杂。

修剪动态重建随着libabigail

||C ++开源优化

复杂的C ++项目,冗长的构建时间经常挣扎。拆分一个项目分成多个动态链接组件可以让开发人员更快的增量重建和更短的编辑 - 编译 - 测试周期不是依靠静态链接,尤其是当有大量测试的二进制文件。然而,构建系统通常不会在所有的动态增量重建的可能收益的实现,由于他们是如何处理的传递函数库的依赖。红帽公司ABI内省库libabigail报价一个可能的路径,以消除不必要的传递重新链接源修改的一些类。

考虑引进的MongoDB的官方驱动围棋的社区影响亚博贵宾会贴吧

||golang司机开源

当一个开源项目,你靠不再满足你的需求,你做什么?当你的选择会影响不只是你,但一个更大的社区,什么原则指导你的决定吗?

提交补丁往往是第一选择,但你在维护者的摆布接受。如果您需要更改扫地,实质性的改变,接受的几率很低。最终,只有少数现实的选择依然是:找到一个替代,叉项目,或写自己更换。大家谁依赖于开源面临这一难题,在同一时间或其他。

依托多年在社区开发后氧化镁转到司机Mong亚博贵宾会贴吧oDB的,MongoDB的已经开始了一个全新的,内部开发的,开源的围棋驱动工作。我们知道,释放公司赞助的替代成功,社区开发的项目为用户创造紧张和不确定性,所以我们没有轻易作出这个决定。我们仔细考虑了我们的选择会如何影响MongoDB的当前和未来的围棋用户。亚博贵宾会贴吧