MongoDB的特点和适用场景

作者:姜健
链接:https://www.zhihu.com/question/20059632/answer/110863218
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

MongoDB的特点和适用场景

实用性

MongoDB是一个面向文档的数据库,它并不是关系型数据库,直接存取BSON,这意味着MongoDB更加灵活,因为可以在文档中直接插入数组之类的复杂数据类型,并且文档的key和value不是固定的数据类型和大小,所以开发者在使用MongoDB时无须预定义关系型数据库中的”表”等数据库对象,设计数据库将变得非常方便,可以大大地提升开发进度。

可用性和负载均衡

MongoDB在高可用和读负载均衡上的实现非常简洁和友好,MongoDB自带了副本集的概念,通过设计适合自己业务的副本集和驱动程序,可以非常有效和方便地实现高可用,读负载均衡。而在其他数据库产品中想实现以上功能,往往需要额外安装复杂的中间件,大大提升了系统复杂度,故障排查难度和运维成本。

扩展性

在扩展性方面,假设应用数据增长非常迅猛的话,通过不断地添加磁盘容量和内存容量往往是不现实的,而手工的分库分表又会带来非常繁重的工作量和技术复杂度。在扩展性上,MongoDB有非常有效的,现成的解决方案。通过自带的Mongos集群,只需要在适当的时候继续添加Mongo分片,就可以实现程序段自动水平扩展和路由,一方面缓解单个节点的读写压力,另外一方面可有效地均衡磁盘容量的使用情况。整个mongos集群对应用层完全透明,并可完美地做到各个Mongos集群组件的高可用性。

数据压缩

自从MongoDB 3.0推出以后,MongoDB引入了一个高性能的存储引擎WiredTiger,并且它在数据压缩性能上得到了极大的提升,跟之前的MMAP引擎相比,压缩比至少可增加5倍以上,可以极大地改善磁盘空间使用率。

其他特性

相比其他关系型数据库,MongoDB引入了”固定集合”的概念。所谓固定集合,就是指整个集合的大小是预先定义并固定的,内部就是一个循环队列,假如集合满了,MongoDB后台会自动去清理旧数据,并且由于每次都是写入固定空间,可大大地提升写入速度。这个特性就非常适用于日志型应用,不用再去纠结日志疯狂增长的清理措施和写入效率问题。另外需要更加精细的淘汰策略设置,还可以使用TTL索引(time-to-liveindex),即具有生命周期的索引,它允许为每条记录设置一个过期时间,当某条记录达到它的设置条件时可被自动删除。

在某些LBS的应用中,使用MongoDB也有非常巨大的优势。MongoDB支持多种类型的地理空间索引,支持多种不同类型的地理空间查询,比如intersection,within和nearness等。

MongoDB不适用的应用场景

在某些场景下,MongoDB作为一个非关系型数据库有其局限性。MongoDB不支持事务操作,所以需要用到事务的应用建议不用MongoDB,另外MongoDB目前不支持join操作,需要复杂查询的应用也不建议使用MongoDB。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB和Redis是两种不同类型的数据库,它们在使用场景上有所区别MongoDB是一种面向文档的NoSQL数据库适用于存储和查询半结构化数据。它通常用于以下场景: 1. 大规模数据存储和分析:MongoDB提供高度可扩展性和灵活的数据模型,适用于存储海量数据和复杂查询。 2. 高度动态的数据模型:MongoDB的文档模型允许数据结构和字段的灵活性,适用于应对数据模式频繁变化的情况。 3. 实时数据处理:MongoDB支持实时数据写入和查询,适用于需要快速响应和实时更新的应用场景。 4. 复杂的查询和聚合操作:MongoDB提供强大的查询和聚合功能,适用于需要复杂数据分析和处理的场景。 Redis是一种内存中的键值存储数据库适用于高性能和缓存相关场景。它通常用于以下场景: 1. 缓存:Redis可以将常用的数据缓存在内存中,提高读取速度并减轻后端数据库的负载。 2. 高速数据访问:Redis以内存为基础,读写速度非常快,适用于需要快速读取和写入数据的场景。 3. 发布/订阅系统:Redis提供了强大的发布和订阅功能,适用于构建实时消息系统或事件驱动的应用。 4. 计数器和排行榜:Redis支持原子操作和排序功能,适用于实时计数和排行榜等场景。 总之,MongoDB适用于大规模数据存储和复杂查询,而Redis适用于高性能缓存和快速数据访问。根据具体需求和数据特点,可以选择合适的数据库或结合两者的优势来满足应用需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值