[数据库][华为云数据库全栈成长计划][学习笔记][01_数据库介绍]

网友投稿 650 2022-05-29

1,数据库介绍

前言

在当今云化率越来越高的时代,以华为云HCIA数据库认证为路径系统学习数据库知识,并结合传统数据库来得出新的思考和观点,取得进步。

数据库从诞生之日起至今已近60年,从早期单纯地对数据文件的保存和处理,发展出以数据建模和数据库管理系统核心技术为主的一门内容丰富的学科,成为现代计算机应用系统的基础和核心.伴随着互联网、大数据、人工智能等技术的蓬勃兴起,数据库技术和产品更是百花齐放,带动了一个巨大的软件产业的发展。

本章主要讲述数据库的基本概念,数据库技术的发展历史,关系型数据库的关系演进以及关系型数据库的主流应用场景。

1.1,数据库技术概述

数据库技术

数据库技术是数据管理的有效技术,研究如何对数据进行科学管理,从而为人们提供可共享的、安全的、可靠的数据。数据库技术包括数据、数据库、数据库系统、数据库管理系统。

数据(Data)

早期的计算机系统主要用于科学计算,处理的数据是数值型数据:

整数:1,2,3,4,5…

浮点数:3.14,100.34,-123.4

现代计算机系统的数据概念是广义的:

数字、文字、图形、图像、音频、视频等。

描述事务的符号记录称为数据。

数据除了表现形式之外,还有语义。

数据的含义称为数据的语义。

记录

记录是在计算机中表示和存储数据的一种格式或一种方法。

例如:

数据库(Database,DB)

数据库是存放数据的仓库,是大量数据的集合。

存放在数据库中数据的特点

永久存储

有组织

可共享

数据库管理系统(DBMS)

数据库管理系统是一个能够科学地组织和存储数据,高效地获取和维护数据的系统软件,是位于用户与操作系统之间的数据管理软件,其主要功能包括:

数据定义功能;

数据组织、存储和管理功能;

数据操纵功能;

数据库的事务管理和运行管理功能;

数据库的建立和维护功能;

与其他软件系统的通信功能等。

数据库系统(Database System,DBS)

数据库是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。

思考题

存放在数据库中的数据的特点是:(永久存储;有组织;可共享)

属于数据库系统这个概念范围的组成部分有:(数据库;数据库管理系统;应用程序)

数据库应用程序可以不经过数据库管理系统而直接读取数据库文件(错误)

1.2,数据库技术发展史

数据库技术应数据管理任务的需要而产生。

数据管理的发展

应用需求推动;

软硬件的飞速发展为基础;

三个阶段:人工管理、文件系统、数据库系统。

数据管理三个阶段比较

数据库系统优势

整体数据结构化

数据面向整个系统而不是单个应用,被多个应用共享。

数据的共享性高,冗余度低且易扩充。

数据独立性高

物理独立性:应用程序与数据库中数据的物理存储是相互独立的。

逻辑独立性:应用程序与数据库的逻辑结构是相互独立的。

统一管理和控制

数据的安全性保护;

数据的完整性检查;

并发控制;

数据库恢复。

数据库系统发展特点

数据库系统已经成为计算机信息系统和智能应用系统的核心技术之一和重要基础。

数据库系统的发展特点

数据库的发展集中表现在数据模型的发展上;

与其他计算机技术交叉结合;

面向应用领域发展数据库新技术。

层次,网状,关系模型

层次模型

有且只有一个节点没有双亲,该节点被称为根节点(root)。

根节点之外的其他节点有且只有一个双亲结点。

网状模型

允许一个以上的节点无双亲。

一个节点可以有多于一个的双亲。

关系模型(重点)

建立在严格的数据概念基础上。

关系必须是规范化的。

关系的分量必须是一个不可分的数据项。

层次,网状,关系模型对比

结构化查询语言 - Structured Query Language

SQL语言

