HCIA-openGauss_1
1.1数据库介绍
- 数据是事实或观察的结果,是对客观事物的逻辑归纳,用于表示客观事物的未加工的原始素材。
- 数据是信息的表现形式和载体,可以是符号、文字、数字、语音、图像、视频等。数据和信息是不可分离的,数据是信息的内涵,数据本身没有意义,数据只有对实体行为产生影响时才成为信息。
- 在计算机系统中,各种字母、数字符号的组合,语音、图形、图像等统称为数据,数据以二进制信息单元0/1形式表示,数据经过加工后就成为信息。
- 表现形式:
- 数字数据:由离散的符号、文字、阿拉伯数字符号构成的数据,如各自统计或测量数量。
- 模拟数据:模拟数据是指在某个区间产生的连续值,如视频、图像、文字、声音等
- 数据库是指长期存储在计算机内、有组织、可共享的大量的数据的集合。数据库中的数据按照一定的数据模型组织、描述和存储,具有较小冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
- 数据库管理系统(Database-Management System,DBMS)有一个互相关联的集合和一组可以访问这些数据的程序组成。这个数据集合通常被称为数据库(Database)。DMBS的主要目的是提供一种可以方便、高效地存取数据库信息的途径。
- DBMS 充当数据库与其用户或者程序之间的接口,允许用户检索、更新和管理信息的组织和优化方式。此外,DBMS还有助于监督和控制数据库,提供各种管理操作,例如性能监视、调优、备份和恢复。
- 具有代表性的数据库管理系统有:Oracle、Microsoft SQL Server、Access、MySql及PostgreSQL等。
数据库管理系统-功能介绍
- 数据定义功能
- 数据操纵功能
- 数据库的运行管理
- 提供方便、有效地存取数据库信息的接口和工具
- 数据库的建立和维护功能
数据库系统DBS
-
数据库系统(Database System,DBS)由硬件和软件共同组成。硬件主要用于存储数据库存中的数据,包括计算机、存储设备等。软件部分主要包括数据库管理系统、支持数据库管理系统运行的操作系统,以及支持多种语言进行应用开发的访问技术等。
-
数据库系统是批在计算机系统中引入数据库后的系统。一个完整的数据库系统一般由数据库、数据库管理系统、应用开发工具、应用系统、数据库管理员和用户组成。
数据管理技术的三个发展阶段
- 数据管理就是对各种数据进行分类、组织、编码、查询和维护,主要经历了3个阶段。即人工管理阶段、文件系统阶段和数据库系统阶段。每一个阶段都是以减小数据冗余、增强数据独立性和方便操作数据为目的的进行发展。
- 数据管理经历的各个阶段都有自己的背景及特点。
数据库模型
数据库自二十世纪中期以来,诞生了像层次模型(Hierarchical Model)、网状模型(Network Model)、关系模型(Relational Model)等很多种有趣的数据库模型,有些数据库模型发挥了其作用后,逐渐退出历史舞台;有些数据库模型经受住了历史地考验,如今依然站立在时代的潮头。
结构化查询语言SQL
SQL(Structured Query Language)是结构化查询语言的简称,是关系数据库的标准语言
事务transaction
事务(Transactiion)是由一系列对系统中数据进行访问或更新的操作所组成的一个程序执行逻辑单元(Unit)。在计算机术语中,事务通常就是批数据库事务。
数据库事务通常包含了一个序列的对数据库的读/写操作。包含有以下两个目的:
- 为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同是提供了数据库即使在异常状态下仍能保持一致性的方法。
2.当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。
事务的状态:
因为事务具有原子性,所以从外部看的话,事务就是密不可分的一个整体,事务的状态也只有三种:Active、Committed和Failed,事务要不就在执行中,要不然就是成功或者失败的状态。
关系型数据库ACID特性
- 原子性(Atomicity)
事务是数据库逻辑工作单位,事务中的操作,要么都做,要么都不做。
- 一致性(Consistency)
事务的执行结果必须是使数据库从一个一致性状态转到另一个一致性状态
- 隔离性(Isolation)
数据库中一个事务的执行不能被其他事务干扰。即一个事务的内部操作及使用的数据对其他事务是隔离的,并发执行的各个事务不能相互干扰。
- 持久性(Durability)
事务一旦提交,对数据库中数据的改变是永久的。提交后的操作或者故障不会对事务的操作结果产生任何影响。
数据库的挑战
如今,大型企业数据库一般都支持高复杂的查询,同时用户也希望数据库能近乎实时地响应查询。因此数据库管理系统经常需要采用种种方法来帮助企业改善性能。他们面临一些常见挑战包括:
应对数据量的大幅增长。来自传感器、联网设备和许多其他来源的数据呈爆炸式增长,使数据库存管理员忙于数据管理和级织。
确保数据安全。如今灵气泄露无处不在,黑客们的攻击手段层出不穷。因此,在确保用户轻松访问数据的同时保障数据安全比以往任何时候都更加重要。
满足不断变化的需求。在当今快速发展的商业环境中,企业需要实时访问数据,以便及时做出最佳决策,把握新机遇。
管理和维护数据库与基础设施。数据库管理员需要持续监视数据中的问题并开展预防性维护,以及应用软件升级和打补丁。随着数据库的日益复杂和数据量的日益增长,企业需要招聘更多的人员来监视和调优数据库,开销也随之增加。
突破可扩展性限制。
NoSQL
NoSql,泛指非关系型数据库,NoSQL有时也称作Not Only SQL的缩写,是以于不同于传统型的关系型数据库的数据库管理系统的统称。
面向高性能并发读写的key-value数据库
面向海量数据访问的面向文档数据库
面向搜索数据内容的搜索引擎
面向可扩展性的分布式数据库
NoSQL-CAP理论
NoSQl的基本需求就是支持分布式存储,严格一致性与可用性需要互相取舍
CAP理论
C(Consistency)一致性
A(Availability)可用性
P(Partition tolerance)分区容错性
NewSQL
NewSQL被定义为下一代数据的发展方向,是对各种可扩展/高性能数据库的简称,兼具Nosql数据库的海量存储管理能力和关系数据库的ACID特性和SQl便利性
SQL+NoSQL = NewSQL
关系型数据库架构演进
演变1:数据库读写分离;演变2:数据库垂直分库;演变3:数据库的水平分库与水平分表
单机架构
为了避免应用服务和数据库服务对资源的竞争,单机架构也从早期的单主机模式发展到数据库独立主机模式,把应用和数据服务分开。应用服务可以增加服务器数量,进行负载均衡,增大系统并发能力。
优点:部署集中,运维方便
缺点:
可扩展性:数据库单机架构扩展性只有纵向扩展(SCale-up),即通过增加硬件配置来提升性能,但单台主机的硬件可配置的资源会遇到上限。
存在单点故障:扩容的时候往往需要停机扩容,服务停止;硬件故障导致整个服务不可用,甚至数据丢失。
单机会遇到性能瓶颈
分组架构-主备
数据库部署在两台服务器,其中承担数据读取服务的服务称为"主机",另外一台服务器利用数据同步机制把主机的数据复制过来,称为"备机"。同一时间点,只有一台服务器对外提供数据库服务。
优点:
应用不需要针对数据库故障来增加开发量。
相对单机架构提升了数据容错性。
缺点:
资源浪费,备机和主机同等配置,但是长期范围内基本上资源闲置,无法利用。
性能压力还是集中在单机上,无法解决性能瓶颈问题。
当出现故障时候,主备机切换需要一定的人工干预或者监控。
分组架构-主从
主从式架构:
部署模式和主备机模式相似,备机(Backup)上升为从机(Slave),对外提供一定的数据服务,通过读取分离方式分散压力;
写入、修改、删除操作,在写库(主机)上完成;把查询请求,分配到读库(从机)。
优点:
提升资源利用率,适合读多写少的应用场景。
在大并发读的使用场景,可以使用负载均衡在多个主机间进行平衡。
从机的扩展性能比较灵活,扩容操作不会影响到业务进行。
缺点:
延迟问题,数据同步到从机数据库时会有延迟,所以应用必须能容忍短暂的不一致性,
对于一致性要求非常高的场景是不适合的。
写操作的性能压力还是集中在主机上。
主机出现故障,需要实现主从切换,人工干预需要响应时间,自动切换复杂度较高。
分给架构--多主
多主架构:数据库服务器互为主从,同是对外提供完整的数据服务。
优点:资源利用率较高的同时降低了单点故障的风险。
缺点:
双主机都接受写数据,要实现数据双向同步。双向复制同样会带来延迟问题,极端情况下有可能数据丢失。
数据库数量增加会导致数据同步问题变得极复杂, 实际应用中多见双机模式。
共享存储Shared Disk
共享存储Shared Disk
共享存储的多活架构(Shared Disk)一种特殊的多主架构。数据库服务器共享数据存储,而多个服务器实现均衡负载。
优点:
多个计算服务提供高可用服务,提供了高级别的可用性。可伸缩性,避免了服务器集群的单点故障问题。
比较方便的横向扩展能够增加整体系统并行处理能力。
缺点:
实现技术难度大。
当存储器接口带宽达到饱和的时候,增加节点并不能获得更高的性能,存储IO容易成为整个系统的性能瓶颈。
分片架构Sharding
分片(Sharding)是一种与水平切分(horizontal partitioning)相关的数据库架构模式--将一个表里面的行,分成多个不同表的做法(称为分区)。第个分区都具有相同的模式和列,但每个表有完全不同的行。同样,每个分区中保存的数据都是唯一的,并且与其他分区中保存的数据无关。
从水平切分(horizontal partitioning)与垂直切分(vertical partitioning)的关系,可能会有所帮助。在垂直切分表中,所有的列被分离出来,并放入新的不同的表中。每个垂直切分的数据,独立于所有其他分区中的数据,并且每个分区都包含不同的行和列。