联系客服
客服二维码

联系客服获取更多资料

微信号:LingLab1

客服电话:010-82185409

意见反馈
关注我们
关注公众号

关注公众号

linglab语言实验室

回到顶部
编程百晓生 | 啥是数据库?

354 阅读 2021-03-31 09:12:22 上传

以下文章来源于 语料数据库

04

啥是数据库

 

什么是数据库?

数据库(Database,简称 DB)是按照一定结构和规则来存储和管理数据的仓库。数据库通常以文件的形式长期存储在服务器内,是有组织、可共享、统一管理的大量数据集。

 

下图就是两个数据库文件:

 

 

但是,这些数据文件不是直接以便于人类理解的形式存储的,让我们打开其中一个文件:

 

db 文件内容

 

数据库管理系统

数据库管理系统(Database Management System,简称 DBMS),是对数据库进行统一的管理和控制的大型软件。耳熟能详的 MySQL 就是一个数据库管理系统。

 

数据库管理系统使我们能够轻松地建立、使用和维护数据库,对数据库的共享提供了很好的支持,并能保证数据库的安全性和完整性。不同的数据库管理系统对应的数据库存储文件的结构也不同。

 

数据库和数据库管理系统在软件开发中扮演着不可或缺的角色。比如要开发一个教务系统,学生的信息都会存放在数据库中。当学生想登录教务网站查询自己的考试成绩时,部署在服务器上的程序会连接数据库管理系统进行查询,并从数据库中取出该学生的成绩,最后显示到页面上。

 

查询数据过程

 

 

数据库的优点

数据库之所以能被开发者广泛使用,是因为其有很多文件等其他存储方式不可替代的优点(此处主要讲关系型数据库的优点)。

 

1. 使用方便

传统的关系型数据库采用类似表格的行列式存储, 查询方便且易于理解。

 

2. 存储结构稳定

关系型数据库要求数据以结构化的方式存储,必须先定义表,再存储数据,因此数据的形式和内容可控,比如禁止用户存储空字段。因此可靠性更高。

 

3. 统一管控

数据可以由数据库管理系统统一管理和控制,数据库的各种信息一目了然,就像 Windows 系统的资源管理器一样。

 

4. 数据共享方便

由数据库管理系统集中管理数据库,用户要使用数据时,只需和数据库管理系统建立连接即可。因此数据可被多个用户程序共享。

 

5. 权限控制

使用数据库管理系统能够很方便地控制不同用户对数据库不同部分的访问及操作权限,能够很好的保证数据库安全性。

 

6. 数据独立性高

开发者和程序只需要关心数据库的逻辑结构(数据间的关系),而不需要去理解数据库底层的文件存储(看也看不懂)。即使底层的数据文件存储结构发生改变,也不需要改变我们的应用程序。

 

7. 数据备份与恢复

使用数据库管理系统可以定期对数据进行备份与恢复,保障数据的安全性。

 

8. 空间占用少,性能高

数据库管理系统会采用特定的数据结构来存储数据,并优化存储空间和数据查询性能,相对于我们自己建立文件来存储和读取数据,空间占用更少、性能会更高。

 

 

数据库的分类

数据库可以分为两大类:关系型数据库和非关系型数据库。

 

关系型数据库

关系型数据库(RDBMS)是使用最广泛的数据库,采用了关系模型来组织数据,其主要结构是库 + 表 + 表之间的关系 + 字段,便于用户理解。

 

一个库有多张表:

 

 main 数据库下有多张表

 

每张表采用行列式存储,类似表格。每一行代表一条数据,每一列代表一个字段。通常每张表都要定义一个主键,主键的值不能重复,用于标识唯一的一行数据,就和我们每个人都有唯一的身份证号一样。

 

用户表(id 是主键)

 

表之间可以通过值相同的字段关联(通常用 id 关联):

 

用户表和用户扩展信息表通过 id 关联

 

通过将表进行关联,可以在查询时同时查出多个表的列,比如可以将上面两张关联表拼接为下表:

 

将两张关联表根据 id 合并为一张表

 

目前最主流的关系型数据库有 MySQL 和 Oracle。

 

 

非关系型数据库(NoSQL)

非关系型数据库又称 NoSQL(Not Only SQL,不仅仅是 SQL)。由于数据类型太多样了,关系型数据库并不适用于所有的数据,因此针对不同的数据类型,出现了不同的 NoSQL。

 

使用特定类型的 NoSQL 存储特定类型的数据,具有提升性能、节约空间等好处。

 

常见的非关系型数据库有键值存储数据库 Redis、列式存储数据库 HBase、文档数据库 MongoDB、图形数据库 Neo4J、时序数据库 InfluxDB、对象数据库、XML 数据库等。

 

 

数据库学习建议

数据库的学习分为五个阶段,前两个阶段是使用数据库的基础,最为重要。一般学完前三个阶段就可以在企业中很好地应用数据库了。

 

1. SQL

结构化查询语言(Structured Query Language)简称 SQL,是一种面向数据库的编程语言。使用 SQL 可以查询、管理和控制数据库。

 

SQL 又分为五类:

1. DDL(Data Definition Language)数据定义语言,包括创建数据库表、定义字段等。

 

2. DML(Data Manipulation Language)数据操作语言,包括增删改查(大家常说的 CRUD)。

 

3. DQL(Data Query Language)数据查询语言,就是 select 语句(也是 DML),语句灵活、优化技巧多,是 SQL 学习的重中之重。

 

4. DCL(Data Control Language)数据控制语言,控制用户对数据库的访问权限。

 

5. TCL(Transaction Control Language)事务控制语言,比如事务的开启、回滚等。

 

2. 设计

要能够针对业务场景设计出数据库、数据表和表之间的关系,通常需要遵循一定的规范。其中,表字段类型的选取尤为重要,选取不当会影响查询的性能,比如应当用整型代替字符串类型来存储 IP 地址。

 

可以多参考他人的设计,熟能生巧。

 

3. 调优

使用一些技巧来提升你的数据库查询和操作性能。常用的有给字段添加索引、定位慢查询并优化、配置 MySQL 参数调优等。调优是在企业中应用数据库必不可少的环节,因此 MySQL 调优也是面试的重点

 

4. 原理

了解数据库底层的存储原理,比如 MySQL 中的 InnoDB 存储引擎是如何实现的、索引底层的 B+Tree 是如何实现的等等。这有助于我们设计出高性能的数据表,并且更进一步调优性能。

 

B+Tree 数据结构

 

5. 运维

数据库的运维对企业十分重要,一般都有专门的人员来维护数据库,主要工作包括

 

1. 保证数据库的正常运行。

 

2. 控制用户的访问权限,保证数据库的安全。
 

 

3. 在数据量大时进行集群、读写分离的搭建,保证数据库的性能。

 

4. 在数据库出现异常时能够快速定位日志进行排错。

 

5. 定期备份数据,并且在数据出现错误进行回滚、数据丢失时进行恢复。

 

6. 提出提升数据库性能的 SQL 优化建议。

 

运维的知识和经验更多的是在实际工作中学习和积累的。可以看一些视频案例进行学习。

 

点赞
收藏
表情
图片
附件