NoSQL优缺点与MongoDB数据库简介


Posted in MongoDB onJune 05, 2022

一、NoSQL简介

互联网的迅速发展,这样大量的交互给数据库提出了更高的性能要求,传统的关系数据库虽然具备良好的事物管理,但在处理大量数据的应用时很难在性能上满足设计要求。NoSQL就是主要为了解决当下大量高并发高要求的数据库应用需求,由于关系数据库具有严格的参照性,一致性,可用性,原子性,隔离性等特点,因此会产生一些例如表连接等操作,这样会大大降低系统的性能。而在当前很多应用场景下对性能的要求远远强于传统数据库关注的点,NoSQL 就是为了解决大规模数据与多样数据种类等问题,尤其是中大数据的相关问题。

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,它指的是非关系型的数据库,是以key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求,比如说遵循SQL 标准、ACID 属性、表结构等等。NoSQL 最早被提出是在20 世纪80 年代,在当时更多是强调的是与关系数据库区别对待,最近这些年被提及的更多是强调协助解决大数据等相关问题,NoSQL 在大数据时代有自己的意义。

1、NoSQL 数据库适用于哪些情况?

  • (1). 数据模型比较简单;
  • (2). 需要灵活性更强的IT 系统;
  • (3). 对数据库性能要求较高;
  • (4). 不需要高度的数据一致性;
  • (5). 对于给定key,比较容易映射复杂值的环境。

2、什么时候建议使用NoSQL ?

  • (1). 对数据库高并发读写的需求;
  • (2). 对海量数据的高效率存储和访问的需求;
  • (3). 对数据库的高可扩展性和高可用性的需求。

3、NoSQL 和传统数据库有什么区别?

NoSQL属于非结构型数据库,没有行、列的概念,用JSON 来存储数据,集合就相当于“表”,文档就相当于“行”。

NoSQL优缺点与MongoDB数据库简介

4、NoSQL 有哪些种类?

  • 键值(Key-Value)存储数据库
    这一类数据库主要会用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单,易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/Value就显得效率低下了。如常见的Redis数据库,Memcached等
  • 列存储数据库
    这部分数据库通常用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。
  • 文档型数据库
    文档型数据库的灵感来自于Lotus Notes办公软件,而且它与键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如MongoDB,国内也有文档型数据库SequoiaDB,已经开源。
  • 图形(Graph)数据库
    图形结构的数据库同其他行列及刚性结构的SQL数据库不同,它使用灵活的图形模型,并且能够拓展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要特定的数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如Graph

二、MongoDB简介

参考地址

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。

Mongo 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、 易使用,存储数据非常方便。

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

NoSQL优缺点与MongoDB数据库简介

1、主要特点

  • MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
  • 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
  • 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
  • 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
  • Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
  • MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
  • Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
  • Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
  • Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
  • GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
  • MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
  • MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
  • MongoDB安装简单。

2、MongoDB 工具

有几种可用于MongoDB的管理工具。

监控

  • MongoDB提供了网络和系统监控工具Munin,它作为一个插件应用于MongoDB中。
  • Gangila是MongoDB高性能的系统监视的工具,它作为一个插件应用于MongoDB中。
  • 基于图形界面的开源工具 Cacti, 用于查看CPU负载, 网络带宽利用率,它也提供了一个应用于监控 MongoDB 的插件。

GUI

  • MongoDB Compass: 官方图形界面管理工具
  • NoSQL Manager for MongoDB: Windows的mongodb管理工具
  • RockMongo: 最好的PHP语言的MongoDB管理工具,轻量级, 支持多国语言

到此这篇关于NoSQL优缺点与MongoDB数据库的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。


Tags in this post...

MongoDB 相关文章推荐
MongoDB balancer的使用详解
Apr 30 MongoDB
MongoDB 常用的crud操作语句
Jun 20 MongoDB
MongoDB安装使用并实现Python操作数据库
Jun 28 MongoDB
mongodb的安装和开机自启动详细讲解
Aug 02 MongoDB
关于CentOS 8 搭建MongoDB4.4分片集群的问题
Oct 24 MongoDB
centos8安装MongoDB的详细过程
Oct 24 MongoDB
MongoDB连接数据库并创建数据等使用方法
Nov 27 MongoDB
MongoDB使用场景总结
Feb 24 MongoDB
MongoDB误操作后使用oplog恢复数据
Apr 11 MongoDB
MongoDB修改oplog大小的四种方法
Apr 11 MongoDB
NoSQL优缺点与MongoDB数据库简介
Jun 05 MongoDB
详解MongoDB排序时内存大小限制与创建索引的注意事项
May 06 #MongoDB
MongoDB数据库之添删改查
Mongodb 迁移数据块的流程介绍分析
SpringBoot集成MongoDB实现文件上传的步骤
Apr 18 #MongoDB
Centos系统通过Docker安装并搭建MongoDB数据库
MongoDB修改oplog大小的四种方法
Apr 11 #MongoDB
MongoDB支持的索引类型
Apr 11 #MongoDB
You might like
肝肠寸断了解下!盘点史上最伤心的十大动漫
2020/03/04 日漫
PHPlet在Windows下的安装
2006/10/09 PHP
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
2012/07/01 PHP
PHP header()函数使用详细(301、404等错误设置)
2013/04/17 PHP
php创建基本身份认证站点的方法详解
2013/06/08 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
深入理解JS正则表达式---分组
2016/07/18 Javascript
原生js编写2048小游戏
2017/03/17 Javascript
Node.js简单入门前传
2017/08/21 Javascript
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
微信小程序实现循环动画效果
2018/07/16 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
2017/09/24 Python
浅谈python jieba分词模块的基本用法
2017/11/09 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
浅谈Python 递归算法指归
2019/08/22 Python
python实现交并比IOU教程
2020/04/16 Python
本科生个人求职自荐信
2013/09/26 职场文书
工程类专业自荐信范文
2014/03/09 职场文书
致共产党员倡议书
2014/04/16 职场文书
优秀班组长事迹
2014/05/31 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
企业精神口号
2014/06/11 职场文书
最美孝心少年事迹材料
2014/08/15 职场文书
出纳工作检讨书
2014/10/18 职场文书
慰问信格式
2015/02/14 职场文书
辞职信的写法
2015/02/27 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL