【数据库】01——精通数据库需要掌握这九个维度_数据库要掌握哪些技术

在这里插入图片描述

前 言
🍉 作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端
☕专栏简介:相当硬核,黑皮书《数据库系统概念》读书笔记,讲解:
1.数据库系统的基本概念(数据库设计过程、关系型数据库理论、数据库应用的设计与开发…)
2.大数据分析(大数据存储系统,键值存储,Nosql系统,MapReduce,Apache Spark,流数据和图数据库等…)
3.数据库系统的实现技术(数据存储结构,缓冲区管理,索引结构,查询执行算法,查询优化算法,事务的原子性、一致性、隔离型、持久性等基本概念,并发控制与故障恢复技术…)
4.并行和分布式数据库(集中式、客户-服务器、并行和分布式,基于云系统的计算机体系结构…)
5.更多数据库高级主题(LSM树及其变种、位图索引、空间索引、动态散列等索引结构的拓展,高级应用开发中的性能调整,应用程序移植和标准化,数据库与区块链等…)
🌰 文章简介:全面深入介绍数据库系统应用,数据库系统的目标,数据视图,数据库语言,数据库设计思想,数据库引擎,数据库的应用体系结构,数据库的用户与语言,数据库的发展历程九个维度,带你真正理解数据库,知道精通数据库要学习什么内容。该专栏将会把这些维度一网打尽。

文章目录

1.数据库简介

1.1.什么是数据库?

数据库管理系统就是由互相关联的数据集合和一组用于访问这些数据的程序组成,简称数据库。即,数据库=数据+程序。数据库的目标就是方便、高效、安全的存储、管理数据信息。
在这里插入图片描述

1.2 哪些数据需要被管理?
  • 高价值的数据
  • 庞大数据量的数据集合
  • 常常被多个用户、系统访问的数据集合
1.3 为什么需要数据库语言?

早期的数据库简单,被作为办公室后台系统进行维护,用户通过打印报告的纸质文档作为输入数据,键盘输入就可与其交互,现在数据库越来越复杂,我们需要筛选过滤,范围查找等各种复杂操作,因此我们开发了数据库语言供程序员与其交互。

在这里插入图片描述

1.4 数据库给人类生活带来的改变在哪?

数据库使数据与用户更直接的相关联。在没有数据库之前,每一个银行客户都必须在交易时与出纳员打交道,而现在ATM机可以直接与用户交互。
在这里插入图片描述

1.5 我们用数据库可以干什么?

有两种使用数据库的方式。

  • OLTP(联机事务处理,online transaction processing),大量的用户使用数据库,每个用户只检索少量数据,进行小的更新。
  • 数据分析(data anaytics),对数据进行分析,给出结论,推到规则或决策程序,用于驱动业务决策。

2.数据库系统的目标——安全、方便的进行数据存储与访问

想象如果没有数据库,一个大学要怎么在计算机中存储学生、教师、课程等数据?

那只能够将数据存储在操作系统的文件中,并且编写对应的程序对于这些数据进行读写操作。至少需要有:

  • 增加学生、教师和课程。
  • 为课程注册学生,产生班级花名册
  • 为学生填成绩,算绩点。

当需求增多,新的应用程序就需要被加入系统中,比如学校需要开设新的专业,就业为这个专业新建新的永久性文件(或者在现有文件增加新的数据),为了满足这个新专业数据处理的特殊规则,就需要编写新的程序。久而久之,越来越多的程序和文件会被添加到操作系统。

这种文件处理系统(file-processing system)在传统操作系统中是被支持的。

它有什么问题?

  • 数据冗余与不一致。比如学生半旧的地址信息可能重复出现在音乐课和美术课的文件中,更新了音乐课中半旧的地址,又可能忘记了美术表的地址更新。
  • 数据访问困难,比如需要筛选分数超过60分的学生,就需要手动进行过滤或者编写程序完成。筛选性别为男的学生又需要重复上面的过程。
  • 数据孤立,不同的数据分布于不同的文件,并且文件的数据组织结构还可能不同,想要检索适当的数据很困难。
  • 完整性问题,比如要求每个系的财务账户余额不能小于0,需要编写对应的程序完成,这些财务数据还跨文件。问题会变得越来越复杂。
  • 原子性问题一致性问题安全性问题

总结起来就是三个特点,不好存,不好取,不安全。数据库就是为了解决这些问题的。

3.数据视图——将数据库从复杂变简单

数据的存储与维护是复杂的,对于用户当然不需要知道这些无聊枯燥的过程,数据库系统为用户提供了抽象视图,隐藏数据存储维护的某些细节。

3.1 数据模型:描述数据的方式

