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

||

2019年4月2日,英特尔Optane持久存储器成为第一个商业可用的存储级存储器(SCM)。单片机是位于内存总线上的存储设备;相比之下,传统的存储设备如SSD被附加到PCIe总线上。我们感兴趣的是,更接近CPU的SCM如何影响实际应用程序的性能。我们比较了MongoDB的存储引擎WiredTiger在两种O188金宝搏手机客户端安卓下载ptane存储设备上的性能:一种打包为SCM,另一种打包为SSD。尽管以原始形式访问这些设备时,它们的性能差别很大,但在整个软件堆栈(包括OS、文件系统和应用程序)下,它们的性能差别不大,因为内存缓存有效地屏蔽了延迟。1888bet亚洲体育188金宝慱官网下载

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

||wiredtiger存储性能

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

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

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

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

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

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

为了提高可重复性,MongoDB性能团队着手降低运行在EC2实例上的几个性能测试套件的188金宝搏手机客户端安卓下载噪音。在考虑了我们的假设和实验设置之后,我们开始记录当前设置的数据,并没有发现EC2实例特别好或特别坏的证据。在下一步中,我们研究了IO,发现EBS实例对我们来说是稳定的选项。在找到了一个非常稳定的磁盘行为之后,第三个也是最后一个实验将转向调优与CPU相关的旋钮,以最大限度地减少来自这部分系统的噪声。

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

||性能分析性能EBSIO

为了提高可重复性,MongoDB性能团队着手降低运行在EC2实例上的几个性能测试套件的188金宝搏手机客户端安卓下载噪音。在考虑了我们的假设和实验设置之后,我们开始记录当前设置的数据,并没有发现EC2实例特别好或特别坏的证据。然而,我们发现,反复试验的结果有较大差异。由于我们的测试数据和我们的生产系统的知识,我们已经观察到许多最嘈杂的测试做过的最IO(即到IO延迟,或带宽无论是大小写)。在执行第一基准测试之后,我们因此决定通过在这些情况下,同时测试AWS实例类型和IO配置把重点放在IO性能。

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

||性能分析性能EC2测试

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

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

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

||性能分析性能EC2测试

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

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

||分布式系统

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

188金宝搏手机客户端安卓下载MongoDB中已连续运行 - 并通过 -Jepsen测试多年。最近,我们一直在努力与Jepsen团队来测试因果一致性。在他们的帮助下,我们了解到如果为了数据吞吐量和近效性而牺牲一致性保证,故障模式会变得多么复杂。

修剪动态重建与libabigail

||C ++开源优化

复杂的c++项目经常与长时间的构建时间作斗争。与依赖静态链接相比,将项目分割为多个动态链接组件可以为开发人员提供更快的增量重构和更短的编辑-编译-测试周期,特别是在有大量测试二进制文件的情况下。但是,由于处理传递库依赖关系的方式,构建系统通常无法实现动态增量重构的所有可能收益。红帽的ABI内省库libabigail提供了一种可能的方法来消除对某些类源修改的不必要的传递重链接。

考虑引进的MongoDB的官方驱动围棋的社区影响188金宝搏手机客户端安卓下载

||golang司机开源

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

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

依托多年在社区开发后分别去司机对于Mo188金宝搏手机客户端安卓下载ngoDB来说,MongoDB已经开始开发一个全新的、内部开发的、开源的Go驱动程序。我们知道发布一个由公司赞助的替代方案来替代一个成功的社区开发的项目会给用户带来压力和不确定性,所以我们不会轻易做出这个决定。我们仔细考虑了我们的选择将如何影响当前和未来的MongoDB Go用户。188金宝搏手机客户端安卓下载