一、简介
1.丰富的数据类型
MongoDB是一种非关系型数据库,是面向文档的数据库。
MongoDB没有模式,文档的键不会事先定义,也不会固定不变,由于 没有模式需要修改,通常不需要迁移大量数据,应用层可以处理新增和丢失的键,这样开发者可以非常容易的变更数据模型。
2.容易扩展
MongoDB从最初设计的时候就考虑到了扩展的问题,它所采用的面向文档的数据模型,使其可以自动在多台服务器之间分割数据。它还可以平衡集群的数据和负载,自动重排文档。这样开发者就可以专注于编写应用,而不是考虑如何扩展,要是需要更大的容量,只需在集群中添加数据,然后让数据库处理剩下的事情。
3.丰富的功能
■ 索引:MongoDB支持通用辅助索引,能进行多种快速查询。
■ 存储JavaScript:开发人员不必使用存储过程了,直接在服务端存取JavaScript的函数和值
■ 聚合:支持MapReduce和其他聚合工具
■ 固定集合:集合的大小是有上限的
■ 文件存储:支持用一种容易使用的协议存储大型文件和文件的元数据
4.不牺牲速度
卓越的性能是MongoDB的主要目标。MongoDB使用MongoDB协议作为与服务器交互的主要方式(预与之对应的协议需要更多的开销,如HTPP/REST)。它对文档进行动态填充,预分配数据文件,用空间换取性能稳定。默认的存储引擎使用了内存映射文件,将内存管理工作交给操作系统区处理。动态查询优化器会记住执行查询的最高效方式。
5.简便的管理
MongoDB尽量让服务器自治来简化数据库的管理,除了启动数据库服务器之外,几乎没有什么必要的操作。如果主服务器挂掉了,MongoDB会自动切换到备份服务器,并且将备份服务器提升为活跃服务器。在分布式环境下,集群只需要知道新增加的节点,就会自动集成和配置新节点。