[学习笔记] TiDB学习笔记(一)

2021-12-30 11:54:30 浏览数 (1)

本文是《极客时间》-《TiDb极简入门》的学习笔记。传送门:https://time.geekbang.org/opencourse/videointro/100089601


一 数据库发展历史

1. 发展简史

模型提出:上世纪70年代,关系型数据库模型被提出

商业起步阶段:上世纪80年代,关系数据库逐步完成了工程与产品实现,代表性产品有Oracle, DB2, Sql Server,Sybase

开源数据库萌芽阶段:90年代中后期,开源数据库开始萌芽,代表性产品有 MySql,PostgreSql

互联网时代来临:上世纪末到本世纪初,开启了互联网时代,数据量爆发式增长

谷歌3架马车:2006年,GFS/BigTable/Mapreduce, Nosql大数据生态开始出现: Hadoop/Redis/MangoDb

移动互联网时代: 2010,4G网络开启了移动互联网时代。集成了分布式技术与关系模型的newsql数据库开始涌现,代表产品有Spanner,TiDB; 云原生数据库出现,Dbaas(Database-as-a-service)产品涌现

HTAP是强需求

HTAP(混合事务/ 分析处理,Hybrid Transactional/Analytical Processing)

2.数据技术发展的驱动力

1.业务发展: 数据容量的爆发式增长,包括数据存储量,吞吐量

2.产品创新: 对数据的交互效率与数据模型的多样性,查询语言/计算模型/数据模型/读写延时要求

3.硬件与云计算的发展:数据架构的变迁,计算与存储分离,一体机,云原生

3.数据容量催生数据架构演进

早期,数据量只有几百GB,单节点本地磁盘是最高效的数据架构,单机关系型数据库是主流

随着数据量增大,开始纵向扩展(Scale up),加入更多的cpu/ 内存/ 硬盘(升级硬盘),Share Disk 成为了代表性架构

但是硬件升级有上限,当数据增长速度超过了硬件升级速度,scale up失效,只能通过分布式的share nothing架构来应对(即横向扩展,scale out)

4.数据模型和交互效率的演进

存储结构/事务需求

Sql

关系型数据库

结构化数据结构

Nosql数据库

在很多场景下,很多非结构化的数据需求突出,出现了Nosql数据

无法支持事务(OLTP,在线业务)

NewSql

原生分布式关系型数据库

分布式 SQL 事务

newSQL 提供了与 noSQL 相同的可扩展性,而且仍基于关系模型,还保留了极其成熟的 SQL 作为查询语言,保证了ACID事务特性。

5.数据技术栈和数据产品的本质

应对不同的业务场景,基于这些相对固定的基础数据技术要素,进行各种数据技术与架构的trade off

二 分布式存储系统

1.分布式系统发展的原因

内因:分布式系统是数据爆发增长的刚需

经济原因:用廉价的机器,可以获得很好的cpu性能,并且具有很好的弹性

2008年后,出现了很多分布式系统产品。

2.分布式系统概念

概念看wiki,本质上就是计算与存储的分治

分布式是海量数据与计算的代名词

高可用性:数据副本冗余(对比集中式系统,这就是分布式系统需要多做的事情)

3.分布式的主要挑战

1.如何最大程度实现分治与协助

2.如何实现全局一致性(全局序列化/全局时钟)

3.如何实现故障与部分失效的容错

4.如何应对不可靠的网络并进行网络分区

4.CAP理论

分布式系统里最多只能同时满足CAP三项中的两项

Consistent: 一致性:所有节点在同一时间数据完全一致

Availability: 可用性:服务在正常响应时间内的可用

Partition Tolerance: 分区容忍性:分布式系统在遇到某节点或者网络分区故障的时候,仍然能提供CA的服务

关系型数据库:ACID特性

ACID与CAP里的两个一致性概念不同

三 Tidb

分布式关系数据库,两个重要基础

1.2013年google spanner/F1论文

2.2014年 Raft论文

Tidb:基于以上两个理论,兼容mysql,原生分布式,关系型数据库,HTAP

0 人点赞