高级的非过程化编程语言,允许用户在高层数据结构上工作;

不要求用户指定数据存放方法;

不需要用户了解具体数据存放方式;

底层结构完全不同的各种关系型数据库系统可以使用相同的SQL语言作为数据操作和管理的接口。

其他数据模型

面向对象数据模型(Object Oriented Data Model,OO模型)

将语义数据模型和面向对象程序设计方法结合起来,用一系列面向对象核心概念构成模型基础。

由于面向对象数据库操作语言过于复杂,没有得到开发人员认可。

XML数据模型

可扩展标记语言(extensible markup language,简称XML),是W3C在1998年指定的一项标准,被作为互联网信息交换的标准。

XML模型是由若干带有标签的节点组成的有向树,是一种分层自描述模型,具有良好的语义和可扩展性,可以灵活地表示和组织数据,并提供高效的查询方式,例如XPath,XQuery,关键字查询,子树匹配等。

RDF数据模型

互联网的信息没有统一表达方式,W3C提出资源描述框架(Resource Description Framework,RDF)来描述和注解互联网资源。

RDF是描述互联网资源的标记语言,结构为(主语,谓词,宾语)

主要用于语义网、知识库的基础数据模型,是当前知识图谱技术的基石。

数据管理技术的新挑战

高度可扩展性和可伸缩性

随着数据获取手段的自动化,多样化和智能化,导致数据量急剧增大。

数据类型多样和异构处理能力

结构化数据到半结构化/非结构化数据;

文本到图形图像,音频视频等多媒体数据;

流数据,队列数据。

数据处理时效性要求

传感、网络和通信技术发展对于数据快速流入和处理,实时性方面提出了更高要求。

大数据时代来临(重点)

传统关系型数据库面对海量异构、形式繁杂、高速增长、价值密度低的数据问题遇到全面挑战。

NoSQL和NewSQL技术顺应大数据发展的需要,蓬勃发展。

大数据时代的5V特征

Volume,数量

Variety,多样性

Value,价值

Velocity,速度

Veracity,真实

大数据时代的管理需求

高可扩展性

高性能

容错性

高伸缩性

NoSQL技术特点和类型

NoSQL(Not Only SQL)

非关系型、分布式的、不保证满足ACID特性的一类数据管理系统。

技术特点

对数据进行分区(partitioning),利用大量节点并行处理获得高性能,同时能够采用横向扩展方式(scale out);

降低ACID一致性约束,允许暂时不一致,接受最终一致性。遵循CAP理论和BASE原则;

各数据分区提供备份(一般是三份),应对节点故障,提高系统可用性。

常见的NoSQL数据库技术

Key-Value,键值数据库

Graph DB,图数据库

Column Family,列式数据库

Document,文档数据库

主要NoSQL数据库简介

NoSQL并不是为了取代RDBMS

优势显著,缺点也明显

与RDBMS一起构建完整的数据库生态系统

NewSQL浅谈

NewSQL

指追求NoSQL的可扩展性同时能够支持关系模型(包括ACID特性)的关系型数据库系统,主要面向OLTP场景。

能够支持SQL作为主要的使用语言。

NewSQL的分类

采用了新架构重新构建产品

Shared-Nothing,多节点并发控制,分布式处理,利用复制实现容错,流式控制等技术架构。

Google Spanner,H-Store,VoltDB等。

采用Transparent Sharding中间件技术。

数据分片(sharding)的过程对于用户来说是透明的(transparent),用户的应用程序不需要做出变化。

Oracle MySQL Proxy,MariaDB MaxSacle等。

DAAS(Database-as-a-Service,数据库即服务)。

云服务商提供的数据库产品,云服务商提供具备NewSQL特性的数据库产品。

Amazon Aurora,阿里云的Oceanbase,腾讯云的CynosDB。

云数据库

在全新的时代背景下,商业数据库因其昂贵、高运维难度以及低扩展性和可用性受到挑战。在5G+云计算的强力冲击下,云数据库的格局已经悄然发生变化。

