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数据库常用的10条操作命令
Jun 18 MongoDB
MongoDB orm框架的注意事项及简单使用
Jun 20 MongoDB
MongoDB安装使用并实现Python操作数据库
Jun 28 MongoDB
mongodb清除连接和日志的正确方法分享
Sep 15 MongoDB
MongoDB连接数据库并创建数据等使用方法
Nov 27 MongoDB
SpringBoot 整合mongoDB并自定义连接池的示例代码
Feb 28 MongoDB
一次线上mongo慢查询问题排查处理记录
Mar 18 MongoDB
mongoDB数据库索引快速入门指南
Mar 23 MongoDB
MongoDB误操作后使用oplog恢复数据
Apr 11 MongoDB
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
PHP 开源框架22个简单简介
2009/08/24 PHP
基于php权限分配的实现代码
2013/04/28 PHP
探寻PHP脚本不报错的原因
2014/06/12 PHP
php以post形式发送xml的方法
2014/11/04 PHP
PHP实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
JS trim去空格的最佳实践
2011/10/30 Javascript
jQuery跨域问题解决方案
2015/08/03 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
Bootstrap3 datetimepicker控件使用实例
2016/12/13 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
python调用java的Webservice示例
2014/03/10 Python
介绍Python的Urllib库的一些高级用法
2015/04/30 Python
Python编写生成验证码的脚本的教程
2015/05/04 Python
Python代码实现KNN算法
2017/12/20 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
pycharm实现猜数游戏
2020/12/07 Python
HTML5给汉字加拼音收起展开组件的实现代码
2020/04/08 HTML / CSS
ETO男装官方网店:ETO Jeans
2019/02/28 全球购物
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
学校司机岗位职责
2013/11/14 职场文书
手机促销活动方案
2014/02/05 职场文书
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技