5.1.2 MongoDB的特点

5.1.2 MongoDB的特点

MongoDB作为一个文档数据库,具有以下特点:

①数据文件存储格式为BSON(Binary JSON),一种JSON(JavaScript Object Notation)的扩展。{"greeting":"hello"}是BSON的例子,其中"greeting"是键,"hello"是值。键值对组成了BSON的格式的文档。

②面向集合存储,易于存储对象类型和JSON形式的数据。所谓集合(Collection)就是一组上述BSON格式文档的集合。

③模式自由。一个集合中可以存储一个键值对的文档,也可以存储多个键值对的文档,还可以存储键值不一样的文档,而且在生产环境下可以轻松增减字段而不影响现有程序的运行,具有良好的水平可扩展性。

④支持动态查询。MongoDB支持丰富的查询表达式,查询语句使用JSON形式作为参数,可以很方便地查询内嵌文档和对象数组。

⑤完整的索引支持。文档内嵌对象和数组都可以创建索引。

⑥支持复制和故障恢复。MongoDB数据库从节点可以复制主节点的数据,主节点所有对数据的操作都会同步到从节点,从节点的数据和主节点的数据完全一样。当主节点发生故障之后,从节点可以升级为主节点,也可以通过从节点对故障的主节点进行数据恢复。

⑦二进制数据存储。MongoDB使用传统高效的二进制数据存储方式,可以将图片文件甚至视频转换成二进制的数据存储到数据库中。

⑧自动分片。自动分片功能支持水平的数据库集群,可动态添加机器。

⑨支持多种语言。MongoDB支持C,C++,C#,JavaScript,Java,Python,Ruby,Scala等开发语言。

⑩使用内存映射存储引擎。MongoDB会把磁盘I/O操作转换为内存操作,如果是读操作,内存中的数据起到缓存的作用,如果是写操作,内存还可以把随机的写操作转换成顺序的写操作,大幅提升性能。这种做法的缺点是会占用大量内存。