MongoDB介绍
MongoDB是一个C++语言编写的开源NoSQL数据库,目的是为Web应用程序提供高性能、高可用性且易于扩展的数据存储解决方案。MongoDB是NoSQL数据库中最热门的一种,是一种文档型数据库,MongoDB易于扩展,表结构自由,高性能。
MongoDB历史
关系型数据库在很长时间里一直是数据库领域当之无愧的王者,例如MySQL,SQL Server和Oracle等,但在信息时代数据量的增大和Web2.0的数据结构复杂化情况下,关系数据库的缺陷也渐渐显露出来:
- 大数据处理能力差,关系型数据库被设计为单机运行,在海量数据处理方面代价高昂
- 程序产出效率低,程序开发时总是需要先设计数据库表结构
- 数据结构变动困难,互联网项目时刻都在发展和改变,但数据库改变一个字段往往牵一发而动全身
为了解决以上问题,NoSQL数据库出现了,这类数据库的主要特点是菲关系型,水平可扩展,分布式与开源,另外他们还具有模式自由,最终一致性等特点,区别于关系型数据库,这类数据库更容易存储海量数据。NoSQL常用的存储模式有key-value形式,文档形式,列形式,图形式,XML形式等,而MongoDB则是这类数据库中的一个代表。
MongoDB数据库是10gen团队于2007年10月开始开发,并与2009年2月首度推出,目的是成为一个灵活,高效,易于扩展,功能完备的数据库。经过这几年的发展,MongoDB已经趋于稳定,更多的公司开始使用MongoDB。
MongoDB特点
- 数据存储形式为BSON格式,一种类似JSON的形式
- 面向集合存储,易于存储JSON和对象类型数据
- 模式自由,一个集合可以存储不同类型的文档
- 支持动态查询,MongoDB支持以JSON形式的丰富动态查询
- 完整的索引支持
- 支持复制和故障恢复
- 二进制数据存储,MongoDB使用传统的高效二进制存储数据,可以将图片视频等转为二进制存储
- 自动分片,MongoDB支持自动分片,水平扩展
- 支持多种语言,C,C++,Python,Java,JS等
MongoDB应用
由于MongoDB可水平扩展和最终一致性的特性,因此适合以下场景:
- 海量,低价值的数据(允许一定丢失,例如日志等)
- 高伸缩性场景
- 用于对象和JSON数据的存储