定义:
MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。作为一个适用于敏捷开发的数据库,MongoDB的数据模式可以随着应用程序的发展而灵活地更新。与此同时,它也为开发人员 提供了传统数据库的功能:二级索引,完整的查询系统以及严格一致性等等。 MongoDB能够使企业更加具有敏捷性和可扩展性,各种规模的企业都可以通过使用MongoDB来创建新的应用,提高与客户之间的工作效率,加快产品上市时间,以及降低企业成本。
特性:
MongoDB是专为可扩展性,高性能和高可用性而设计的数据库。它可以从单服务器部署扩展到大型、复杂的多数据中心架构。利用内存计算的优势,MongoDB能够提供高性能的数据读写操作。 MongoDB的本地复制和自动故障转移功能使您的应用程序具有企业级的可靠性和操作灵活性。
• 模式自由,支持动态查询、完全索引,可轻易查询文档中内嵌的对象及数组。
• 面向集合存储,易存储对象类型的数据 , 包括文档内嵌对象及数组 。
• 高效的数据存储 , 支持二进制数据及大型对象 ( 如照片和视频 ) 。
• 支持复制和故障恢复;提供了主 - 从、主 - 主模式的数据复制及服务器之间的数据复制。
• 自动分片以支持云级别的伸缩性,支持水平的数据库集群,可动态添加额外的服务器。
使用场景:
1、日志系统,查找起来灵活,导出方便。因为MongoDB的schema-less,所有格式灵活,不用为了各种格式不一样的信息专门设计统一的格式,极大的减少开发的工作。
2、存储监控数据,No schema 对开发人员来说,真的很方便,增加字段不用改表结构,而且学习成本极低。
3、使用MongoDB做了O2O快递应用,将送快递骑手、快递商家的信息(包含位置信息)存储在 MongoDB,然后通过 MongoDB 的地理位置查询,这样很方便的实现了查找附近的商家、骑手等功能,使得快递骑手能就近接单,目前在使用MongoDB 上没遇到啥大的问题,官网的文档比较详细,很给力。
应用场景:
如果上述有1个 Yes,可以考虑 MongoDB,2个及以上的 Yes,选择MongoDB绝不会后悔。
MongoDB不能胜任的场景:
1、要求高度事务性的系统
2、传统的商业智能应用
3、复杂的跨文档(表)级联查询