MongoDB - 简单了解
什么是 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 - 简单了解的更多相关文章
- MongoDB学习:(二)MongoDB简单使用
MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...
- mongodb 简单部署方案及实例
mongodb 简单部署方案及实例 转载:http://my.oschina.net/zhuzhu0129/blog/53290 第一节 准备工作 一 安装mongodb 我这里选用rehl 5.6 ...
- .Net Core MongoDB 简单操作。
一:MongoDB 简单操作类.这里引用了MongoDB.Driver. using MongoDB.Bson; using MongoDB.Driver; using System; using S ...
- python和mongodb简单交互
python和mongodb简单交互 1.安装pymongo: pip3 install pymongo 2.pymongo的简单用法: # /usr/bin/env python3 import p ...
- MongoDB简单CRUD场景
MongoDB简单CRUD命令操作 (1)新建数据库:use 数据库名 (2)显示所有数据库:show dbs; (3)新建集合(两种方式) 隐式创建:在创建集合的同时往集合里面添加数据---db. ...
- NodeJS+Express+MongoDB 简单实现数据录入及回显展示【适合新人刚接触学习】
近期在看NodeJS相关 不得不说NodeJS+Express 进行网站开发是很不错,对于喜欢玩JS的来说真是很好的一种Web开发组合 在接触NodeJS时受平时Java或者C#中API接口等开发的思 ...
- 存储库-MongoDB简单的操作
简介: MongoDB是一款强大.灵活.且易于扩展的通用型数据库 1.易用性 MongoDB是一个面向文档的数据库,而不是关系型的数据库: 不采用关系型主要是为了可扩展性 2.易扩展性 存储在Mong ...
- nodejs+express+mongodb简单的例子
简单的介绍下node+express+mongodb这三个东西.node:是运行在服务器端的程序语言,表面上看过去就是javascript一样的东西,但是呢,确实就是服务器语言,个人觉得在一定层次上比 ...
- scrapy使用MongoDB简单示例
1.下载安装MongoDBhttps://www.mongodb.com/download-center#community找到合适的版本下载,安装.安装好之后,找到安装目录下D:\Program F ...
- MongoDB简单使用 —— 安装
下载 MongoDB的下载路径为:MongoDB Download Center.Win.Linux.Mac平台的都有,光Win平台的就提供msi和zip绿色版本的,这里我下载的是zip版本的. 命令 ...
随机推荐
- 关于Redis在windows上运行及fork函数问题
Redis在将数据库进行持久化操作时,需要fork一个进程,但是windows并不支持fork,导致在持久化操作期间,Redis必须阻塞所有的客户端直至持久化操作完成.微软的一些工程师花费时间在解决在 ...
- 深入分析JVM执行引擎
程序和机器沟通的桥梁 一.闲聊 相信很多朋友在出国旅游,或者与外国友人沟通的过程中,都会遇到语言不通的烦恼.这时候我们就需要掌握对应的外语或者拥有一部翻译机.而笔者只会中文,所以需要借助一部翻译器才能 ...
- Html飞机大战(五):主角登场(英雄类编辑)
好家伙, 遇到了一些非常奇怪的bug index.html:179 Uncaught TypeError: Failed to execute 'drawImage' on 'CanvasRender ...
- KingbaseES 数据脱敏功能介绍
数据脱敏,指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护. KingbaseES主要提供动态数据脱敏功能. 动态数据脱敏(Dynamic Data Masking)是与生产环境 ...
- immutable 与 stable 函数的差异
Stable 函数不能修改数据库,单个Query中所有行给定同样的参数确保返回相同的结果.这种稳定级别允许优化器将多次函数调用转换为一次.在索引扫描的条件中使用这种函数是可行的,因为索引扫描只计算一次 ...
- Linux云主机安全入侵排查步骤
导语 经常有用户报障系统被植入恶意程序,如挖矿软件.ddos攻击病毒.syn映射攻击病毒等,可以按照以下流程为用户排查入侵病毒类型: 一.定位病毒进程 对于用户反馈云主机性能卡顿,CPU和内存占用较高 ...
- 一步步搞懂MySQL元数据锁(MDL)
某日,路上收到用户咨询,为了清除空间,想删除某200多G大表数据,且已经确认此表不再有业务访问,于是执行了一条命令'delete from bigtable',但好长时间也没删完,经过咨询后,获知dr ...
- js中new的原理
面向对象 在了解new的原理之前,先简单地了解一下构造函数和对象. js可以通过构造函数创建对象: function Test() { } var t = new Test(); 构造函数的首字母大写 ...
- thinkphp5.1中适配百度富文本编辑器ueditor
百度富文本编辑器ueditor虽然很老,但是功能齐全,我近期需要能批量粘贴图片的功能,但是找不到,很无奈.然后现在就分享一下如何把ueditor适配到thinkphp5.1,有知道如何批量上传图片的艾 ...
- 第六章:Django 综合篇 - 1:配置 Django
Django项目的设置文件位于项目同名目录下,名叫settings.py.这个模块,集合了整个项目方方面面的设置属性,是项目启动和提供服务的根本保证. 一.简述 settings.py文件本质上是一个 ...