什么是 NoSQL

NoSQL 是一种非关系型数据库管理系统,不需要固定的架构,可以避免 JOIN 连接,并且易于扩展。

NoSQL 常用于具有庞大数据存储需求的分布式数据存储,通常是大数据和实时 Web 应用程序等场景。

对于海量数据,使用 RDBMS 处理是会导致系统响应时间变慢,一般的替代方案都是在负载增加时横向扩展到其他的服务器上,而 NoSQL 比关系型数据库更容易扩展。

NoSQL 的功能和优点主要是以下几点:

  • NoSQL 数据库不遵循关系模型
  • NoSQL 数据库是无模式或具有宽松模式的数据库
  • NoSQL 提供简单的 API 作为存储和查询
  • NoSQL 可以以分布式方式执行,易于扩展

关于 MongoDB

MongoDB 是一个以 BSON 为数据模型的文档数据库,其中 BSON 是一种类 JSON 的二进制存储格式。

文档类似于 JSON 对象,其中存储的也是键值对的数据结构,字段的值也可以包括其他文档、数组和文档数组。

主要特点

  • 易于使用:建模不是必需的,类 JSON 数据模型仅用一条数据表示复杂的层次关系
  • 易于扩展:自带分片功能,完美支持横向扩展(更多机器),无需更改应用程序的逻辑
  • 功能丰富:支持通用的二级索引,支持聚合分析数据,支持生命周期有限集合,针对大文件存储等等功能
  • 性能卓越:使用多粒度锁尽可能提高并发和吞吐量,使用尽可能多的内存作为缓存,尽可能为查询自动选择正确的索引
  • 高可用:自带副本集的概念,支持自动故障转移和数据冗余,对读负载均衡非常友好
  • 支持多种存储引擎:自带 WiredTiger 存储引擎、内存存储引擎,并且提供可插拔的 API 允许第三方开发存储引擎

适用场景

MongoDB 主要有以下适用场景:

  • 作为应用数据库使用,类似于 Oracle、MySQL,由于其建模是非必需的,更适合创业公司快速迭代使用
  • 由于其性能较高,且易于扩展,也常用在大数据领域中,通常是用作海量数据处理及搭建数据平台

MongoDB 也有以下不适用场景:

  • 高度事务化的系统:需要大量原子性复杂事务的应用程序使用传统的关系型数据库会更好
  • 传统的商业智能应用:针对特定问题的 BI 数据库会产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择

技术优势总结

  • 类 JSON 结构和对象模型接近,开发代码量低
  • 类 JSON 的动态模型意味着更容易响应新的业务需求
  • MongoDB 原生支持的副本集提供 99.999% 高可用
  • MongoDB 使用分片架构支持海量数据和无缝扩容

MongoDB vs 关系型数据库

不同点 MongoDB RDBMS
数据模型 文档模型 关系模型
数据库类型 OLTP(联机事务处理) OLTP
CRUD MQL/SQL SQL
高可用 复制集 集群模式
横向扩展能力 原生分片完美支持 数据分区或者应用侵入式
索引支持 B 树
全文索引
地理位置索引
多键索引
TTL 索引
B+ 树
开发难度 容易 困难
数据容量 没有理论上限 千万、亿
扩展方式 垂直扩展 + 水平扩展 垂直扩展

MongoDB - 简单了解的更多相关文章

  1. MongoDB学习:(二)MongoDB简单使用

    MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...

  2. mongodb 简单部署方案及实例

    mongodb 简单部署方案及实例 转载:http://my.oschina.net/zhuzhu0129/blog/53290 第一节 准备工作 一 安装mongodb  我这里选用rehl 5.6 ...

  3. .Net Core MongoDB 简单操作。

    一:MongoDB 简单操作类.这里引用了MongoDB.Driver. using MongoDB.Bson; using MongoDB.Driver; using System; using S ...

  4. python和mongodb简单交互

    python和mongodb简单交互 1.安装pymongo: pip3 install pymongo 2.pymongo的简单用法: # /usr/bin/env python3 import p ...

  5. MongoDB简单CRUD场景

    MongoDB简单CRUD命令操作 (1)新建数据库:use 数据库名 (2)显示所有数据库:show dbs; (3)新建集合(两种方式)  隐式创建:在创建集合的同时往集合里面添加数据---db. ...

  6. NodeJS+Express+MongoDB 简单实现数据录入及回显展示【适合新人刚接触学习】

    近期在看NodeJS相关 不得不说NodeJS+Express 进行网站开发是很不错,对于喜欢玩JS的来说真是很好的一种Web开发组合 在接触NodeJS时受平时Java或者C#中API接口等开发的思 ...

  7. 存储库-MongoDB简单的操作

    简介: MongoDB是一款强大.灵活.且易于扩展的通用型数据库 1.易用性 MongoDB是一个面向文档的数据库,而不是关系型的数据库: 不采用关系型主要是为了可扩展性 2.易扩展性 存储在Mong ...

  8. nodejs+express+mongodb简单的例子

    简单的介绍下node+express+mongodb这三个东西.node:是运行在服务器端的程序语言,表面上看过去就是javascript一样的东西,但是呢,确实就是服务器语言,个人觉得在一定层次上比 ...

  9. scrapy使用MongoDB简单示例

    1.下载安装MongoDBhttps://www.mongodb.com/download-center#community找到合适的版本下载,安装.安装好之后,找到安装目录下D:\Program F ...

  10. MongoDB简单使用 —— 安装

    下载 MongoDB的下载路径为:MongoDB Download Center.Win.Linux.Mac平台的都有,光Win平台的就提供msi和zip绿色版本的,这里我下载的是zip版本的. 命令 ...

随机推荐

  1. 虚拟DOM解析及其在框架里的应用

    虚拟DOM解析及其在框架里的应用 浏览器是怎样解析HTML并且绘出整个页面的 上图为webkit引擎浏览器的处理流程,如上图大致分为4大步: 第一步,HTML解析器分析html,构建一颗DOM树: 第 ...

  2. 经典01背包问题(C++)--详解

    二维数组解决01背包问题 题目: 有 N 件物品和一个容量是 V 的背包.每件物品只能使用一次. 第 i 件物品的体积是 vi,价值是 wi. 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容 ...

  3. C#/VB.NET 创建PDF/UA文件

    1.什么是PDF/UA文件 PDF/UA,即Universally Accessible PDF,该格式的PDF文件是于2012年8月以ISO标准14289-1发布的.具有普遍可访问的PDF文档标准. ...

  4. [JOI 2017 Final] 足球 (建图,最短路)

    题面 题解 我们可以总结出球的两种状态,要么自己飞,要么在球员脚下被带飞. 自己飞的情况下,他只能单向直线运动,每一步代价为A,被带飞可以乱走,每一步代价为C. 从自己飞到被带飞需要一个距离自己最近的 ...

  5. 深入分析JVM执行引擎

    程序和机器沟通的桥梁 一.闲聊 相信很多朋友在出国旅游,或者与外国友人沟通的过程中,都会遇到语言不通的烦恼.这时候我们就需要掌握对应的外语或者拥有一部翻译机.而笔者只会中文,所以需要借助一部翻译器才能 ...

  6. Centos7 安装部署Kubernetes(k8s)集群

    目录 一.系统环境 二.前言 三.Kubernetes 3.1 概述 3.2 Kubernetes 组件 3.2.1 控制平面组件 3.2.2 Node组件 四.安装部署Kubernetes集群 4. ...

  7. 注解@PostConstruct分析

    作用 1.注解@PostConstruct可以添加在类的方法上面,如果这个类被IOC容器托管,那么在对Bean进行初始化前的时候会调用被这个注解修饰的方法 被定义在哪里? 1.被定义在了CommonA ...

  8. Mysql 安全加固经验总结

    本文为博主原创,转载请注明出处: 目录 1.内网部署Mysql 2. 使用独立用户运行msyql 3.为不同业务创建不同的用户,并设置不同的密钥 4.指定mysql可访问用户ip和权限 5. 防sql ...

  9. Elasticsearch:分布式计分

  10. 内网横向渗透 之 ATT&CK系列一 之 拿下域控制器

    信息收集 信息收集 域控制器的相关信息: 通过arp扫描发现域控制器的ip地址为:192.168.52.138,尝试使用msf的smb_login模块登录smb是否成功 1 search smb_lo ...