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 相关文章推荐
SpringBoot整合MongoDB的实现步骤
Jun 23 MongoDB
常用的MongoDB查询语句的示例代码
Jul 25 MongoDB
mongodb的安装和开机自启动详细讲解
Aug 02 MongoDB
阿里云服务器部署mongodb的详细过程
Sep 04 MongoDB
MongoDB日志切割的三种方式总结
Sep 15 MongoDB
关于CentOS 8 搭建MongoDB4.4分片集群的问题
Oct 24 MongoDB
MongoDB连接数据库并创建数据等使用方法
Nov 27 MongoDB
mongoDB数据库索引快速入门指南
Mar 23 MongoDB
MongoDB误操作后使用oplog恢复数据
Apr 11 MongoDB
SpringBoot集成MongoDB实现文件上传的步骤
Apr 18 MongoDB
MongoDB数据库之添删改查
Apr 26 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
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
开源php中文分词系统SCWS安装和使用实例
2014/04/11 PHP
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
在PHP程序中使用Rust扩展的方法
2015/07/03 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
用jquery修复在iframe下的页面锚点失效问题
2014/08/22 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
2017/05/02 Javascript
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
2020/02/12 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
python中from module import * 的一个坑
2014/07/20 Python
Python heapq使用详解及实例代码
2017/01/25 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
python调用c++传递数组的实例
2019/02/13 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
片区教研活动总结
2014/07/02 职场文书
个人租房协议书样本
2014/10/01 职场文书
2015年除四害工作总结
2015/07/23 职场文书
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle