文章目录
前言:
这次我们来从头到脚来重新认识一遍数据库吧!!!
一、数据库技术
数据库技术是数据库管理的有效技术,研究如何对数据进行科学管理,从而为人们提供可共享的、安全的、可靠的数据。
数据库技术包含四个相关概念: 数据,数据库,数据库管理系统,数据库系统
1、数据
- 早起的计算机系统主要用于科学计算,处理的数据是数值型数据:比如整数,浮点数。
- 现代计算机系统的数据概念是广义的:数字、文字、图像、图形、音频等
- 数据除了表现形式之外,还有语义---->理解:比如60可以是一个班有60个人,也可以是一个人的体重
- 记录:记录是在计算机中表示和存储数据的一种格式或一种方法(比如把多方面的数据来描述一个人,这些数据组织在一起,构成一条记录)
2、数据库
数据库是存放数据的仓库,是大量数据的集合。
数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。
有组织:按照一定的数据模型组织、描述和存储。
可共享:为各种用户使用
3、数据库管理系统(DBMS)
数据库管理系统是一个能够科学地组织和存储数据,高效的获取和维护数据的系统软件,是位于用户与操作系统之间的数据管理软件,包含的功能:
- 数据定义功能(DDL)
- 数据组织、存储和管理功能
- 数据操纵功能(DML)
- 数据库的事务管理和运行管理功能
- 数据库的建立和维护功能
- 与其他软件系统的通信功能
强调:数据库管理系统是一个系统软件的概念,数据库管理系统和操作系统一样是计算机系统的基础软件
4、数据库系统(DBS)
数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。
(蓝色框框都是代表数据库系统组成部分)
二、数据模型
数据模型是数据库系统的核心和基础,所以数据库系统的发展和数据模型的发展密不可分。所以数据库模型的划分维度是数据库系统划分的一个重要标准。
1、层次模型
- 层次模型的数据结构就是一棵树形结构,只有一个节点没有双亲,也就是根节点(root)
- 根节点意外的其他节点有且只有一个双亲节点
2、网状模型
- 允许一个以上的节点无双亲
- 一个节点可以有多于一个双亲
例子:如学生选课之类的
注:图里的E代表实体,R代表实体之间的关系
3、关系模型
关系模型是一组关系组成的。每个关系的数据结构都是一张规范化的二维表
- 建立在严格的数据概念基础上
- 关系必须是规范化的
- 关系的分量必须是一个不可分的数据项
关系模式: 关系名(属性1,属性2,属性3,……,属性n)
比如例子中的关系就是 学生(学号,姓名,年龄,性别)
4、面向对象数据模型
传统的关系数据模型对复制对象的标识能力差,语义表达能力较弱,就提出了面向对象型,但是语言过于复制,没有得到认可
5、XML数据模型
是一种半结构化数据,半结构化是相对结构化数据而言的,纯文本的话就是一种无结构化数据
6、RDF数据模型
RDF是用来描述互联网资源的标记语言,结构为(主语(url),谓语(属性),宾语(具体的值或者另一个数据对象))
三、数据库类型
1、SQL(Structured Query Language)
用于关系型数据库(ACID特性)
- 高级的非过程化编程语言,允许用户在高层数据结构上工作
- 不要求用户制定数据存放方法
- 不需要用户了解具体数据存放格式
- 还有通用的特点,底层不同的关系型数据库也可以使用相同的SQL语言
2、NoSQL(Not Only SQL)
非关系型的、分布式的、不保证满足ACID特性的一类数据管理系统。
技术特点:
- 对数据进行分区,利用大量节点并行处理获得高性能
- 降低ACID一致性约束,运行暂时不一致,接收最终一致性。遵循BASE原则
- 各数据分区提供备份(一般三份),提高系统可用性
3、NewSQL
- 指追求NoSQL的可扩展性同时能够支持关系模型(包括ACID特性)的关系型数据库系统,主要面向OLTP场景。
- 能够支持SQL作为主要的使用语言
四、数据库架构发展
随着业务规模增大,数据库存储的数据量和承载的业务压力也不断增加,数据库的架构需要随之变化,为上层应用提供稳定和高效的数据服务。
-
首先按照主机数量来区分,一个数据库主机是单机架构,多于一个数据库主机是多机架构
-
对于单机架构来说,单主机是指应用和database都部署在同一个主机上。而独立主机则是两者分开,database专门部署在独立的数据库服务器上。
-
对于多机架构来说,按照数据数量是否分片,分为两类,分别是分组和分片
-
分组:有主备、主从、多从,是根据服务器拥有的角色不同来划分的,本质也是利用同步技术在多个库之间进行数据复制
-
分片(sharding):从数据的独立性角度来描述架构
分片架构主要表现形式就是水平数据分片架构,把数据分散在多个节点上的分片烦恼干,每一个分片包括数据库的一部分,成为一个shard。(常见的分片算法:根据列表值,范围取值和hash值进行分片)
○ 无共享(Share-Nothing)架构:是从资源独立性角度来描述架构。sharding是shared-nothing架构的基础。
集群中每一个节点(处理单元)都有自己独立的CPU/内存/存储,不存在共享资源,各处理单元处理本地的数据。Shared-Nothing的最小单元可能不是物理节点,而是逻辑上的虚拟处理单元。比如一个物理主机具有4核CPU,部署的时候可以部署4个数据库实例,也就相当于拥有4个处理单元。○ MPP:大规模并行处理:MPP是从并行计算角度来描述框架
五、数据库的应用场景
1、联机事务处理(OLTP)
面向基本的,日常的事务处理,例如银行储蓄业务的存取交易,转账交易等
特点:
- 大吞吐量:大量的短在线事务,非常快速的查询处理
- 高并发,(准)实时响应
事务的举例: 在tb买100块钱的东西,里面至少包括两个操作:
1、买家的账户减少100元
2、卖家的账户增加100元
支持事务的数据库管理系统要确保以上两个操作(也就是整个事务)都能完成,或一起取消,不然会出现100元平白消失或出现的情况。
2、联机分析处理(OLAP)
是指对数据的查询和分析操作,通常对大量的历史数据查询和分析。涉及到的历史周期比较长,数据量大,在不同层级上的汇总,聚合操作使得事务处理操作比较复杂。例如报表系统,数据集市,数据仓库等。
特点:
- 侧重于复制查询,回答一些“战略性”的问题
- 数据处理方面聚焦于数据的聚合,汇总,分组计算,窗口计算等“分析型”数据加工和操作
- 从多维度去使用和分析数据
3、OLTP和OLAP对比分析
无论OLTP还是OLAP系统都是遵守ACID原则的关系型数据库。两者在功能上是相似的,都支持SQL,都可以处理大量数据,都是强一致事务处理。但是对于应用场景来说,OLTP更强调实时性要求,OLAP更强调大数据量分析。
数据处理类型 | OLTP | OLAP |
---|---|---|
分析粒度 | 细节的 | 细节的,综合的,或提炼的 |
时效性 | 在存取瞬间是准确的 | 代表过去的数据 |
可更新性 | 可更新 | 不更新 |
操作可预知性 | 操作需求事先可知道 | 操作需求事先可能不知道 |
实时性 | 对性能要求高,相应毫秒级别、秒级 | 对性能要求相对宽松,相应分钟级、小时级 |
数据量 | 一个时刻操作一条或几条记录,数据量小 | 一个时刻操作一集合,数据量大 |
驱动方式 | 事务驱动 | 分析驱动 |
应用类型 | 面向应用 | 面向分析 |
应用场景 | 支持日常运营 | 支持管理需求 |
典型应用 | 银行核心系统、信用卡系统 | ACRM、风险管理 |
六、2020年3月数据库排行
可以去看每个月数据库的排行:
https://db-engines.com/