面向文档的 DBMS MongoDB 5.0 可用

发布了面向文档的 DBMS MongoDB 5.0,它在以键/值格式操作数据的快速且可扩展的系统与功能强大且易于形成查询的关系 DBMS 之间占据了一席之地。 MongoDB 代码是用 C++ 编写的,并在 SSPL 许可证下分发,该许可证基于 AGPLv3 许可证,但不开放,因为它包含在 SSPL 许可证下不仅交付应用程序代码本身,而且还交付源代码的歧视性要求提供云服务所涉及的所有组件的代码。

MongoDB 支持以类似 JSON 的格式存储文档,具有相当灵活的语言来生成查询,可以为各种存储属性创建索引,有效地提供大型二进制对象的存储,支持记录更改和向数据库添加数据的操作,可以按照 Map/Reduce 范式工作,支持复制和构建容错配置。

MongoDB 具有内置的分片工具(根据特定键将数据集分布在服务器之间),与复制相结合,允许您构建一个不存在单点故障(任何节点故障都不会影响)的水平可扩展存储集群。不影响数据库的运行),自动故障转移和从故障节点转移负载。 扩展集群或将一台服务器转换为集群无需停止数据库,只需添加新机器即可。

新版本的特点:

  • 添加了时间序列形式的数据集合(时间序列集合),优化用于存储按一定间隔记录的参数值切片(时间和与该时间对应的一组值)。 监控系统、金融平台和轮询传感器状态的系统都需要存储此类数据。 时间序列数据的处理与普通文档集合一样,但考虑到时间参考对其索引和存储方法进行了优化,可以显着减少磁盘空间消耗,减少执行查询的延迟并实现数据实时分析。

    MongoDB 将此类集合视为基于内部集合构建的可写、非物化视图,在插入时,会自动将时间序列数据分组为优化的存储格式。 在这种情况下,每个基于时间的记录在请求时都会被视为单独的文档。 数据按时间自动排序和索引(无需显式创建时间索引)。

  • 添加了对窗口运算符(分析函数)的支持,允许您对集合中的一组特定文档执行操作。 与聚合函数不同,窗口函数不会折叠分组集,而是根据“窗口”的内容进行聚合,该“窗口”包含结果集中的一个或多个文档。 为了操作文档子集,提出了一个新的 $setWindowFields 阶段,例如,您可以使用它确定集合中两个文档之间的差异、计算销售排名以及分析复杂时间序列中的信息。
  • 添加了对 API 版本控制的支持,允许您将应用程序绑定到特定的 API 状态,并消除在迁移到新的 DBMS 版本时可能违反向后兼容性的风险。 API 版本控制将应用程序生命周期与 DBMS 生命周期分开,并允许开发人员在需要使用新功能时(而不是迁移到新版本的 DBMS 时)对应用程序进行更改。
  • 添加了对实时重新分片机制的支持,该机制允许您动态更改用于分段的分片键,而无需停止 DBMS。
  • 客户端加密字段的可能性已得到扩展(客户端字段级加密)。 现在可以重新配置审核过滤器并轮换 x509 证书,而无需停止 DBMS。 添加了对配置 TLS 1.3 密码套件的支持。
  • 提出了一种新的命令行 shell,MongoDB Shell (mongosh),它正在作为一个单独的项目开发,使用 Node.js 平台用 JavaScript 编写,并在 Apache 2.0 许可证下分发。 MongoDB Shell 可以连接到 DBMS、更改设置和发送查询。 支持智能自动完成输入方法、命令和 MQL 表达式、语法突出显示、上下文帮助、解析错误消息以及通过附加组件扩展功能的能力。 旧的“mongo”CLI 包装器已被弃用,并将在未来的版本中删除。
    面向文档的 DBMS MongoDB 5.0 可用
  • 添加了新运算符:$count、$dateAdd、$dateDiff、$dateSubtract、$sampleRate 和 $rand。
  • 确保在 $expr 表达式中使用 $eq、$lt、$lte、$gt 和 $gte 运算符时使用索引。
  • aggregate、find、findAndModify、update、delete 命令以及 db.collection.aggregate()、db.collection.findAndModify()、db.collection.update() 和 db.collection.remove() 方法现在支持“let ” 选项定义变量列表,通过将变量与请求正文分开来使命令更具可读性。
  • 如果并行运行在文档集合上获取排它锁的操作,Find、count、distinct、aggregate、mapReduce、listCollections 和 listIndexes 操作将不再阻塞。
  • 作为删除政治不正确术语的举措的一部分,isMaster 命令和 db.isMaster() 方法已重命名为 hello 和 db.hello()。
  • 发布编号方案已更改,并且已过渡到可预测的发布时间表。 每年都会发布一次重要版本(5.0、6.0、7.0),每三个月发布一次具有新功能的中间版本(5.1、5.2、5.3),并根据需要进行错误修复和漏洞的纠正更新(5.1.1、5.1.2) .5.1.3、5.1)。 临时版本将为下一个主要版本构建功能,即MongoDB 5.2、5.3和6.0将为MongoDB XNUMX的发布提供新功能。

来源: opennet.ru

添加评论