MongoDB简单介绍

来源:互联网 发布:美蓝漫画无法连接网络 编辑:程序博客网 时间:2024/06/05 17:20


MongoDB是一款强大、灵活,且易于扩展的通用型数据库。他能扩展出非常多的功能,如二级索引、范围查询、排序、聚合,以及地理空间索引。

一、关于MongoDB

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

二、MongoDB的特色


1.易于使用

MongoDB是面向文档的数据库,不是关系型数据库.放弃关系模型的主要原因就是为了获得更加方便的扩展性,还有其他的好处.

基本思路就是将原来”行”(row)的观念转化为更加灵活的”文档”(document)模型.面向文档的方式可以将文档或者数组内嵌进来,所以可以用一条记录表示非常复杂的层次关系.

MongoDB没有模式:文档的键不会事先定义也不会固定不变.由于没有模式需要更改,通常不需要迁移大量数据,不比将所有数据都放在一个模子里面,应用层可以处理新增或者丢失的键


2.易于扩展

由于开发者要存储的数据不断增长,就会面临选择:是升级数据库(买台更好的服务器),还是扩展数据库(将数据分散到很多的机器上).通常升级数据库是最省力气的做法,但价格不菲.

但是扩展不但经济而且还能持续增加:想要增加存储空间或者提升性能,只需要买台一般的服务器加入到集群中.

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


3.丰富的功能

MongoDB座位一款通用型数据库,除了能够创建、读取、更细和删除数据之外,还提供一系列不断扩展的独特功能。

  • 索引

    MongoDB支持通用二级索引,允许多种快速查询,且提供唯一索引、复合索引、地理空间索引,以及全文索引。

  • 聚合

    MongoDB支持“聚合管道”。用户通过简单的片段创建复杂的聚合,并通过数据库自动优化。

  • 特殊的集合类型

    MongoDB支持存在时间有限的集合,适用于那些将在某个时刻过期的数据,如会话(session)。类似的,MongoDB也支持固定大小的集合,用于保存近期数据,如日志。
  • 文件存储

    MongoDB支持一种非常易用的协议,用于存储大文件和文件元数据。

    4.卓越的性能

MongoDB的一个主要目标是提供卓越的性能,这很大程度上决定了MongoDB的设计。MongoDB能对文档进行动态填充,也能预分配数据文件以利用额外的空间来换取稳定的性能。MongoDB把尽可能多的内存用作缓存,试图为每次查询自动选择正确的索引。总之,MongoDB在各方面的设计都旨在保持它的高性能。

三、主要特点

    面向文档存储,易存储对象类型的数据, 包括文档内嵌对象及数组。    模式自由,支持动态查询、完全索引,可轻易查询文档中内嵌的对象及数组。    支持动态查询。mongoDB支持丰富的查询表达式,查询指令使用json形式表达式。    完整的索引支持。mongoDB的查询优化器会分析查询表达式,并生成一个高效的查询计划。    高效的数据存储,支持二进制数据及大型对象(如照片和视频)    支持复制和故障恢复,提供了主-从、主-主模式的数据复制及服务器之间的数据复制    自动分片以支持云级别的伸缩性,支持水平的数据库集群,可动态添加额外的服务器。

四、使用场景

     适合作为信息基础设施的持久化缓存层     适合实时的插入,更新与查询,并具备应用程序实时数据存储所需的复制及高度伸缩性     适合文档化格式的存储及查询     适合由数十或数百台服务器组成的数据库

五、不适用场景

     适合作为信息基础设施的持久化缓存层     适合实时的插入、更新与查询,并具备应用程序实时数据存储所需的复制及高度伸缩性     适合文档化格式的存储及查询     适合由数十或数百台服务器组成的数据库
原创粉丝点击