您的位置:首页 > 数据库 > Mongodb

初识MongoDB

2016-01-26 17:29 225 查看
MongoDB是什么

MongoDB的名字源自一个形容词humongous(巨大无比的),使用C++开发,是一个高性能(high-performance),可扩展(scalable),开源(open source)的文档型存储(document-Oriented Storage)的NoSQL数据库,它扩展了关系型数据库的众多功能,如辅助索引,范围查询和排序, MongoDB的功能非常丰富,比如内置的对MapReduce式聚合的支持,以及对地理空间索引的支持。
 

MongoDB的关键特性有哪些

1.丰富的数据类型

[1].MongoDB是面向文档的数据库, 不是关系型数据库, 放弃关系型数据库的主要原因是为了获取更加方便的扩展性, 基本思路就是将原来的行的换成了更加灵活的“文档”(document)模型,面向文档的方式可以将文档或数组内嵌起来,所以一条记录就可以表示非常复杂的层次关系, 使用面向对象语言的开发者恰恰这么看待数据, 所以非常自然。
 
[2].MongoDB没有模式,文档的键不会事先定义也不会固定不变, 由于没有模式需要更改,通常不需要迁移大量数据,不必将所有数据都放到一个模子里面, 应用层可以出来新增或丢失的键,这样开发者可以非常容易的更改数据类型。
 

2.容易扩展

[1].MongoDB从最初设计时就考虑了扩展问题, 它所采用的面向文档的数据模型使其可以自动在多台服务器之间分割数据, 它还可以平衡集群的数据和负载,自动重排文档, 这样开发者就可以专注于编写应用, 而不是考虑如何扩展,要是需要更大得容量, 只需在集群中添加新机器即可。
 

3.丰富的功能

[1].索引
MongoDB支持通用辅助索引, 能进行多种快速查询, 能提供唯一的,复合和地理空间索引能力。

[2].存储JavaScript
开发人员不必使用存储过程了, 可以直接在服务器端存储javascript的函数和值了

[3].聚合
MongoDB支持MapReduce和其他聚合工具。

[4].固定集合
集合的大小是有上限的,这对某些类型的数据(比如日志)特别有用。

[5].文件存储
MongoDB支持用一种容易使用的协议存储大型文件和文件的元数据。

4.不牺牲速度

卓越的性能是MongoDB的主要目标, 也极大的影响了设计上的很多决定, MongoDB使用MongoDB传输协议作为与服务器交互的主要方式(与之对应的协议需要更多的开销,比如http/rest),它对文档进行动态填充, 预分配数据文件,用空间换取性能的稳定, 默认的存储引擎使用了内存映射文件, 将内存管理工作交给操作系统去完成, 动态查询优化器会“记住”执行查询的最高效的方式。

MongoDB的使用场景是什么

[1].Mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

[2].缓存:由于性能很高,Mongo也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源 过载。

[3].大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。

[4].高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对MapReduce引擎的内置支持。

[5].用于对象及JSON数据的存储:Mongo的BSON数据格式非常适合文档化格式的存储及查询。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: