数据库技术概述
数据(data)
早期计算机系统主要用于科学计算,数据主要指数值型数据
现代的计算机系统数据是广义的,包括数字、文字、视频、音频等
语义:一个数据可以代表不同的属性
数据库(database,db)
数据库是存放数据的仓库,是大量数据的集合
数据库中数据的特点:永久存储、有组织、可共享
数据库管理系统(dbms)
数据库管理系统是一个能够科学地组织和存储数据,高效的获取和维护数据的系统软件,是位于用户和操作系统之间的数据管理软件。
功能主要包括:数据定义功能;数据组织、存储和管理功能;数据操纵功能;数据库的事务管理和运行管理功能;数据库的建立和维护功能;与其他软件系统的通信功能。
数据库系统(database system,dbs)
数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。
数据库技术发展史
数据库技术应数据管理任务的需要而产生
数据管理的发展
应用需求推动
软硬件的飞速发展为基础
三个阶段:人工管理、文件系统、数据库系统
数据管理三个阶段比较
数据库系统优势
整体数据的结构化
数据的共享性高,冗余度低且易扩充
数据独立性高(物理、逻辑)
统一管理和控制(安全性保护、完整性检查、并发控制、数据库恢复)
数据库系统发展特点
数据库的发展集中表现在数据模型的发展上
与其他计算机技术交叉结合
面向应用领域发展数据库新技术
三大经典数据模型
层次模型
有且仅有一个节点没有双亲,则为根节点(root)
根节点以外的节点有且只有一个双亲节点
网状模型
允许一个以上节点无双亲
一个节点可以有多个双亲
关系模型
建立在严格的数据概念基础上
关系必须是规范化的
关系的分量必须是一个不可分的数据项
三种模型对比
结构化查询语言(structured query language)-sql语言
高级的非过程化编程语言,允许用户在高层数据结构上工作
不要求用户指定数据存放方法
不需要用户了解具体数据存放方式
底层结构完全不同的各种关系型数据库系统可以使用相同的sql语言作为数据操作和管理的接口
关系型数据库acid特性
原子性(atomicity):事务是数据库的逻辑工作单位,事务中的操作,要么都做,要么都不做
一致性(consistency):事务的执行结果必须是使数据库从一个一致性状态转到另一个一致性状态
隔离性(isolation):数据库中一个事务的执行不能被其他事物干扰。即一个事务的内部操作及使用的数据对其他事务是隔离的,并发执行的各个事务不能相互干扰
持久性(durability):事务一旦提交对数据库中数据的改变是永久的。提交后的操作或者故障不会对事务的操作结果产生任何影响
数据管理技术的新挑战
高度可扩展性和可伸缩性
数据类型多样和异构处理能力
数据处理时效性要求
大数据时代来临
nosql(not only sql)
非关系型的、分布式的、不保证满足acid特性的一类数据管理系统
技术特点:
对数据进行分区(partitioning),利用大量节点并行处理获得高性能,同时能够采用横向扩展方式(scale out)
降低acid一致性约束,允许暂时不一致,接受最终一致性。遵循base(basically available,soft state,eventual consistency)原则
各数据分区提供备份(一般是三份),应对节点故障,提高系统可用性
newsql
指追求nosql的可扩展性同时能够支持关系模型(包括acid特性)的关系型数据库系统,主要面向oltp场景
能够支持sql作为主要的使用语言
关系型数据库架构介绍
随着业务规模增大,数据库存储的数据量和承载的业务压力也不断增大,数据库的架构需随之变化,为上层应用提供稳定和高效的数据服务。
单机架构
为了避免应用服务和数据库服务对资源的竞争,单机架构也从早期的单主机模式发展到数据库独立主机模式,把应用和数据服务分开。应用服务可以增加服务器数量,进行负载均衡,增大系统并发能力。
优点:
集中部署,运维方便
缺点:
可扩展性
数据库单机架构扩展性只有纵向扩展(scale-up)。通过增加硬件配置来提升性能,但单台主机的硬件可配置的资源会遇到上限
存在单点故障
扩容的时候往往需要停机扩容,服务停止
硬件故障导致整个服务不可用,甚至数据丢失
单机会遇到性能瓶颈
分组架构——主备
数据库部署在两台服务器,其中承担数据读写服务的服务器称为“主机”
另一台服务器利用数据同步机制把主机的数据复制过来,称为“备机”
同一时刻,只有一台服务器对外提供数据
应用不需要针对数据库故障来增加开发量
相对单机架构提升了数据容错性
资源浪费,备机和主机同等配置,但长期范围内基本上资源限制,无法利用
性能压力还是集中在单机上,无法解决性能瓶颈问题
当出现故障时,主备机切换需要一定的人工干预或者监控
分组架构——主从
部署模式和主备机模式相似,备机(backup)上升为从机(slave),对外提供一定的数据服务
通过读写分离方式分散压力
写入、修改、删除操作,在写库(主机)上完成
把查询请求,分配到读库(从机)
提升资源利用率,适合读多写少的应用场景
在大并发读的使用场景,可以使用负载均衡在多个主机间进行平衡
从机的扩展性比较灵活,扩容操作不会影响到业务进行
延迟问题,数据同步到从机数据库时有延迟,所以应用必须能够容忍短暂的不一致性,对于一致性要求非常高的场景不适合
写操作的性能压力还是集中在主机上
主机出现故障,需要实现主从切换,人工干预需要响应时间自动切换复杂度较高
分组架构——多主(双活、多活)
数据库服务器互为主从,同时对外提供完整的数据服务
资源利用率较高的同时降低了单点故障的风险
双主机都接受写数据,要实现数据双向同步。双向复制同样会带来延迟问题,极端情况下可以数据丢失
数据库数量增加会导致数据同步问题变得极为复杂,实际应用中多见双机模式
共享存储多活架构(shared disk)
一种特殊的多主架构
数据库服务器共享数据存储,而多个服务器实现均衡负载
多个计算服务器提供高可用服务,提供了高级别的可用性。可伸缩性,避免了服务器集群的单点故障问题
比较方便的横向扩展能够增加整体系统并行处理能力
实现技术难度大
当存储器接口宽带达到饱和的时候,增加节点并不能获得更高的性能,存储io容易成为整个系统的性能瓶颈
分片(sharding)架构
水平数据分片,主要算法有:根据列表值、范围取值、hash值进行数据分片
数据分散在集群内的各个节点上,所有节点可以独立性工作
无共享(share-nothing)架构
集群中每一个节点(处理单元)都完全拥有自己独立的cpu/内存/存储,不存在共享资源
各节点(处理单元)处理自己本地的数据,处理结果可以向上层汇总或者通过通信协议在节点间流转
节点是相互独立的,扩展性强。整个集群拥有强大的并行处理能力
mpp架构(massively parallel processing,大规模并行处理)
mpp是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果
特征:
任务并行执行,分布式计算
数据库架构特点对比
关系型数据库主流应用场景
联机事务处理(online transaction processing)
oltp是传统关系数据库的主要应用,面向基本的,日常的事务处理,例如银行储蓄业务的存取交易,转账交易等。
特点:
大吞吐量:大量的短在线事务(插入、更新、删除),非常快速的查询处理
高并发,实时响应
典型的oltp场景:
零售系统
金融交易系统
火车票销售系统
秒杀活动
联机分析处理(online analytical processing)
联机分析处理的概念最早是e.f.codd于1993年相对于oltp系统提出的
是指对数据的查询和分析操作,通常对大量的历史数据查询和分析。涉及到的历史周期比较长,数据量大,在不同层级上的汇总,聚合操作使得事务处理操作比较复杂
主要面向侧重复杂查询,回答一些“战略性”的问题
数据处理方面聚焦于数据的聚合,汇总,分组计算,窗口计算等“分析型”数据加工和操作
从多维度去使用和分析数据
典型的olap场景:
报表系统,crm系统
金融风险预测预警系统、反洗钱系统
数据集市,数据仓库
数据库性能衡量指标
tpc(transaction processing performence council,事务处理性能委员会)
tpc-c规范——面向oltp系统
流量指标:tpmc(tpm-transcations per minuete,即每分钟测试系统处理的事务数量)
性价比指标:price(测试系统价格)/tpmc
tpc-h规范——面向olap系统
流量指标:qphh-query per hour,即每小时处理的复杂查询数量
需要考虑测试数据集合大小,分为不同的测试数据集,指定了22个数据查询语句,可以根据产品微调
测试场景:数据加载,power能力测试和throughput测试
oltp个olap对比分析