什么是数据库?
首先你要知道什么是数据缓存和持久化,我们的应用在使用的过程中肯定是会产生各种各样的数据,当然你不希望当用户关闭应用时数据就丢失了,再次打开应用的时候一片空白
你可以考虑数据缓存,当然他也是会丢失的,比如浏览器中的缓存,一般会自动清理或者被用户手动清理,所以重要的数据肯定不能是缓存的,所以需要选择持久化存储
数据库只是持久化存储的一种方式,你将数据存储到一个txt文档或者是xml文档,又或者是word和Excel中,这都算是持久化数据,都能被程序所读取和使用,当然在实际开发中,数据库是更好的选择
非关系型和关系型数据库
高大上的理论你听不懂,我也讲不来,分享的都是通俗的话
数据库的主流分类
- 关系型数据库 RDBMS (Relational Database Management System)
- mysql
- SQLserve
- Oracle
- sqllite
- … …
- Nosql database 非关系型数据库
- MongoDB
- redis
- neo4j
- … …
非关系型和关系型数据库
关系型数据库:指采用了关系模型来组织数据的数据库。
关系型数据库:指非关系型的,分布式的,且一般不保证遵循ACID
原则的数据存储系统。
数据库事务必须具备
ACID
特性,ACID
分别是Atomic
原子性,Consistency
一致性,Isolation
隔离性,Durability
持久性。
那么什么是关系模型?
比如网页中的一篇文章,分为标题、内容、描述、时间 ,要把这些对应的内容存入数据库,大致的结构为
属性 | 值 |
---|---|
title 标题 | 开学第一天 |
content 内容 | 这是一个好日子… … |
desc 描述 | 描述我的第一天 |
date 时间 | 2020/10/16 |
我们要存储多篇文章,使用关系型数据库大致就是这样的

每一个二维表都有一个名称(关系),这个表名为article
表,在这个表中,每一行(横向)就是一条数据,每条数据都是按照上面顶部的 schema(id,title,content,desc,date)约束来填充的,这个就好像学校里老师发的试卷,每个空格都必须按照约束填写,有些空格必填有些做不来可以不填(域:属性的取值范围,也就是数据库中某一列的取值限制),一列(竖向)称为字段,比如 id 这一列就统计了所有文章的序列号,title
这一列就能看到所有文章的标题
这个表的关系模型就可以表示为:
article文章表(id属性 值为整数类型 不能为空 自动递增 无特殊符号,title标题字段 字符串类型 不能为空,content文章内容字段 不能为空 … …)
关系型的数据库更容易理解,关系明确,容易使用,但是海量数据处理压力很大
回过头来说非关系数据库
非关系数据库也需要一定的关系设计!!!
非关系型数据库以键值对存储,结构不用固定,每一个元组可以有不一样的字段
适合存储一些较为简单的数据,对于需要进行较复杂查询和事务处理的数据,关系型数据库显的更为合适
和关系型数据库稍微有点不同,这没有表的概念,而是把上面的整个的一行数据作为一个值,然后命名一个键存入一个集合中
比如上面的文章表改为非关系型

MySQL 是⼀种关系型数据库,在Java企业级开发中⾮常常⽤,因为 MySQL 是开源免费的,并且⽅便扩
展。阿⾥巴巴数据库系统也⼤量⽤到了 MySQL,因此它的稳定性是有保障的。MySQL是开放源代码的,
因此任何⼈都可以在 GPL(General Public License) 的许可下下载并根据个性化的需要对其进⾏修改。MySQL的默认端⼝号是3306。