数据库的基础是数据模型,是一个描述数据、数据关系、数据语义和一致性约束概念工具的集合。可以分为四类。

  • 关系模型(relational model),使用表来表示数据与数据之间的联系。表也被称为关系
  • 实体、联系模型(entity-relationship model),实体是现实世界中的一件“事情”或者一个“物体”。实体-联系模型包括数据实体与数据之间的联系,在数据库设计阶段广泛应用,后续文章会详细介绍。
    在这里插入图片描述
  • 半结构化模型。结构化的数据模型可以有效的支持数据查询的响应,但是无法支持数据结构的动态修改。半结构化模型允许相同类型的数据项含有不同的属性集,比如json和xml。

半结构化模型可以有效的处理以下场景:
(1)数据缺失
例如,在公司人事档案库中,已婚雇员会有配偶项信息,而未婚的雇员则无该项信息
(2)单值和集合值属性兼容
在传统查询语言如SQL、OQL、XSQL中, 单值和集合值属性是不兼容的,即集合不能按单值处理,单值也不能按集合处理。半结构化模型可以解决该问题。
(3)查询对象类型各异
在WWW 和异构信息源集成时,会有不少内容相同而类型各异的问题。如一信息源上的电话信息是用字符串表示,而另一信息源上则可能用整数表示。有些电话信息上可能带区号,而有些则不带。又如WWW上的主页,相同实体的类型差异也很大。如主页里的朋友项,有的是用字符串给出名字,有的则带有简单描述信息或是指向其朋友的网络地址。这就要求查询处理时有宽松的类型限制或没有类型检查。
(4)异构的查询返回结果
半结构化数据的同类实体查询会出现不同的结果对象,选择语句的返回结果可能因数据源的不同而异。
(5) 查询的对象结构未知

  • 基于对象的数据模型。
    java,c++等面向对象语言成为主导的软件开发语言,工程师们通过过程已经将对象的概念很好的整合到了关系型数据库中。

关系型数据模型是大多数数据库的理论基础。

3.2 数据抽象:屏蔽复杂细节

为了能够使数据库中的数据被高效地检索,数据库的开发人员不得不使用复杂的数据结构来表示数据。而数据库的用户多没受过专业的计算机训练,需要对他们进行如下几个层次的数据抽象,让不同层次的用户关注自己这层的事情,屏蔽不需要的内容。

  • 物理层。物理层描述数据实际上是如何存储的。
  • 逻辑层。逻辑层描述存储什么样的数据以及数据之间联系。
  • 视图层。逻辑层尽管采用了相对简单的结构,但是还是具有一定的复杂性,数据库系统的用户可能并不需要这部分的数据,只需要一部分的数据,以用户友好,需要的方式展现出来。
    在这里插入图片描述
3.3 实例和模式

数据库的整体设计被成为模式(schema),这就相当于一个模板。数据库在某一个特定时刻存储的数据总和被称为实例(instance).举个栗子,数据库的模式就像是变量的定义,而变量在每个时刻都会特定的值,这个值对应是数据库模式的一个实例。

按照不同的抽象层次划分,数据库有几种模式。物理模式在物理层描述数据库的设计,逻辑模式在逻辑层描述数据库的设计,数据库在视图层也可以有几种模式,通常被称为子模式,它用于描述数据库的不同视图。一般与程序员打交道的是逻辑模式。

4.数据库语言——定义和操作数据

数据库的定义语言DDL与数据库的操作语言DML都是数据库系统的操作语言,他们都是SQL语言的一部分,关系型数据库几乎都使用SQL语言。

4.1 数据定义语言

数据定义语言DDL用来进行数据存储和定义。数据库中的数据必须满足一致性约束,常见的约束有:

  • 域约束。如,整数型、字符型、日期、时间等。
  • 引用完整性。一个course中记录的dept_name必须出现在department关系中某个记录的dept_name属性中。
  • 授权。不同的用户在数据库中的不同数据值上允许不同的访问类型。常见的是,读权限,插入权限、更新权限、删除权限。

DDL的输出会被放在数据字典中,数据字典也包含元数据,也就是关于数据的数据。数据字典可以被看做一种特殊的表,这种表只能有数据库系统本身(不是常规的用户)来访问和修改。在读取和修改实际的数据前,数据库系统先要参考数据字典。

SQL数据定义语言可以参考:

create table department
	(dept_name char(20),
	building char(15),
	bugetn numeric(12,2));

我们还可以加完整性约束,后续文章会详细介绍。

4.2 数据操作语言

DML可以对数据进行访问和操作( 增删改查)。有以下两种类型。

  • 过程化DML(procedural DML),要求用户指定需要什么数据以及如何获得这些数据。
  • 声明式的DML(declarative DML),也被称为非过程化的DML,只要用户指定需要什么数据,而不必指明如何获取这些数据。

声明式的DML通常更加易学易用,由于用户不指明如何获得数据,数据库系统必须要提供一种访问数据的高效途径。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

)]
[外链图片转存中…(img-Kn57iQTG-1714446987432)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值