一、文档数据模型

  文档是一组属性名和属性的集合。相较于关系数据库复杂的规范化,面向文档的数据模型很容易以聚合的形式来表示数据。文档采用无Schema的形式,这种做法带来了一定的优势:首先,由应用程序,而非数据库来保证数据结构;其次,无Schema的模型允许用真正可变属性来表示数据。

二、即时查询

  即时查询:无需预先定义系统接受的查询类型。关系型数据库必备的性质,文档数据库提供了类似SQL查询的功能。但是,如Key-Value数据库不能实现即时查询功能。

三、二级索引

  通常采用B树实现类似RDBMS的索引,对查询进行优化。

四、复制

  MongoDB采用副本集(replica set)的拓扑结构提供复制功能。副本集将数据分布到多台机器上实现冗余,在服务器或网络故障时能够提供自动故障转移。复制功能还能用于扩展数据库的读能力(对于一个读密集的应用,可以把数据库读操作分散到副本集集群中的各台机器)。

  副本集由一个主节点(Primary node)和一个或多个从节点(secondary node)构成。当主节点down掉后,集群会选择一个从节点自动将它提升为主节点,先前的主节点恢复后变成一个从节点。主节点既能够读也能够写,而从节点是只读的。图中官方文档给出的当主节点故障后MongoDB处理方式。

五、速度和持久化折中

  通过开启Journaling日志记录,控制速度和持久化之间的平衡。

六、水平扩展能力

  水平扩展与垂直扩展。垂直扩展,升级硬件,已暂时消除数据库的性能瓶颈。优势在于简单、可靠。缺点:成本过高,硬件水平有限。

  水平扩展,通过集群,将数据分布到多台机器,而不是只提升单个节点的性能。优点:成本降低、可以降低故障带来的影响。

参考资料:MongoDB in Action,MongoDB文档

MongoDB的主要特性概述的更多相关文章

  1. MongoDB源码概述——内存管理和存储引擎

    原文地址:http://creator.cnblogs.com/ 数据存储: 之前在介绍Journal的时候有说到为什么MongoDB会先把数据放入内存,而不是直接持久化到数据库存储文件,这与Mong ...

  2. MongoDB学习笔记——概述

    概述 MongoDB是一个跨平台,面向文档的数据库.MongoDB创建的数据库可以实现高可用性,高性能,并且能够轻松拓展. MongodbDB的运行方式主要给予两个概念:集合(collection)和 ...

  3. MongoDB副本集学习(一):概述和环境搭建

    MongoDB副本集概述 以下图片摘自MongoDB官方文档:http://docs.mongodb.org/manual/core/replication-introduction/ Primary ...

  4. MongoDB复制集原理、环境配置及基本测试详解

    一.MongoDB复制集概述 MongoDB复制集实现了冗余备份和故障转移两大功能,这样能保证数据库的高可用性.在生产环境,复制集至少包括三个节点,其中一个必须为主节点,一个从节点,一个仲裁节点.其中 ...

  5. MongoDB 比较适用哪些业务场景?

      在云栖社区上发起了一个 MongoDB 使用场景及运维管理问题交流探讨的技术话题,有近5000人关注了该话题讨论,这里就 MongoDB 的使用场景做个简单的总结,谈谈什么场景该用 MongoDB ...

  6. 什么场景应该用 MongoDB(转)

    很多人比较关心 MongoDB 的适用场景,也有用户在话题里分享了自己的业务场景,比如: 案例1 用在应用服务器的日志记录,查找起来比文本灵活,导出也很方便.也是给应用练手,从外围系统开始使用Mong ...

  7. mongodb入门-关系型RDMS数据库对比及适用场景

    引言 最近工作接触到了mongodb数据库,记录下个人对其的理解和使用情况.虽然mongodb 出来的时间已经不短,但是相对mysql mssql oracle 这样传统的关系型数据库来说还是比较年轻 ...

  8. 什么场景应该用 MongoDB ?

    摘要: 月初在云栖社区上发起了一个 MongoDB 使用场景及运维管理问题交流探讨 的技术话题,有近5000人关注了该话题讨论,这里就 MongoDB 的使用场景做个简单的总结,谈谈什么场景该用 Mo ...

  9. MongoDB 比较适用哪些业务场景

    转载自:https://www.cnblogs.com/williamjie/p/10416294.html 在云栖社区上发起了一个 MongoDB 使用场景及运维管理问题交流探讨的技术话题,有近50 ...

随机推荐

  1. 关于ie6下拖动滚动条时,div抖动的问题解决

    你如果遇到了这个问题,算是你有福了. 首先说非ie6下的div不随滚动条变化而移动位置的. 1,首先在body中写足够多的文字,一直到浏览器出现滚动条.例如你可以拼命的放P,足够多的P标签 2建立一个 ...

  2. oracle分布式事务总结-转载

    基本概念 Local Coordinator:在分布事务中,必须参考其它节点上的数据才能完成自己这部分操作的站点. Global Coordinator:分布事务的发起者,负责协调这个分布事务. Co ...

  3. [VB.NET]Dictionary类

    字典类是一个很重要的类,尤其是对于数据的简单存储,查询,和处理. 废话不多说,简单记录下我探索的结果. 1. Dictionary内部索引是0基的.也就是说第一个元素的序号是0. 2. Public ...

  4. 关联规则挖掘之apriori算法

    前言: 众所周知,关联规则挖掘是数据挖掘中重要的一部分,如著名的啤酒和尿布的问题.今天要学习的是经典的关联规则挖掘算法--Apriori算法 一.算法的基本原理 由k项频繁集去导出k+1项频繁集. 二 ...

  5. 使用C#调用windows API入门

    一:入门,直接从 C# 调用 DLL 导出   其实我们的议题应该叫做C#如何直接调用非托管代码,通常有2种方法: 1.  直接调用从 DLL 导出的函数. 2.  调用 COM 对象上的接口方法 我 ...

  6. ApplePay

    ApplePay要在项目有里配置,,配置好项目之后,就剩下编码了,做ApplePay首先要检查设备是否支持ApplePay,支持 ApplePay的设备在 iPhone6及以后,  PKPayment ...

  7. No.004 Median of Two Sorted Arrays

    4. Median of Two Sorted Arrays Total Accepted: 104147 Total Submissions: 539044 Difficulty: Hard The ...

  8. com组件 Ieframe的主页锁定

    CLSID 里的ieframe的 shell OpenHomePage-> Command的默认项"C:\Program Files (x86)\Internet Explorer\i ...

  9. coffeeScript 语法总结

    CoffeeScript ---->安装node.js ---->安装coffeeScript 语句: 注意:没有分号,语句由新的一行结束:多条语句写到同一行时需要分号表示一条语句的结束( ...

  10. cacti快速安装

    一.cacti概述 1. cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户. ...