MongoDB到数据库的使用

发布时间:2020-07-13 10:11:14 作者:Leah
来源:亿速云 阅读:173

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

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

什么是数据库

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

数据库(Database)的基本概念
为什么用数据库存储数据

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

MongoDB到数据库的使用

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

为什么大多数程序员更喜欢使用MySQL?

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

关系数据库和MySQL的缺点是什么?
是什么让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

数据库的类型

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

RDBMS(关系型数据库)

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

关系型数据库的特点:

Nosql (非关系型数据库)

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

非关系型数据库的特点:

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到数据库的使用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. 升级MongoDB到2.6
  2. 使用Python如何操作Mongodb数据库

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mongodb 数据库

上一篇:threeJS 基本概念

下一篇:redis的锁有哪几种

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》