介绍MongoDB 5.2的快速发布
MongoDB允许你使用单一的API来解决各种各样的数据工作负载。我们最新的快速版本--MongoDB 5.2--以这一愿景为基础,改进了查询人机工程学,增强了时间序列集合(在MongoDB 5.0中引入)、扩展性、操作弹性,以及允许团队就地执行更复杂分析的新功能。
时间序列集合的列式压缩
在MongoDB 5.0中引入的时间序列集合允许你轻松地摄入时间序列数据,并与你的运营或交易数据一起工作,而不需要在你的环境中集成一个单独的单一用途的数据库。5.2快速版本为MongoDB的时间序列集合引入了列式压缩。
时间序列用例--无论是设备监控、趋势观察还是预测--都需要在每次测量时将新数据插入数据库。在不断创建数据的情况下,庞大的数据量可能是惊人的,使其难以管理不断增长的存储足迹。
为了帮助团队实现高性能,同时保持资源效率,我们为时间序列集合引入了一些功能:
-
针对时间序列集合的新的列式压缩将帮助团队大幅减少他们的数据库存储足迹,通过一流的压缩算法,如delta、delta-of-delta编码、simple-8b、run-length编码等,减少多达70%的存储足迹。
-
对于使用MongoDB Atlas的团队来说,Atlas在线存档对时间序列集合的支持(在5.1快速版本中引入),使他们能够定义存档策略,自动将老化的数据从数据库中移出,进入成本较低、完全管理的云对象存储。
更好的查询人机工程学和运营分析的时间点查询
更有效的查询使开发人员的生活更轻松。随着MongoDB 5.2快速发布,我们正在引入新的操作符和增强功能,这将提高生产力、查询性能并减少解锁洞察力所需的查询次数。这也允许团队将更多的工作下推到数据库,减少开发人员需要编写和维护的代码量,同时限制应用程序中必须推回和操作的数据量。
新的累加器和表达式对数组进行排序
MongoDB 5.2带来了新的运算符,简化了你的查询。bottom运算符允许你计算一个数据集的顶部和底部元素,并在同一查询中返回相关字段,而无需复杂的逻辑。例如,假设你在分析销售业绩,想知道每个地区的顶级销售人员,包括他们的销售额。这些新的运算符可以帮助你在单个数据集中检索结果,包括原始数据集中的任何额外字段:
{$group: {
_id: "$region",
person: {$top: {output: ["$name", “$sales”], sortBy:
{“sales”:1}}
}}
Result:
{
{_id:’amer’, person: [‘Daniel LaRousse’, 100000]},
{_id:’emea’, person: [‘John Snow’, 1]},
{_id:’latam’, person: [‘Frida Kahlo’, 99]}
}
我们还引入了minN以及lastN等累加器,它们在返回元素的同时考虑到了数据集中文档的当前顺序。
新的**sortArray操作符来改变排序标准,而不需要额外的代码。
对整数数组进行排序
$sortArray: {
input: [3, 1, 4, 1, 5, 9],
sortBy: 1
}
Result: [1, 1, 3, 4, 5, 9]
对文件数组的排序
{
"team": [
{
"name": "kyle",
"age": 28,
"address": { "street": "12 Baker St", "city": "London" }
},
{
"name": "bill",
"age": 42,
"address": { "street": "12 Blaker St", "city": "Boston" }
}
]
一个简单的排序:"姓名 "升序
{$project: {
_id: 0,
result: {
$sortArray: {
input: "$team",
sortBy: {name: 1}
}
}
}
Output: {
"result": [
{
"name": "bill",
"age": 42,
"address": { "street": "12 Blaker St", "city": "Boston" }
},
{
"name": "kyle",
"age": 28,
"address": { "street": "12 Baker St", "city": "London" }
}
]
}
长期运行的快照查询现在普遍可用
你的应用程序现在可以执行复杂的分析查询,这些查询可以针对你的实时操作数据的全局和交易一致性快照运行长达24小时。即使数据在你脚下发生变化,MongoDB也能保持返回给你的用户的查询结果的时间点一致性,而不需要你在代码中实施复杂的调节控制。MongoDB Atlas中长期运行的快照查询的默认时间是5分钟,但可以在我们支持团队的帮助下进行更改。
查询可以跨越多个分片,解锁针对大型、分布式数据集的分析。通过将长期运行的查询路由到第二级,你可以将分析与交易查询隔离开来,两个工作负载都由同一个集群提供服务,避免了缓慢、复杂和昂贵的ETL到数据仓库。
查询结果可以直接返回到应用程序或缓存在物化视图中,为你的用户提供对深度分析的低延迟访问。典型的用途包括日终对账和报告,以及临时的数据探索和挖掘。所有这些使用情况现在都可以直接从你的交易数据层提供服务,极大地简化了你为多类工作负载提供服务所需的数据基础设施。
通过文件复制的更快初始同步来提高弹性
初始同步是指MongoDB中的复制集成员如何从现有成员中加载一份完整的数据副本。这个过程发生在用户向复制集添加新节点以提高弹性,或减少读取延迟或提高二次读取的可扩展性。初始同步也常用于恢复已经落后于集群中其他成员的复制集成员。在5.2之前,逻辑初始同步是执行初始同步的唯一选择。通过逻辑初始同步,源节点的每一个集合都被扫描,然后所有的文档都被插入到目标节点的匹配集合中(在文档插入的时候建立索引)。然而,利用逻辑初始同步的用户和客户,特别是那些试图同步大数据量的用户,已经报告了令人沮丧的长初始同步时间。
从5.2快速版本开始,我们增加了通过文件拷贝进行初始同步的选项,以显著提高初始同步的性能。通过这种方法,MongoDB会将文件从源节点的文件系统复制到目标节点的文件系统。这个过程可能比逻辑初始同步更快,特别是在较大的数据量下。在我们对630GB数据集的测试中,通过文件拷贝的初始同步比同一数据集的逻辑初始同步快了近4倍(4X)。这项新功能建立在我们为提高弹性和可扩展性所做的持续改进之上,包括初始同步在网络故障后自动恢复的能力,以及允许用户指定他们首选的初始同步源--两者都是在MongoDB 4.4中引入的。
通过文件拷贝的初始同步目前在MongoDB企业服务器中可用,并将很快在Atlas中可用。
使用MongoDB Analyzer for .NET增强开发者体验
最后,我们很高兴地宣布MongoDB Analyzer for .NET的发布,它使C#开发人员能够更容易地对查询和聚合进行故障诊断,并防止在运行时出现错误。MongoDB分析器建立在MongoDB .NET驱动程序的早期版本之上。它使开发人员更容易和更快地使用MongoDB与C#,包括一个完全重新设计的LINQ界面。
以前,C#开发人员能够使用Builders或LINQ表达式与MongoDB进行习惯性的交互,但在运行他们的代码之前,没有简单的方法来查看这些代码是否正确映射到MongoDB查询API。作为NuGet软件包下载,MongoDB分析器允许开发人员轻松查看他们的查询和聚合是否与查询API支持的表达式相对应。通过在代码开发过程中浮现出不支持的表达式,MongoDB分析器最终提高了开发人员的工作效率,并减少了调试的痛苦。
开始使用MongoDB 5.2
MongoDB 5.2现在已经推出。如果你正在运行Atlas无服务器实例,或者已经选择在你的专用Atlas集群中接收快速发布,那么从今天开始,你的部署将自动更新到5.2。在升级后的短时间内,功能兼容版本(FCV)将被设置为5.1;某些5.2功能将无法使用,直到我们增加FCV。MongoDB 5.2也可以作为开发版本从MongoDB下载中心获得,仅用于评估目的。与我们去年宣布的新的发布节奏一致,5.2和随后的快速发布中的功能将全部滚动到MongoDB 6.0中,我们的下一个主要发布计划在今年晚些时候交付。