MongoDB到数据库的使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
今天的主题是从MongoDB漫谈数据库,在日常的项目中,我们一般都是使用的mysql作为数据库,但是一旦有问题,又常常会听到类似“要不换成MongoDB试试”的声音,因此就让我们这些小白来随便聊聊数据库
什么是数据库
我们就用最简单的话来说,数据库,就是保存数据的一个仓库
数据库(数据库)的基本概念
- <李>
数据库就是按照一定的数据结构来组织,储存和管理数据的仓库
李> <李>我们写的程序都是在内存中运行的,一旦程序运行结束或者计算机断点,程序运行中的数据就会全部丢失,所以我们就需要将一些程序的数据持久化到键盘之中,以确保数据的安全性。
李> <李>数据库则是大批量数据持久化的普遍选择,1。文件2。数据库
为什么用数据库存储数据
数据库是有结构的
数据库可以提供各种接口,让数据处理(增删改查)快捷方便
各种语言(PHP、jsp、.net..)提供了完善的接口
数据库流行度(https://db-engines.com/en/ranking)
从统计的数据中可以看出,最受欢迎的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(模式、数据模型)就会显得很简单。