美文网首页2019武汉写作课
MongoDB适用什么场景?

MongoDB适用什么场景?

作者: 大路无疆 | 来源:发表于2019-10-01 23:08 被阅读0次

自加入项目以来,一直觉得MongoDB不太适合做业务系统的主数据库,它是导致目前主要的逻辑都是面向JSON的数据处理,而不是面向业务领域的模型开发的主要原因。客户当初选择MongoDB也只是为了方便将对象以文档的方式持久化和反序列化,而并没有考虑存储的数据需要支持的业务场景(目前没有足够的用户去收集需求是原因之一),这样也导致了整个分层应用中,前台应用的数据模型和后台应用的业务模型强绑定,页面发送什么样的数据,后台进行简单的校验处理,然后将数据基本原封不动的持久化到MongoDB。当今天碰到一个需要给对象加序列ID的需求,发现没有原生支持,需要自己设计分布式同步序列时,越发迫切的想引入一个关系型数据库。那为了避免以后落入类似的窘境里,什么时候可以考虑使用MongoDB呢?

首先我们来看MongoDB的数据结构和数据检索的方式:

MongoDB中的数据以文档的方式存储,文档也就是BSON(Binary JSON)结构的数据。相较与JSON,它有更快的遍历速度,对数据更简易的操作和更多的数据类型几大特点。MangoDB中存储的数据结构灵活,没有schema限制。下图展示了内嵌结构的BSON数据(每条记录都有自动分配的哈希ID作为唯一标识):

在搜索方面,MongoDB支持在属性以及嵌套属性上灵活创建索引,用户可以从文档结构中进行各种灵活的匹配对结果进行过滤,具体的搜索语法可参考官方文档。MongoDB另一个强大的功能是按地理位置索引,只要文档集合中有地理位置坐标,用户可以搜索指定坐标附近的相关记录,也可搜索坐标指定范围内匹配的结果,具体的搜索语法参考官方文档,因此对于基于地理位置的应用,可以提供很强大的开箱即用的功能,同时官方文档也很全面。但是,你也可以发现,MongoDB的检索都是对某一个数据集合进行操作,任何跨集合的操作都需要引用来实现。这表明在设计系统时,你需要在搜索性能和存储空间中做出权衡。要么使用嵌套的方式,直接存储引用对象的值方便索引,要么牺牲查询性能只存储引用,再通过引用进行二次检索,严格的说通过二次查询还会限制检索的自由度。比如上面的例子中,如果班级列表中存储的是引用,那么就无法直接索引出所有要在201教室上课的全部学生。

从开发和维护角度,MongoDB也拥有众多的亮眼特性:支持复制和故障恢复,支持分片可以构建高可用集群,易伸缩,支持多平台,多语言驱动和良好的文档支持。

综合以上特性,我认为MongoDB在以下场景下更适用:

不确定业务模型,快速验证的原型项目。

高写负载的场景,存储评论,日志等大规模的非核心业务数据。

大规模或可能爆发式增长的非结构化数据存储。

大数据量缓存。

基于位置的查询业务。

不适用如下场景:

复杂的业务查询,比如需要复杂的连表查询,这个领域还是RDB的天下。

强事务一致性系统。

相关文章

  • MongoDB适用什么场景?

    自加入项目以来,一直觉得MongoDB不太适合做业务系统的主数据库,它是导致目前主要的逻辑都是面向JSON的数据处...

  • MongoDB适用场景

    更高的写入负载 默认情况下,MongoDB更侧重高数据写入性能,而非事务安全,MongoDB很适合业务系统中有大量...

  • MongoDB 适用场景

    MongoDB (名称来自"humongous") 是一个可扩展的高性能,开源,模式自由,面向文档的数据库。Mon...

  • MongoDB适用业务场景

    一、web 应用程序 web应用的业务特点是读写请求都比较高,数据存储需要适应业务的扩展。传统的关系型数据库...

  • 对比MySQL,什么场景MongoDB更适用

    1.更高的写入负载 默认情况下,MongoDB更侧重高数据写入性能,而非事务安全,MongoDB很适合业务系统中有...

  • 对比MySQL,什么场景MongoDB更适用

    MongoDB已经流行了很长一段时间,相对于MySQL,究竟什么场景更需要用MongoDB?下面是一些总结。 更高...

  • MongoDB及其适用场景

    概念特征:MongoDB是一个基于分布式文件存储的数据库,由C++编写,使用二进制数据存储,文件存储格式为BSON...

  • mogodb学习报告(一)

    概述 MongoDB是什么? MongoDB的作用,使用场景? MongoDB的使用方式? MongoDB是什么,...

  • MongoDB 比较适用哪些业务场景?

    关注点赞,养成习惯。 在云栖社区上发起了一个 MongoDB 使用场景及运维管理问题交流探讨的技术话题,有近500...

  • MongoDB的适用场景及优缺点

    MongoDB文档型数据库,现将MongoDB比较适用的场景做一个总结,供参考。 1、各种应用服务的日志存储,Mo...

网友评论

    本文标题:MongoDB适用什么场景?

    本文链接:https://www.haomeiwen.com/subject/lnjeyctx.html