云集技术学社 | 数据库概念、分类和未来
  

漫步云端学习计划 40872人觉得有帮助

{{ttag.title}}
本帖最后由 铁齿铜牙岳晓峰 于 2021-9-22 16:58 编辑

8月5日,深信服首席算法技术专家章博在信服云《云集技术学社》系列直播课上进行了《数据库概念、分类和未来》的分享,对数据库基础概念、常见数据库种类和使用场景进行介绍,详细解释不同数据架构的优劣,破除常见误区。以下是他分享内容摘要,想要了解更多可以点击阅读原文观看直播回放。
看点一:数据库是什么?

数据库定义
大家可能对数据库这个词都不陌生,我们最常说的数据库,也就是Database这个词,原则上它指的是按照一定格式存储数据的文件的组合,也就是说硬盘上的数据库的文件和数据,要按照某种特定的格式去组织,这个就是所谓的数据库。
为了去使用数据库,我们一般需要一整套的数据库管理系统,也就是Database Management System (DBMS),即科学的对数据库文件进行组织、索引、查询、修改的一套管理软件,常见的数据库管理系统有MySQL、Oracle、SQL Server、DB2等。
但是仅仅DBMS本身并不能提供各种各样的能力,我们还需要围绕DBMS去构造由硬件操作系统、数据库管理系统,乃至包括数据库管理员以及相关的机制配套组成的一整套数据库系统,才能顺利的执行工作。这一套系统一般称之为Database System。
与常见的数据管理软件Excel相比,数据库会管理一些更大量的数据,比如说千万行以上的甚至亿万行以上的数据。一般Excel是单人使用的,数据库是很多的用户同时使用,而且可以进行高并发的访问。此外,数据库也有更丰富更复杂的数据处理能力,在安全机制的保障上,Excel作为一个办公软件只能提供密码的基础管理能力,而数据库能够提供完整的安全机制,比如说像是权限的校验(表级别的、行级别的、列级别的权限控制),以及我们可以做一些数据备份来更好的保证数据的安全,这就是数据库管理系统一个主要的好处。

数据库的四个重要概念
(1)索引
数据库经常有上百/千万条记录,单条查询会很慢,而索引的功能就像新华字典的前几页“索引”目录靠拼音或偏旁排序来查询字词,能大幅度提高查询速度。
(2)事务
数据库提供了一种机制,就是一件事,必须做完,如果中间出了差错,他会清理掉一切痕迹,回到最初状态,这对于保持数据的一致性和完整性有功不可没的作用。

(3)联合查询
一份数据通常解决不了实际问题。比如有两份数据,一份是《员工基本信息》,另一份是《工资表》,这个时候,要查询某某员工的工资,就要结合起来做“联合查询”。

(4)SQL
SQL就是用来操作数据库里数据的工具,类似吃饭时使用“筷子”获取食物。
看点二:数据库的分类
数据库可以分为三个维度来分类:第一个维度是按照模型分类,可以分为关系型和非关系型的数据库。第二个维度是根据数据库的使用场景进行分类,主要分为事务性OLTP和分析型OLAP两类。第三种是从数据库架构进行分类,可以分为单点数据库和数据库集群。

按模型分类
按照模型划分,一般把数据库分成关系型和非关系型两个类型。关系型模型由于其优秀的表达能力、严格的数学定义和良好的执行效率被广泛采用,而采用关系型模型组织数据的数据库就被称之为关系型数据库,如 Oracle,MySQL 等。关系型数据库也成为了现在最主流的数据库模型。
而在一个关系型的数据模型上,提供的查询语言就是结构化查询语言(Structured Query Language)。这样的语言是整个数据库现在能蓬勃发展的一个关键所在,因为它是高级的非过程化的编程语言,比如常见的C语言或者Python编程语言,它都是所谓的过程化编程语言,当需要它做什么的时候,需要一步一步把过程的每一个阶段全部编写好,才能够顺利的进行。但SQL是一个高级的非过程化语言,只需要用户描述需要取得什么样的数据,具体的执行流程就由优化器由甚至系统自动去完成了。所以整个SQL语言的学习和使用非常简单,用户不需要了解具体的数据组织和处理的细节,也不需要去了解如何能让它高效的执行,所有的事情全部都是自动的。

非关系型数据库是通过关系型以外的数据模型对数据进行组织的数据库,通常在特定场景下具有较高的性能和可扩展性。典型 NoSQL 数据库有:(1)键指数据库:Redis、Memcache ——常用于缓存;(2)列族数据库:HBase,Cassandra——常用于 Schema 频繁变更的大宽表数据;(3)文档数据库:MongoDB —— 常用于存储JSON文件;(4)图数据库:Neo4j——常用于知识图谱等图数据组织。


按场景分类

数据库还可以按照不同场景进行分类,主要的两个场景是OLTP和OLAP。OLTP是比较常见的业务系统,比如银行的交易系统、零售交易系统、企业中的ERP系统、医疗的CASE系统等。这些数据库系统里面的数据基本上都是OLTP类型的,支持实时交易数据的存储、更新、共享。
这类系统下,数据不断发生,不断更新,可能有很多人在同时去访问,因此需要的并发也比较高,每次更新都希望反馈的延迟非常低,比如说毫秒级的场景,就是OLTP的场景。
OLAP与我们主要做数据分析和现在的所谓的大数据,也有很多的相似之处,比如BI系统或者说建设数据仓库,会把很多的历史数据汇聚过来,然后做一些综合的分析,希望从中提取一些数据规律,或者做一些数据挖掘。这一类的需求基本上对数据没有很大频繁的修改,但是一次要访问的数据量非常的大,所以不太看重系统的延期,但很看重数据库的吞吐。这样的场景其实就是OLAP场景下常见的数据库。