云数据库是指被优化或部署到一个虚拟计算环境中的数据库。

传统数据库 VS 云数据库(1)

Gartner的最新报告(2019年)指出,云将主导数据库市场的未来,到2022年,75%的数据库将被部署或迁移至云平台,只有5%的数据库会考虑部署在本地。

"易、稳、快、弹、密"是对DBaaS的需求,也是其演进方向。

传统数据库 VS 云数据库(2)

思考题

数据管理的发展历史上经历了哪几个阶段?(人工,文件系统,数据库系统)

允许一个以上的节点无双亲,一个节点可以有多于一个的双亲,这些特性对应哪种数据模型?(网状模型)

属于NoSQL数据库的是:(图数据库,文档数据库,键值数据库,列分组数据库)

NoSQL和NewSQL数据库的出现能够彻底颠覆和取代原有的关系型数据库系统。(错误)

1.3,关系型数据库架构演进

数据库架构发展

随着业务规模增大,数据库存储的数据量和承载的业务压力也不断增加,数据库的架构需要随之变化,为上层应用提供稳定和高效的数据服务。

单机架构

为了避免应用服务和数据库服务对资源的竞争,单机架构也从早期的单主机模式发展到数据库独立主机模式,把应用和数据服务分开。应用服务可以增加服务器数量,进行负载均衡,增大系统并发能力。

部署集中,运维方便

可扩展性

数据库单机架构扩展性只有纵向扩展(Scale-up)。通过增加硬件配置来提升性能,但单台主机的硬件可配置的资源会遇到上线。

存在单点故障

扩容的时候往往需要停机扩容,服务停止。

硬件故障导致整个服务不可用,甚至数据丢失。

单机会遇到性能瓶颈。

分组架构-主备

数据库部署在两台服务器,其中承担数据读写服务的服务器称为"主机"。

另外一台服务器利用数据同步机制把主机的数据复制过来,称为"备机"。

同一时刻,只有一台服务对外提供数据服务。

应用不需要针对数据库故障来增加开发量。

[数据库][华为云数据库全栈成长计划][学习笔记][01_数据库介绍]

相对单机架构提升了数据容错性。

资源浪费,主备机同等配置,但长期范围内基本上资源限制,无法利用。

性能压力还是集中在单机上,无法解决性能瓶颈问题。

当出现故障时候,主备机切换需要一定的人工干预或者监控。

分组架构-主从

部署模式和主备机模式相似,备机(Backup)上升为从机(Slave),对外提供一定的数据服务。

通过读写分离方式分散压力:

写入、修改、删除操作,在写库(主机)上完成;

把查询请求,分配到读库(从机)。

提升资源利用率,适合读多写少的应用场景。

在大并发读的使用场景,可以使用负载均衡在多个从机间进行平衡。

从机的扩展性比较灵活,扩容操作不会影响到业务进行。

延迟问题,数据同步到从机数据库时会有延迟,所以应用必须能够容忍短暂的不一致性。对于一致性要求非常高的场景是不适合的。

写操作的性能压力还是集中在主机上。

主机出现故障,需要实现主从切换,人工干预需要响应时间,自动切换复杂度较高。

分组架构-多主

数据库服务器互为主从,同时对外提供完整的数据服务。

资源利用率较高的同时降低了单点故障的风险。

双主机都接受写数据,要实现数据双向同步。双向复制同样会带来延迟问题,极端情况下有可能数据丢失。

数据库数量增加会导致数据同步问题变得极为复杂,实际应用中多见双机模式。

共享存储多活架构

一种特殊的多主架构

数据库服务器共享数据存储,而多个服务器实现负载均衡。

多个计算服务器提供高可用服务,提供了高级别的可用性。可伸缩性,避免了服务器集群的单点故障问题。

比较方便的横向扩展能够增加整体系统并行处理能力。

实现技术难度大

