第一章 数据库介绍
一、 数据库技术:
1、数据(Data)
? 数据的含义称为数据的语义。
2、数据库(Database,DB)
1,数据库是存放数据的仓库,是大量数据的集合。
2,存放在数据库中数据的特点:
3、数据库管理系统(DBMS)
? 数据库管理系统是一个能科学地组织和存储数据,高效地获取和维护数据的系统 软件,是位于用户和操作系统之间的 数据管理软件,其主要功能包括:
- 数据定义功能
- 数据组织、存储和管理功能
- 数据操纵功能
- 数据库的事务管理和运行管理功能
- 数据库的建立和维护功能
- 与其他软件系统的通信功能等
4、数据库系统(Database System,DBS)
? 数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理、和维护数据的系统。
二、数据库发展史:
1、三个阶段:
2、数据库系统优势:
1,整体数据的结构化
? 数据面向整个体统而不是单个应用,被多个应用共享。
2,数据共享性高,冗余度低且易扩充
3,数据的独立性高
? 物理独立性:应用程序与数据库中数据的物理存储是相互独立的。
? 逻辑独立性:应用程序与数据库的逻辑结构是相互独立的。
4,统一管理和控制
- 数据的安全性保护
- 数据的完整性检查
- 并发控制
- 数据库恢复
三、结构化查询语言——Structured Query Language
1、SQL语言
- 高级的非过程化编程语言,允许用户在高层数据结构上工作
- 不要求用户指定数据存放方式
- 底层结构完全不同的各种关系型数据库系统可以使用相同的SQL语言作为数据操作和管理的接口
2、NoSQL数据库
四、云数据库
1、云数据库比传统数据库的优势
- 易 易使用,易管理
- 稳 高可靠,跨地域容灾备份
- 快 读写延时低
- 弹 扩展性好,快速自动弹性伸缩
- 密 数据安全性好,全同态加密
五、关系型数据库架构发展
1,单机架构
- 单机架构
- 为了避免应用服务与数据库服务对资源的竞争,单机架构也从早期的单主机模式发展到数据库独立主机模式,把应用和数据服务分开。应用服务可以增加服务器数量,进行负载均衡,增大系统并发能力。
- 优点
- 缺点
- 可扩充性
- 数据库单机架构扩展性只有纵向扩展。通过增加硬件配置来提升性能,但单台主机的硬件可配置资源会遇到上限。
- 存在单点故障
- 扩容的时候往往需要停机,服务停止。
- 硬件故障导致整个服务不可用,甚至数据丢失。
- 单机会遇到性能瓶颈
2、分组架构 - 主备
- 主备机架构
- ? 数据库部署在两台服务器,其中承担数据读写服务的服务器称为"主机"。
- 另外一台服务器利用数据同步机制把主机的数据复制过来,称为“备机”。
- 同一时刻,只有一台服务器对外提供数据服务。
- 优点
- 应用不需要针对数据库故障增加开发量
- 相对单机架构提升了数据的容错性。
- 缺点
- 资源浪费
- 性能压力还是集中在单机上,无法解决性能瓶颈问题
- 当出现故障时候,主备机切换需要人工干预或监控
3、分组架构 - 主从
- 主从式架构
- 部署模式和主备模式相似,备机上升为从机,对外提供一定数据服务。
- 通过读写分离式分散压力
- 读写,修改,删除操作,在主机上完成
- 查询请求,主机上完成
- 优点
- 提升资源利用率,适合读多写少的应用场景
- 在大并发读的使用场景,可以使用负载均衡在多个从机间进行平衡
- 从机的扩展性比较灵活,扩容操作不会影响到业务进行
- 缺点
- 数据同步到从机数据库时会有延迟
- 写操作的性能压力还是集中在主机上
- 主机出现故障,需要实现主从切换,人工干预需要相应时间
4、分组架构 - 多主
- 多主架构
- 优点
- 缺点
- 要实现数据的双向同步,双向复制同样会带来延迟问题,极端境况下有可能数据丢失
- 数据库数量增加导致数据同步问题变得极为复杂
5、共享存储多活架构(Shared - Disk)
-
共享存储多活架构(Shared - Disk)
- 一种特殊的多主架构
- 数据库服务器共享数据存储,而多个服务器实现均衡负载。
-
优点
- 多个计算服务器提高可用服务,提供了高级别的可用性。可伸缩性,避免了服务器集群的单点故障问题
- 比较方便的横向扩展能够增加群体系统并发处理能力
-
缺点
- 实现技术难度大
- 当存储器接口带宽达到饱和的时候,增加节点并不能获得更高的性能,存储IO容易成为整个系统的性能瓶颈
6、分片架构(Sharding)架构
- 分片架构的主要表现形式就是水平数据分片架构
- 把数据分散在多个节点上的分片方案,每个分片包括数据库的一部分,称为shard
- 多个节点都拥有相同的数据库结构,但不同分片数据之间没有交集,所有分区数据并集构成数据总体
- 常见的分片算法有:根据列表值,范围取值和Hash值进行数据分片
- 优点
- 数据分散在集群内的各个节点,所有节点可以独立性工作。
7、无共享(Shared - Nothing)架构
- 无共享架构
- 集群中每个节点都完全拥有自己独立的CPU/内存/存储,不存在共享资源
- 各节点处理自己的本地数据,处理结果可以向上层汇总或者通过通信协议在节点间流转
- 节点是相互独立的,扩展能力强,整个集群拥有强大的并行处理能力
数据库架构特点对比
特点 | 单机 | 主备 | 主从 | 多主 | 分片 |
---|
高可用性 | 差 | 一般 | 较好 | 好 | 好 | 读写性能 | 依赖于单主机的硬件性能瓶颈 | 赖于单主机的硬件性能瓶颈 | 利用读写分离,写性能受主机限制,读性能可以通过增加从机数量来提升并发能力 | 多个主机能够同时提供读写服务,具备较好的读写能力 | Shared - Nothing架构提供了出色的分布式计算能力,具备强大的并行处理能力 | 数据一致性 | 不存在数据一致性的问题 | 利用数据同步机制在主备机之间进行同步,存在数据延迟问题和数据丢失风险 | 同主备模式,且从机数量增加,数据延迟问题和数据丢失风险更为突出 | 多个主机之间需要进行数据双向同步,容易产生数据的不一致性,但对于Shared - Disk架构不存在此问题 | 基于sharding技术,数据分散在各个节点,节点之间不需要数据同步,所以不存在数据一致性问题 | 可扩展性 | 只能纵向扩展,会遇到单机硬件性能瓶颈 | 只能纵向扩展,会遇到单机硬件性能瓶颈 | 从机可以通过横向扩展来提升并发读能力 | 扩展性好,但是主机数量增加,会导致数据同步复杂性急剧升高 | 理论上可以实现线性扩展,线性扩展性最高 |
六、关系型数据库主流应用场景
1、联机事务处理( OnLine Transaction Processing )
-
OLTP是传统关系型数据的主要应用
- 面向基本的日常的事务处理,例如银行的存储业务的存取交易,转账交易等。
-
特点
- 大吞吐量:大量的短在线事务(插入、更新、删除),非常快速的查询处理。
- 高并发,实时相应。
-
典型的OLTP场景
2、联机分析处理( OnLine Analytical Processing )
- OLAP
- 是指对数据的查询和分析操作,通常对大量历史数据查询和分析。涉及到的历史周期比较长,数据量大等
- 特点
- 主要面向侧重于复杂的查询,回答一些"战略性"的问题
- 数据处理方面聚焦于数据的聚合,汇总,分组计算,窗口计算等"分析型"数据加工和操作
- 从多维度去使用和分析数据
- 典型的OLAP场景
- 报表系统,CRM系统(客户管理系统)
- 金融风险预测预警系统、反洗钱系统
- 数据集市,数据仓库
3、OLTP和OLTP对比分析
分类 | OLTP | OLAP |
---|
分析粒度 | 细节的 | 细节的,综合的或提炼的 | 时效性 | 在存取瞬间是准确的 | 代表过去的数据 | 数据更新需求 | 可更新 | 一般情况无需更新 | 操作可预知性 | 操作需求事先可知道 | 操作需求事先可能不知道 | 实时性 | 要求较高、相应毫秒级、秒级 | 要求相对宽松,相应分钟级、小时级 | 数据量 | 一个时刻操作一条或几条记录,数据量小 | 一个时刻操作以一集合,数据量大 | 驱动方式 | 事务驱动 | 分析驱动 | 应用类型 | 面向应用 | 面向分析 | 应用场景 | 支持日常运营 | 支持管理需求 | 典型应用 | 银行核心系统、信用卡系统 | ACRM、风险管理 |
|