按架构分类
数据库也可以按照不同架构进行分类。常见的数据库是单节点的数据库,因为单节点可能有一些单点故障的问题。如果有更大的数据量的需求,单节点的数据库没有办法承载,或者需要更大的并发,而此时单点数据库也没有办法承载。这个时候在单节点基础上就发展了一系列的数据库集群架构。
数据库集群架构主要分成三类模式,第一个需要更高的可用性,比如基于组成复制的数据库集群架构或者基于一致性协议的多活数据库集群。基于复制的数据库集群是最常用的多节点数据库架构,它能够消除单点故障,同时通过读写分离提升性能。基于一致性协议的多活数据库集群则是无需第三方仲裁,自维护的多活集群架构,它可以在多数派存活条件下可提供服务。

第二个是很多时候在高可用的情况下,遇到面临单节点的数据库性能不够、并发不够的问题,这个时候就需要横向扩展技术。最经典的横向扩展技术就是基于 Shared Disk 的数据库集群,它是基于Shared Disk的共享存储,然后上面可能会有多个节点来共同执行数据库操作的Oracle RAC 的经典架构。它的特点是存储计算分离,通过高速网络和分布式存储替换传统阵列来提升性能。
但基于Shared Disk的数据库集群的扩展能力存在限制,难以扩展到百节点以上的超大规模集群,因此就有了基于Share-Nothing的数据库集群。它的每个节点独立,具有最强的扩展能力,可扩展至数百甚至数千节点规模。能支持超大规模并发的基于Share-Nothing数据库集群一般以更高和更不稳定的时延为代价,但是由于和Shared Disk并非完全互斥关系,Share-Nothing集群的每一个节点本身可以是一个Shared Disk 多活集群,从而可以结合两种架构的优势。
OLTP 场景下的 Share-Nothing 分布式数据库虽然数据是分布式存储和管理的但是单一  SQL 语句的执行大多还是由单一节点执行。相对的,第三类架构就是在OLAP场景下我们需要更大的吞吐时,计算也需要多个节点进行分布式处理,这一架构被称之为 MPP (Massively Parallel Processing)。

看点三:
数据库发展趋势
李国良教授的《数据库发展趋势》中介绍,新一代的数据库其实有4个主要的发展方向,一是随着硬件的发展有更多的新的硬件技术被利用下来;二是随着数据模型的发展,会支撑更多的数据模型;三是Scalability进一步提升,最后还有Deployment的种类会变得更加的丰富。



针对种类更加丰富的发展趋势,章博在此介绍了几个比较广泛认知的数据库。一个是现在常见的一个词叫做HTAP,就是既要有TP的特性,又要有AP的特性。在传统的架构下,一般通过ETL把TP的数据按照天或者周的周期去导入到一个AP的系统,用两个不同的系统去承载它,但是传统架构的时效性不足。当需要实时分析时,HTAP就派上用场了,HTAP通过复制或者在同一个引擎里同时做行列混合存储,既能支持实时的数据更新,又可以支持比较高的数据吞吐。但是HTAP系统不会用来去直接替代TP系统,一般来说它还是更偏向用于实时分析的补充。
AI也是非常火热的一个词,在数据库领域的话就有两大的分支,一个是AI4DB,就是如何使用AI技术让数据库的可维护性变得更强。另外一个是DB4AI,DB4AI就是如何对AI的数据进行管理,通过一个很完善的数据库管理系统管理AI的数据,让 AI的开发和迭代更有效。
最后,这几年新的硬件技术发展得也非常的快,对整个数据库系统的优化起着非常大的效果。一个是利用Intel SPDK将NVME SSD性能发挥到极限,另一个是支持RDMA高速网络。

打赏鼓励作者,期待更多好文!

打赏
4人已打赏

山东_杨刚 发表于 2021-8-27 09:53
  

感谢分享,有助于工作,学习学习
一个无趣的人 发表于 2021-8-28 23:39
  
楼主分析的很详细,不错的实战经验,小白用户一看就懂,非常好的技术干货帖,顶一个!
飞翔的苹果 发表于 2021-8-31 08:18
  
感谢分享,有助于工作,学习学习
xin2004108 发表于 2021-8-31 19:06
  
这个写的很详细和实用。
平凡的小网工 发表于 2021-9-15 14:02
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
水之蓝色 发表于 2021-10-16 21:49
  
感谢分享,有助于工作,学习学习
发表新帖
热门标签
全部标签>
安全效果
西北区每日一问
技术盲盒
技术笔记
干货满满
【 社区to talk】
每日一问
信服课堂视频
GIF动图学习
新版本体验
技术咨询
2023技术争霸赛专题
功能体验
产品连连看
自助服务平台操作指引
标准化排查
秒懂零信任
技术晨报
安装部署配置
原创分享
排障笔记本
玩转零信任
排障那些事
SDP百科
技术争霸赛
深信服技术支持平台
通用技术
以战代练
升级&主动服务
社区新周刊
畅聊IT
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
产品预警公告
信服圈儿
S豆商城资讯
「智能机器人」
追光者计划
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
高手请过招
高频问题集锦
POC测试案例
全能先锋系列
云化安全能力

本版达人

新手89785...

本周建议达人

YangZhe...

本周分享达人