我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MongoDB到数据库的使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MongoDB到数据库的使用

MongoDB到数据库的使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

今天的主题是从MongoDB漫谈数据库,在日常的项目中,我们一般都是使用的mysql作为数据库,但是一旦有问题,又常常会听到类似“要不换成MongoDB试试”的声音,因此就让我们这些小白来随便聊聊数据库

什么是数据库

我们就用最简单的话来说,数据库,就是保存数据的一个仓库

数据库(Database)的基本概念
  • 数据库就是按照一定的数据结构来组织,储存和管理数据的仓库

  • 我们写的程序都是在内存中运行的,一旦程序运行结束或者计算机断点,程序运行中的数据就会全部丢失;所以我们就需要将一些程序的数据持久化到键盘之中,以确保数据的安全性。

  • 数据库则是大批量数据持久化的普遍选择,1.文件 2. 数据库

为什么用数据库存储数据
  • 数据库是有结构的

  • 数据库可以提供各种接口,让数据处理(增删改查)快捷方便

  • 各种语言(PHP、jsp、.net..)提供了完善的接口

数据库流行度(来源:https://db-engines.com/en/ranking)

MongoDB到数据库的使用

从统计的数据中可以看出,最受欢迎的DBMS是“关系型”,前五名中占据了四位,把数据扩大到前十,关系型数据库也占到了七位之多。

为什么大多数程序员更喜欢使用MySQL?
  • 开源,只有企业才需要购买许可证

  • 具有广泛的用途:可广泛用于大多数平台,如Linux,Windows,Ubuntu,Mac OS X等

  • 易于使用

  • 可靠的:多年来一直经过试验和测试

  • 适用于PHP(PHP天下第一),也可以与其他编程语言一起使用,如JAVA,PERL,C,C ++等

  • 适用于小型和大型应用

那么关系型数据库这么好为什么前五名中还会出现MongoDB的身影呢,我们来看一下

关系数据库和MySQL的缺点是什么?
  • 可伸缩性:向特定记录添加更多数据可能涉及扩展到多个表,列和行,而因为数据是按行存储,即使只针对其中某一列进行运算,关系型数据库也会将整行数据从存储设备中读入内存,导致I/O较高

  • 由第一条产生而来的一个缺陷就是无法存储数据结构

  • 速度:由于数据结构的问题倒是分析数据时需要一定的时间,另外只能够进行子字符串的匹配查询,当表的数据逐渐变大的时候,like查询的匹配会非常慢,即使在有索引的情况下

  • 在使用之前,需要先编写架构以定义表,同时表结构schema扩展不方便 如要需要修改表结构,需要执行执行DDL(data definition language),语句修改,修改期间会导致锁表

是什么让MongoDB如此吸引人?
  • 灵活性:文档结构更符合开发人员在各自编程语言中的编码方式,这些编程语言在键值对中是清晰且结构化的,这样可以随时轻松添加和编辑数据/文档

  • 支持各种查询:字段,表达式,范围查询,JavaScript函数等

  • 更快的周转时间:因为存储在MySQL数据库中的多个表中的相关数据存储在MongoDB中的同一文档中

  • 没有严格的模式:可以在定义文档结构之前先创建文档

  • MongoDB的功能使它更适合处理大量数据

先让我们来比较一下两者再来详细说明


MySQLMongoDB
版本1995- 2018(mysql 8.0)2009
结构关系型非关系型
灵活性弱,需要在使用之前先定义数据库模式与MySQL相比具有相当大的灵活性 - 定义不需要的模式
可扩展性可以,但是比较困难,MySQL数据库可以垂直扩展,可以向单个服务器添加更多资源比MySQL更具可扩展性。MongoDB可水平扩展,可以添加更多服务器来扩展您的数据库
需要DB管理员否 - 开发人员和管理员都可以使用
适用场景会计师事务所和银行,以及需要具有清晰架构的结构化数据的其他公司。非常适合具有或多或少固定要求的企业(twitter例外)具有实时数据,物联网,内容管理,移动应用,社交网络,面向大数据/网络分析的系统以及不需要具有清晰架构或其架构的结构化数据的业务的理想选择不断变化

灵活性

首先说说灵活性,举个列子,一个商城里面会有许多的商品,而这些商品都是有自己独特的属性的,比如电视有屏幕尺寸、屏幕分辨率,而空调有制冷类型、外机噪音等属性,要把它们放到产品表里是非常困难的,额外增加了程序员对于数据表设计的工作,而MongoDB没有Schema(模式、数据模型)就会显得很简单。

MongoDB 的灵活还体现在非结构化和半结构化的数据上。MongoDB 提供全文索引,也支持地理位置查询和索引。例如一位用户想知道方圆五公里哪里有公共卫生间,这是「地理范围查询」。然后他搜索最近的单车。摩拜单车正是使用 MongoDB 完成这样的「距离排序查询」。

可扩展性

数据一台机器放不下了,就需要sharding(分片)把它放到好几台机器上去。分片是MongoDB多年以来的原生功能,与MongoDB其他功能高效整合。

例如,分片集群中一个复杂的聚合查询会自动地根据 Shard Key(片键)分配到多个结点上运行,尽可能将计算任务下推到数据结点上,最后在一个结点上聚合所有结点的结果。分片还可以在各个结点间自动迁移数据,均衡其数据量。同时配合着MongoDB的复制(副本集)技术,可以有效的避免数据的丢失(在测试的时候发现mongo会自动发现副本集的所有机器地址,当一台Mongo被停掉时,连接的Server不会报错)

MongoDB中使用分片集群结构分布:

MongoDB到数据库的使用

MongoDB的缺点
  • 众所周知,MongoDB占用了大量的服务器内存

  • MongoDB在安全性上略微会差一点

  • 过于自由灵活的文件存储格式带来的数据错误(。。。。。。)

  • 单个文档大小限制为16 M

  • 对于数组型的数据操作不够丰富

什么时候选择MongoDB

说了这么多狗屎一样总结的话,最重要的就是我们在什么时候选择使用MongoDB

  • 日志系统,系统运行过程中产生的日志信息,一般种类较多、范围较大、内容也比较杂乱。通过MongoDB可以将这些杂乱的日志进行收集管理

  • 地理位置存储,MongoDB支持地理位置、二维空间索引,可以存储经纬度,因此可以很快的计算出两点之间的距离,等位置信息

  • 数据规模增长很快(比如供给的关注信息)

  • 需要保证高可用的环境

  • 文件存储需求

  • 其他场景,如游戏开发中可以通过MongoDB存储用户信息、装备、积分等,除此之外物流系统、社交系统、甚至物联网系统

数据库的类型

说了这么多,为什么我们会把mysql和MongoDB放在一起比较进行选择,就是因为它们是不同类型的数据库,从数据库发展至今,大致上分为三种类型

RDBMS(关系型数据库)

首先要提到的一定是我们最熟悉的mysql数据库所属于的关系型数据库。

关系型数据库的特点:

  • 比如MySql 、sql server Oracle 等

  • 特点 通过一张张表来建立关联

  • 基本都使用SQL语言来管理数据库

Nosql (非关系型数据库)

NoSql,也就是MongoDB的数据库类型,源自2009年在San Francisco举办的一次Meetup,在该Meetup上出现了NoSql技术的描述:open source, distributed, non relational databases

非关系型数据库的特点:

  • 没有行 、列的概念 用json类储存数据

  • 集合相当于“表”,文档相当于“行”

  • 标准化和非标准化的摩擦。

  • 标准化限制创新,非标准话不能统一

NoSql在刚提出的时候被解释成Non-Relational,也有No-sql的意思,但是随着近些年的快速发展,SQL已经逐步被应用在了更广泛的领域,因此,SQL已不再是RDBMS的专属特征,NoSql技术体系中也引入了SQL能力,因此而演变出来了Not-Only-SQL的概念

大多数NoSql技术,弱化了对ACID语义以及复杂关联查询的支持,采用了更加简洁或更加专业的数据模型,优化了读写路径,从而能够换取更高的读写性能

NewSql

根据wiki中的定义

<font color=#FF7F50 size=5 face="黑体">NewSQL</font> is a class of modern relational database management systems that seek to provide the same scalable performance of NoSQL systems for online transaction processing (OLTP) read-write workloads while still maintaining the ACID guarantees of a traditional database system.

NewSql可以说是传统的RDBMS与NoSql技术结合之下的产物,因此,可以将典型NewSql技术理解成分布式关系型数据库,能够支持分布式事务是一个基本前提。NoSQL与NewSQL在技术栈上有很多重叠,但在是否支持关系型模型及对复杂事务的支持力度上是存在明显区别的。因为本人不了解,所以这里不做多说。

这里我只是简单的介绍一下数据库的类型,对于一种存储技术属于NoSql或者NewSql,亦或是RDBMS是不能简单归类的,毕竟技术是在不断进步的,比如MySQL现在也兼容了nosql的特性:

MongoDB到数据库的使用

或者有的人会奇怪为什么在介绍MongoDB的缺点时没有提事务的事,这是因为在2018年夏季的MongoDB4.0版本中,MongoDB引入了事务功能,支持多文档ACID特性,例如使用mongo shell进行事务操作

MongoDB到数据库的使用

具体压测数据后期补上

看完上述内容,你们掌握MongoDB到数据库的使用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MongoDB到数据库的使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用Docker部署MongoDB数据库

要在Docker中部署MongoDB数据库,可以按照以下步骤操作:下载MongoDB镜像:docker pull mongo创建并运行MongoDB容器:docker run -d --name my-mongo -p 27017:2701
使用Docker部署MongoDB数据库
2024-04-25

MongoDB数据库如何安装使用

这篇文章主要为大家展示了“MongoDB数据库如何安装使用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MongoDB数据库如何安装使用”这篇文章吧。1、简介MongoDB是由C++语言编写的,
2023-06-29

MongoDB数据库索引怎么使用

这篇“MongoDB数据库索引怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MongoDB数据库索引怎么使用”文章吧
2023-07-02

【数据库】MongoDB -

码农的成长   首页   新随笔   新文章         管理 【数据库】MongoDB -- MongoDB上手开发手记 1.MongoDB开发环境搭建1.1.MongoDB介绍MongoDB是一个基于分布式文件存储的数据库。由C++语言编写
【数据库】MongoDB -
2020-04-28

如何使用MongoDB实现数据的图数据库功能

如何使用MongoDB实现数据的图数据库功能近年来,随着数据量的不断增长和复杂关系的日益重要,图数据库的应用变得越来越广泛。传统关系型数据库面对复杂的图状数据结构和大量的关系查询时,性能受限,而图数据库则能更好地解决这些问题。本文将介绍如何
2023-10-22

数据库MongoDB

一、MongoDB简介  MongoDB是由c++语言编写的,是一个基于分布式文件存储的开源数据库系统,在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB旨在为web应用提供扩展的高性能数据存储解决方案。MongoDB将数
2023-01-30

如何使用Java操作MongoDB数据库

如何使用Java操作MongoDB数据库?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MV
2023-06-14

使用MongoDB做数据库怎么管理

管理MongoDB数据库可以使用MongoDB提供的命令行工具mongo和可视化管理工具MongoDB Compass。1. 使用命令行工具mongo:- 打开终端或命令提示符,输入`mongo`命令连接到MongoDB服务。- 使用`us
2023-09-01

mongodb数据库怎么用

mongodb 是一款文档型 nosql 数据库,其数据模型基于文档,允许存储复杂数据。要开始使用 mongodb,需要下载安装服务器和客户端,连接到服务器并创建数据库。mongodb 使用键值对集合来存储数据,并提供丰富的操作命令,用于创
mongodb数据库怎么用
2024-04-08

Laravel框架中如何使用MongoDB数据库

这篇文章主要为大家展示了“Laravel框架中如何使用MongoDB数据库”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Laravel框架中如何使用MongoDB数据库”这篇文章吧。1、先确定好
2023-06-29

编程热搜

目录