数据库基础知识理论

举报
给他提单,致命单 发表于 2024/01/15 17:48:30 2024/01/15
【摘要】 数据库基础知识理论1.什么是数据库1.1 什么是数据和数据管理信息指现实世界中事物的存在方式或运动状态的反映,主要包含数字、文字、图形、图像、声音、其它特殊符号;数据是描述现实世界事物的符号记录形式,是利用物理符号记录下来的可以识别的信息。其中,数据是信息的符号表示活载体,信息是数据的内涵,是对数据的语义解释。数据管理指包括对各种形式的数据进行收集、存储、加工和传输等活动。数据管理目的是从大...

数据库基础知识理论

1.什么是数据库

1.1 什么是数据和数据管理

信息指现实世界中事物的存在方式或运动状态的反映,主要包含数字、文字、图形、图像、声音、其它特殊符号;数据是描述现实世界事物的符号记录形式,是利用物理符号记录下来的可以识别的信息。其中,数据是信息的符号表示活载体,信息是数据的内涵,是对数据的语义解释。

数据管理指包括对各种形式的数据进行收集、存储、加工和传输等活动。数据管理目的是从大量原始数据中抽取、推导出有价值的信息,以此作为行动和决策的依据以及借助计算机科学地保存和管理复杂大量的数据,使人们能够方便和充分利用信息资源。

1.2 数据管理发展历史

    上世纪50年代以前对于数据的管理主要采用人工管理的方式,运用卡片、纸带和磁带来存储和管理数据。程序间不能共享数据;程序复杂;数据量小企鹅无法长期保存;数据重复输入量大;而进入50年代后期至60年代中期,文件系统诞生了。用户可以通过操作系统和文件系统来读取数据。程序间可以共享数据;代码有所简化;数据冗余度大;程序对数据依赖性较强;对操作人员的专业性要求高;随着文件越来越大、越多,对于数据库管理系统的需求也越来越高,在60年代后期至70年代后期,出现了许多数据库管理系统。在数据库系统中,数据被集中式管理,高度共享;数据结构化并与程序分离;数据冗余度小,并且具有一致性和完整性等特点;分布式数据库系统是对数据库系统的演进,提高了可靠可用性以及数据共享和并发控制能力,对数据的一致性校验和安全性控制措施进行了完善。


图1-1 数据管理发展历程

1.3 数据库系统

数据库(DB)是数据的集合,并按照特定的组织方式将数据保存在存储介质上,同时可以被各种用户所共享。数据库管理系统(DBMS)是数据库系统的核心,是一种系统软件,负责数据库中的数据组织、操纵、维护、控制、保护和数据服务等。数据库管理系统是位于用户与操作系统之间的数据管理软件。数据库由数据库管理员(DBA)负责数据库系统的日常运营维护。数据库系统(DBS)是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。它通常由软件、数据库和数据管理员组成。数据库系统具有数据结构化、数据共享性高,冗余度低、易扩充、数据独立性高、数据由数据库管理系统统一管理和控制等特点。

由于文件和程序是在很长一段时间内由不同的程序员创建的,不同文件可能有不同的结构,不同程序可能采用不同的程序设计语言写成。此外,相同的信息可能在几个地方(文件)重复存储。例如,如果某学生有两个专业,该学生的个人信息就有可能出现在两个系记录学生信息的文件中。这种冗余冲了导致存储系统访问开销增大之外,还可能出现数据不一致问题,即同一数据的不同副本不一致。例如当学生地址或电话号码更改时,更改可能只能在某一个系中得到修改而在系统的其他地方得不到反映。


图1-2 数据管理系统结构

数据管理系统代替文件系统极大地简化了应用程序员和维护人员的工作。数据库管理系统将数据的定义、操作(增/删/改/查)、存储、异地容灾、备份/恢复等集中管理,让应用开发人员更关注应用逻辑的实现,让运维(DBA)关注与数据库管理而无需管理多套数据访问模块。

1.4数据库发展历史

关系型数据库理论由F.codd(关系型数据库之祖)在1970年提出,并且自行开发了System R这一项目,连同SDL、Teradata在内,一同成为关系型理论诞生之初主流商业数据路。在1974年,Michael Stonebraker等人在数据库关系理论的基础上提出了Intgres这一开源项目,为开源数据库之祖。Ingres发展至今,衍生出了许多闭源商业数据库,成为大部闭源商业数据库主流。华为的GaussDB也是基于Ingres项目衍生出的Postgresql构建而成的。

在Niche市场上,于1994年出现的MySQL数据库为主流,MySQL主要以互联网应用为主。MySQL5.5(Oracle)版本为华为数据仓库DWS提供了云服务支持。


图1-3 关系型数据库发展谱系

1.5 数据库在IT系统中的位置

数据库管理系统(DBMS)在OS和硬件之上,在应用软件包和应用程序之下,DBMS安装到OS上,为应用程序提供数据存储和处理。


图1-4 数据库的位置

传统典型业务架构为三层模式(C/S, B/S),后续互联网业务架构也是基于该传统架构的拓展和延伸。


图1-5 Browser/Server三层结构

1.6 应用程序如何操作数据库

1.6.1 连接数据库

要操作数据库,首先需要建立对数据库的连接。目前有两种主流的连接数据库的方式,分别为ODBC和JDBC,其中,JDBC因为其协议通用,函数接口固定的特点,应用比较广泛。各个数据库根据其自身特点,开发自己的JDBC程序,通过JDBC应用程序来驱动数据库服务。应用程序通过JDBC协议,向数据库发送指令,再由数据库处理好之后返回给应用程序。


图1-6 JDBC工作原理

1.6.2 操作数据库

连接上数据库之后,就可以通过SQL语言来对数据库进行操作了,使用如CRAETE TABLE之类的指令建表后便可以使用CRUD(ADD/DELETE/UPDATE/SELECT)指令实现对数据的增删改查操作。

1.7典型企业数据库系统

典型企业数据库系统分为联机事务处理(OLTP)和联机分析处理(OLAP)两种类型。其中,OLTP主要是存储/检索业务应用中活动的数据以支撑日常的业务活动,数据量普遍不大、高并发、高可用;OLAP储存历史数据以支撑复杂的分析动作,侧重决策支持。OLAP类型应用数据量大、高并行、低并发、可用性要求不高。


图1-7 典型企业数据库系统

一般来说,OLTP数据库作为前端,对数据进行简单的处理之后通过ETL工具迁移到数据仓库中。OLTP数据库侧重于对数据进行精确的计算,而OLAP数据库侧重于对数据进行分析,挖掘其中的隐藏信息。


图1-8 OLTP/OLAP 系统对比

2.关系型数据库理论简介

2.1关系型数据库4大关键要素

关系型数据库有4大关键要素,分别是易用性、可靠性、性能、拓展性。易用性重点在简单性,也就是上手难度,SQL语言,JDBC/ODBC语法适用性;可靠、可用性重点在于事务ACID、备份、复制、容灾等能力;性能,也可以说是性价比,重点在于其索引、数据分区、并行执行、查询优化能力;拓展性在于Shared nothing、shared disk节点扩容能力。

2.1.1 易用性-SQL语言

SQL是一种描述性语言,其特点是简单易用,只描述Do What,不描述How to do,How是由系统自动完成。SQL语言基于实体/关系(E/R)模型和关系代数理论;SQL语言(Structured Query language)是描述性语言,高度非过程化。SQL只要提出“做什么”,无须了解存取路径,存取路径的选择以及SQL的操作过程由系统自动完成。非关系数据模型的数据操纵语言“面向过程”,必须制定存取路径;SQL语言以同一种语法结构提供多种使用方式;SQL能够独立地用于联机交互的使用方式。 SQL能够嵌入到高级语言(例如C,C++,Java)程序中,供程序员设计程序时使用。

