14天追“剧”躺“营”活动打卡第一天

1.1 分布式数据库历史和发展趋势

讲师:黄东旭 PingCAP 联合创始人 CTO

什么是数据库 数据 数据模型 数据处理

现代数据库诞生 1970 E.F Codd 发表《A Relational Model of Data for Large Shared Data Banks》论文 - 《大规模共享数据银行的关系型模型》 1972 Oracle 1995 MySQL 1996 Postgresql

2003 MemCached 内存缓存项目,内存的、键值数据库
2006 BigTable paper 论文 by Google
2007 Dynamo  paper 论文 by Amazon	引入NoSQL一致性概念

2012 Spanner paper 论文 by Google	描述Google内部新一代数据库系统
2015 TiDB	

关系型数据库 关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。

SQL Structured Query Language 结构化查询语言

Oracle
	传统单机关系型数据库巨头	贵

MySQL
	第一个广泛使用的开源关系型数据库管理系统	开源数据库业界标准
	5.6版之后,MySQL -收购 Sun -收购 Oracle
	5.5 InnoDB
	5.6	Multi-threaded concurrent replication(多线程并发复制)
	5.7	Optimizer refactoring great performance improvement(优化器重构极大地提高了性能)
	
	Mariadb MySQL创始团队开发的MySQL 分支

Postgresql
	Michael Stonebraker		图领奖得主

PgSQL 类似PL/SQL 更强的隔离级别,在某些场景中具有更高的性能 支持JSON、GIS类型数据 生态方面,Postgresql 还赶不上 MySQL,有待提高

分布式数据库 更好性能的单机依然会有瓶颈存在 SPOF Single point of failure单点故障 主从复制模型不能真正的解决此问题

存储引擎 Data Structure 数据结构 B-tree 实现:InnoDB、LMDB、WiredTiger

	LSM-tree
		实现:LevelDB、RocksDB、WiredTiger
		写性能Good、对hot数据的读取性能also Good 
	
	其他:BW-tree、TokuDB、WiscKey	

NoSQL Not Only SQL 一致性模型 弱一致性 有条件的一致性 强一致性

NoSQL的开端始于四篇论文
	Googl
		GFS(Google File System)
		MapReduce
		BigTable
	Amazon
		Dynamo

	BigTable
		是一个分布式、结构化数据存储系统,有千万台服务器组成,处理大量的数据
		Key - Value 模式

	Dynamo
		把可用性放在第一位	always writeable

	Hadoop 平台
	


	Apache Cassandra
		Dynamo的开源实现
		引入一致性模型:WRN
	
	MongoDB
		开箱即用

	ElasticSearch
		Apache Lucence
		ELK(ElasticSearch + Logstash + 	Kibana)
		模糊查询、模糊匹配、日志检索
	
	Cache system
		
	Memcached/Redis
		内存数据库、单机系统
		数据模型简单
			Memcached:key  Value
			Redis:key  HashTable,key  List
		
	Codis/Redis Cluster

分布式缓存系统 Redis Cluster:P2P架构 Codis:分层架构

数据仓库&OLAP Apache HIV 建立在Apache Hadoop平台上的数据仓库软件项目 SQL  MapReduce 批处理

Impala/Kudu
	Impala是一个MPP SQL引擎	开源
	
	Kudu是一个数据库,不仅包括计算引擎,还具有自己的存储引擎
		SQL引擎依赖修改版的Impala

Greenplum
	基于Postgresql,Multi-Postgresql实例 MPP数据库

Apache Kylin
	诞生于中国
	基于Cube模型,交互式查询,预计算
	
Apache Spark
	UC Berkeley 2009年
	低延迟集群技术系统。

分布式数据库/NewSQL 真正的HA Multi-Paxos/Raft Google Spanner/F1 读写Scale-out 原子钟

	实现:CockroachDB、TiDB
	
	CockroachDB
		Go语言
	
	TiDB·
		HATP(Hybrid Transactional and analytical Processing)
		存储和计算是隔离的
		TiDB
		TiKV
		TiSpark
		
		兼容MySQL协议,更适合于从MySQL迁移到TiDB

Cloud-native 云原生 虚拟化技术:VM  Containe 虚拟机 - 容器 微服务 共享存储

Amazon Aurora
	100%兼容MySQL	非常流行
	存储是使用共享存储

Cloud TiDB
	依靠Kubernetes做多租户

1.2 TiDB架构原理

讲师:申砾 PingCAP 技术VP TiDB Tech Lead

TiDB是什么 TiDB是一个分布式、强一致、具备水平扩展能力的关系型数据库 关键特性 水平扩展 高可用 ACID事务 SQL支持

TiDB整体架构

TiDB + Kubernetes

TiDB架构

分布式存储引擎 TiDB存储引擎 TiKV TiKV 分层架构

	分布式 key – Value 存储引擎
	高度分层
	通过Raft协议保证数据一致性
	不依赖于分布式文件系统,存储在RockDB中

数据容灾
	使用Raft复制数据	多副本
		多数派写入、强Leader、Leader选举、成员变更
	
TiKV逻辑视图
	全局有序map	:Hash分片、Key和Value都是byte数据

基于Region分片 数据的存储/访问/复制/调度都以Region为单位,默认是96MB

分裂和水平扩展
	自动&动态、逻辑分裂、
	
PD是集群管理组件
	心跳消息
	调度指令
	是整个集群的大脑
	
事务模型
	去中心化的两阶段提交
	乐观锁/悲观锁
	默认隔离级别:Snapshot Isolation

分布式计算引擎 TiDB SQL 引擎

关系模型
	将Table 映射为 key – value
HATP = OLTP + OLAP
一致的全局索引

计算下推到数据节点
物理算子是并行算子	
DDL操作
	受Google F1启发,在线变更算法,任何DDL操作都不会锁表
4赞

赞,加油 志强。