对开发人员更友好
时间:2022-03-27 14:06:02 | 来源:行业动态
时间:2022-03-27 14:06:02 来源:行业动态
今天,MongoDB在全球范围得到了广泛应用,付费客户已经超过1.5万,社区服务器下载量超过7000万。这份成绩对于一个挑战者而言非常亮眼,但MongoDB显然并不满足于此,而是一直致力于拓展MongoDB的广泛应用。
实际上,MongoDB一直在努力完善各种能力以满足其在更广泛领域,尤其是关键业务领域中的应用,支持事务就是其中之一。众所周知,NoSQL数据库的关键特性是灵活性、可伸缩性,其代价却是缺乏一致性保证,因此,大部分NoSQL数据库并不具有事务能力,这也导致这些数据库无法在企业关键业务中应用。MongoDB用了6个版本来逐渐补齐这一能力。从3.0开始,MongoDB从最初的单文档事务、到多文档事务,最终在4.2版本中实现了对分布式事务的支持。而且在完善过程中,使用了同样的事务语法,比如MongoDB 4.2分布式事务与MongoDB 4.0的多文档事务完全相同,这意味着开发人员可以使用相同的关系式事务语法,在扩展分布式事务时,客户端代码不需要修改就能无缝迁移。
除了事务之外,通配符索引是MongoDB 4.2中新增的另一个亮点功能,利用MongoDB的这个能力,开发人员可以通过建立一个通配符索引来实现为所有特征字段建立索引,从而大大提高开发人员的开发效率。而在以往,这需要开发人员针对一个个字段分别建立索引,繁琐而且效率低。采用通配符索引不仅能加快应用的开发和发布速度,还能更好地支持各种创新性的应用。另外,有了通配符索引,查询也变得更简单。
支持片键值的修改也是MongoDB 4.2中新增的重要能力。作为在互联网时代诞生的新一代数据库产品,MongoDB的一大亮点就是其存储和访问海量数据的能力,这是依赖其分布式架构实现的,包括数据的分片、扩容/缩容时数据的自动均衡、分片信息的存取以及高可用,所有这些特性的集成使得数据库能从容应对海量数据的存储和访问需求。
数据的分片是由一个关键字段决定的,这就是片键,如果片键发生变化,传统的方式都是删除这条数据,然后再插入一条数据,确保新的数据能够被重新分布到正确的位置上。这种方式不仅麻烦,而且很难以保证原子性。MongoDB 4.2开始支持片键值的修改,也就是说开发者可以直接修改片键的值,修改后MongoDB会自动根据新的片键值将文档移动新的片上。对开发者而言,这既保证了原子性又大大简化了操作。比如,需要将数据移动到不同片上,或者需要将旧文档归档到低成本的存储上,直接修改片键的值就可以实现,从而大大提高了效率。
对开发者而言,MongoDB 4.2中的改进远不止这些,其故障处理能力也得到了进一步的简化。在分布式网络环境中开发应用,开发者必须在代码中处理网络故障。比如针对网络抖动,开发者必须编写代码来捕捉和处理这类故障。为了让开发更快捷,从MongoDB 3.6开始引入了自动写重试功能,当网络故障或发生MongoDB选举导致无法写入时,无需开发者来处理,MongoDB 的驱动会自动重试。现在MongoDB 4.2更上一层楼,引入了读重试功能,当遇到网络故障或主节点选举时,驱动会自动重试一次,而且MongoDB 4.2将写重试作为默认设置。
如果说读写重试的引入是简化了开发者的工作,那么Chart的正式发布则是直接帮助开发者完成了MongoDB报表开发工作。传统上要开发MongoDB的报表,要么需要自己写代码,要么使用第三方BI工具来实现,现在有了MongoDB Chart,开发者无需编写一行代码,只需简单的拖拽,就可以在Chart中直接完成MongoDB数据报表,甚至可以把生成的报表嵌入到应用里直接展现,从而使创建MongoDB报表的时间从原来几天到现在的几分钟。而且,Chart可以直接识别MongoDB集合中的数据模型,指定从某个节点或分析节点来读取数据,这样能避免影响在线业务的进行。