SQL语言简洁,易学易用,完成核心功能只用了9个动词:数据定义DDL:CREATE, DROP, ALTER;数据操纵DML: SELECT, INSERT, UPDATE, DELETE;数据控制DCL:GRANT, REVOKE。

数据库中的运算以关系代数为基础,面向集合的操作方式。操作对象、查找结果可以是元组的集合,一次插入、删除、更新操作的对象可以是元组的集合。非关系数据模型采用面向记录的操作方式,操作对象是一条记录。

数据库设计(应用数据库)就是把现实世界的实体和关系到数据库表映射的过程,简单易于实现。图1-9为一个课程,学生之间的关系。课程,学生都是实体对象。学生和课程之间有选课关系。这些实体和关系在数据库中都对应一个表,属性就是一个表字段。通过实体—关系模型就可以简单完成数据库表的设计。


图2-1 实体与数据库表的映射

通过建表语句就可以在数据库中完成这些对象和关系对应表的创建,即定义这些对象。

CREATE TABLE course (course_id int, title varchar, dept_name varchar, credits float);

CREATE TABLE student (student_id int, name varchar, dept_name varchar, tot_cred float);

CREATE TABLE takes (course_id int, student_id);

对象创建后,就可以使用数据库的增加(insert),修改(update),删除(delete),查询(select)对数据库进行各种操作。

比如插入学生选课:insert into takes(1,10000);

比如查询学生选课:

SELECT title, name

FROM course,takes,student

WHERE course.course_id = takses.course_id and taskes.student_id  = student.student_id;

2.1.2 易用性-标准接口JDBC/ODBC

编程语言通过标准接口执行SQL语句,从而使应用程序与数据库解耦.JDBC(Java DataBase Connectivity)是JAVA语言连接数据库的标准API接口。ODBC(Open Database Connectivity)是C/C++语言连接数据库的标准API接口。下面是一个ODBC连接数据库范例。


图2-2 JDBC/ODBC连接数据库

ODBC连接数据库分为5步。

1、首先是连接数据库:

sret = SQLConnect(hdbc, (SQLCHAR *)"DM4", SQL_NTS, (SQLCHAR *)"SYSDBA",

SQL_NTS, (SQLCHAR *)"SYSDBA", SQL_NTS);

2、连接上数据库后便可以对数据库执行SQL语句,数据库在收到SQL语句后便会根据SQL语句进行相应的数据操作:

    SQLExecDirect(hsmt, (SQLCHAR *)"select title   from course;",SQL_NTS);

3、数据库处理完数据后,将数据返回给客户端:

SQLBindCol(hsmt, 1, SQL_C_CHAR, sztitle, sizeof(sztitle), &cbztitle);

sret = SQLFetchScroll(hsmt, SQL_FETCH_NEXT, 0);

4、释放语句句柄:

SQLFreeHandle(SQL_HANDLE_STMT, hsmt);

5、断开连接,释放句柄

SQLDisconnect(hdbc); 

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

2.1.3 可靠性–通过事务能力实现

    事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit),它有ACID四个特性:原子性(Atomicity):事务所包含的操作要么全部完成,要么什么也没做;一致性(Consistency):在一致性数据库上执行事务后,数据库仍需保持为一致性的状态;隔离性(Isolation):没有结束的事务在提交之前不允许将其结果暴露给其它事务;持久性(Durability):当一个事务的结果提交后,系统保证该结果不会因以后的故障而丢失。数据库通过实现事务能力,来保证业务数据的高可靠。下面为一个ACID范例。


图2-3 ACID示例

    ACID保障服务器重启后,小王的账号为400 ¥:

原子性保障:小张取消转账后,小王账号仍然为100 ¥。

一致性保障:小李的账号少300 ¥,小王账号多300 ¥。保证他们两个账号的总和不变。

隔离性保障:小张转账的200 ¥对小李不可见,不然结果为700 ¥。

持久性保障:服务器故障重启后,小李的转帐仍然是成功的。

在ACID的保障下,无论进行何种操作,小王的账号始终为400 ¥。

2.1.4 可靠性–事务持久化

事务的持久性(Durability)主要通过预写式日志WAL算法实现。WAL日志有两种类型:REDO日志和UNDO日志,REDO日志是记录的后影像,UNDO日志是记录的前影像;WAL日志规则:在事务提交时,采用预写式日志方式,把REDO日志写到磁盘。


图2-4 REDO日志

 

2.1.5 可靠/可用性-通过备份、主备、容灾实现

备份是对数据库内容做一个镜像,防止磁盘硬件故障时,还原原始数据防止数据丢失,提升系统的可靠性。备份可以分为物理备份和逻辑备份。物理备份是将实际组成数据库的文件备份的过程,该方法可以实现数据库的完整恢复。逻辑备份为利用SQL语言从数据库中抽取数据并保存,主要用于增量备份。

主备是通过复制技术将数据库的数据同步到同一DC另一台主机上。

容灾是通过复制技术将数据库的数据同步到异地DC另一台主机上。


图2-5 主备容灾架构

2.1.6 性能/性价比-业界评价的benchmark

为了对数据库的性能进行评估,TPC-C和TPC-H分别提供了对OLTP和OLAP的性能/性价比测试标准。TPC(Transaction processing Performance Council,事务处理性能委员会)是由数十家会员公司创建的非盈利组织,总部设在美国。TPC的成员主要是计算机软硬件厂家,而非计算机用户,其功能是制定商务应用基准程序的标准规范、性能和价格度量,并管理测试结果的发布。TPC-H通过模拟一个批发商的商业数据信息分析系统来评估数据库的分析能力和成本。TPC-H有两个重要指标,分别为QphH:每小时处理的分析查询个数,$/QphH:处理每个分析查询所消耗的软硬件成本;TPC-C是通过模拟一个大型的批发销售公司的订单处理流程来评估数据库事务处理性能和性价比。同样的,TPC-C也有两个指标来评价数据库性能,分别是TPMC:每分钟处理订单事务的个数,$/TPMC:处理每一个订单事务所消耗的软硬件成本。

2.1.7 扩展性-集中式VS分布式

最早出现的数据库架构为Shared Everything架构,一个DB对应一个磁盘。其优势在于结构单一,易于部署。缺陷在于无法横向扩展,储存空间和计算性能方面存在巨大瓶颈,其代表产品由Oracle,db2;然后便是Shared Disk架构,由多个DB对应一个磁阵。各个处理单元使用自己的私有CPU和Memory,共享磁盘系统。数据共享,可通过增加节点来提高并行处理的能力,扩展能力较好。通过SMP(对称多处理)并行能够一定程度提高性能,但是当存储器(Memory)接口达到饱和的时候,增加节点并不能获得更高的性能,代表产品有Oracle RAC;Shared Nothing架构中各个处理单元都有自己私有的CPU/内存/硬盘等,不存在共享资源,MPP(大规模并行处理)模式,各处理单元之间通过协议通信,并行处理和扩展能力更好。各节点相互独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转。优势为复杂SQL并行度高,性能更好,其限制在于数据需要指定分片规则、并发扩展能力受限、计算节点间网络带宽占用高。代表产品:Teradata、GreenPlum、GaussDB(DWS)。


图2-6 传统SMP架构VS.全并行MPP架构

对于传统的SMP架构来说,由于资源有限,只能顺序地执行任务,并行度较差,计算能力和扩展性差;而MPP架构的课扩展性好,将事务拆分后下发到多个DN节点进行计算,能大大提高数据运算的速度,减少计算的周期。

 

 

 

3.参考文献:

[1]. 【2021年 EI服务产品部 新员工训练营第二期 】第七节课培训主题:《大数据基础知识理论》&《数据库基础知识理论》 ----智伟/ 380521、赵平仲 /407649 - EI服务产品部 - 3ms知识管理社区 (huawei.com)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。