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 orm框架的注意事项及简单使用
Jun 20 MongoDB
SpringBoot整合MongoDB的实现步骤
Jun 23 MongoDB
浅析MongoDB之安全认证
Jun 26 MongoDB
MongoDB安装使用并实现Python操作数据库
Jun 28 MongoDB
mongodb清除连接和日志的正确方法分享
Sep 15 MongoDB
关于CentOS 8 搭建MongoDB4.4分片集群的问题
Oct 24 MongoDB
剖析后OpLog订阅MongoDB的数据变更就没那么难了
Feb 24 MongoDB
MongoDB误操作后使用oplog恢复数据
Apr 11 MongoDB
MongoDB修改oplog大小的四种方法
Apr 11 MongoDB
Centos系统通过Docker安装并搭建MongoDB数据库
Apr 12 MongoDB
Mongodb 迁移数据块的流程介绍分析
Apr 18 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
php 执行系统命令的方法
2009/07/07 PHP
PHP 动态随机生成验证码类代码
2010/04/09 PHP
8个出色的WordPress SEO插件收集
2011/02/26 PHP
php XPath对XML文件查找及修改实现代码
2011/07/27 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
jQuery控制网页打印指定区域的方法
2015/04/07 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
2016/01/08 Javascript
JavaScript调试的多个必备小Tips
2017/01/15 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
Bootstrap栅格系统的使用详解
2017/10/30 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
将Emacs打造成强大的Python代码编辑工具
2015/11/20 Python
Python爬虫模拟登录带验证码网站
2016/01/22 Python
python安装numpy&安装matplotlib& scipy的教程
2017/11/02 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
python和shell获取文本内容的方法
2018/06/05 Python
详解python中各种文件打开模式
2020/01/19 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
HTML5图片预览实例分享
2014/06/04 HTML / CSS
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
试述DBMS的主要功能
2016/11/13 面试题
30年同学聚会感言
2014/01/30 职场文书
小学生三分钟演讲稿
2014/08/18 职场文书
学习焦裕禄同志为人民服务思想汇报
2014/09/10 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
实名检举信范文
2015/03/02 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书
python中24小时制转换为12小时制的方法
2021/06/18 Python
Python 中的Sympy详细使用
2021/08/07 Python
解决Mysql中的innoDB幻读问题
2022/04/29 MySQL