当存储器接口带宽达到饱和的时候,增加节点并不能获得更高的性能,存储IO容易成为整个系统的性能瓶颈。

分片(Sharding)架构

把数据分散在多个节点上的分片方案,每一个分片包括数据库的一部分,称为一个shard。

多个节点都拥有相同的数据库架构,但不同分片的数据之间没有交集,所有分区数据的并集构成数据总体。

常见的分片算法有:根据列表值,范围取值和Hash值进行数据分片。

数据分散在集群内的各个节点上,所有节点可以独立性工作。

无共享(Shard-Nothing)架构

集群中每一个节点(处理单元)都完全拥有自己独立的CPU/内存/存储,不存在共享资源。

各节点(处理单元)处理自己本地的数据,处理结果可以向上层汇总或者通过通信协议在节点间流转。

节点是相互独立的,扩展能力强。整个集群拥有强大的并行处理能力。

MPP架构(Massively Parallel Processing)

MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果。

任务并行执行,分布式计算。

无共享Master:Vertica,Teradata。

共享Master:Greenplum,Netezza。

所有节点对等;

可以通过任意节点查询或加载数据;

不存在性能瓶颈和单点风险。

数据库架构特点对比

思考题:

主备架构可以通过读写分离方式来提高整体的读写并发能力。(错误,主从架构才能通过实现读写分离方式)

哪种数据库架构具有良好的线性扩展能力?(Shard-Nothing架构)

分片架构的特点就是通过一定的算法把数据分散在集群的各个数据库节点上,利用集群内服务器数量的优势进行并行计算(正确)

1.4,关系型数据库主流应用场景

联机事务处理(OnLine Transaction Processing)

面向基本的,日常的事务处理,例如银行储蓄业务的存取交易,转账交易等。

大吞吐量:大量的短在线事务(插入,更新,删除),非常快速的查询处理。

高并发,(准)实时响应

零售系统

金融交易系统

火车票销售系统

秒杀活动

联机分析系统(OnLine Analytical Processing)

联机分析处理的概念最早是E.F.Codd于1993年相对于OLTP系统而提出的。

是指对数据的查询和分析操作,通常对大量的历史数据查询和分析。涉及到的历史周期比较长,数据量大,在不同层级上的汇总,聚合操作使得事务处理操作比较复杂。

主要面向侧重于复杂查询,回答一些"战略性"的问题。

数据处理方面聚焦于数据的聚合,汇总,分组计算,窗口计算等"分析型"数据加工和操作。

从多维度去使用和分析数据。

报表系统,CRM系统。

金融风险预测预警系统,反洗钱系统。

数据集市,数据仓库

OLTP和OLAP对比分析

数据库性能衡量指标

职责是指定商务应用基准测试标准(Benchmark)的规范、性能和价格度量,并管理测试结果的发布。

制定的是标准规范而不是代码,任何厂家依据规范最优地构造自己系统进行评测。

推出了很多基准测试标准,其中针对OLTP和OLAP分别有两个规范。

面向OLTP系统,主要包括两个指标

流量指标:tpmC(tpm-transactions per minute,每分钟测试系统处理的事务数量)

性价比指标:Price(测试系统价格)/tpmC

面向OLAP类系统

流量指标:qphH-Query per hour,每小时处理的复杂查询数量。

需要考虑测试数据集合大小,分为不同的测试数据集,指定了22个查询语句,可以根据产品微调。

测试场景:数据加载,Power能力测试和Throughput测试。

思考题:

衡量OLTP系统的测试指标包括:(tpmC,Price/tmpC)

OLAP系统适用下面哪些场景?(报表系统,数据仓库)

OLAP系统能够对大量数据进行分析处理,所以同样能够满足OLTP对于小数据量处理的性能要求。(错误)

数据库

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【FFmpeg】FFmpeg 帮助文档使用
下一篇:传统企业建站难?不用懂代码,这个工具7天就能搞定
相关文章