01_tidb 资料参考
TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性
高度兼容MySQL,并且能免去传统数仓ETL过程实现数据分析,同时支持高并发、大吞吐量的在线事务处理的PB级数据存储数据库,同时支持海量数据在线事务(OLTP)和在线分析(OLAP)的HTAP关系型数据库。
来源 | 网址 | 场景 |
---|---|---|
官方文档 | QCon北京2018-《TiDB架构与开源之路》-申砾.pdf | |
git 社区 | https://github.com/pingcap/community 项目源码 TiDB 集群所有组件的源码均可从 GitHub 上直接访问:https://github.com/pingcap/tidb https://github.com/tikv/tikv https://github.com/pingcap/pd https://github.com/pingcap/tispark . https://github.com/pingcap/tidb-operator | |
**** | https://blog.****.net/tidb_pingcap/article/details/80062425 | |
大厂应用及实践 | https://blog.****.net/dev_****/article/details/78839392(摩拜) | 1、开关锁日志成功率统计 2、实时数据分析 3、实时在线 OLTP 业务 4、违章停车记录/开锁短信库等日志归集库 |
专业名词 | 备注 |
---|---|
OLTP (Online Transactional Processing) | 在线事务处理 |
OLAP (Online Analytical Processing) | 在线分析处理 |
HTAP (Hybrid Transactional and Analytical Processing) | 混合事务/分析处理关系型分布式数据库 |
1、tidb优劣分析
TiDB 对业务没有任何侵入性,能优雅的替换传统的数据库中间件、数据库分库分表等 Sharding 方案。同时它也让开发运维人员不用关注数据库 Scale 的细节问题,专注于业务开发,极大的提升研发的生产力。
pros(官方文档描述) |
---|
1、高度兼容 MySQL——大多数情况下,无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移 |
2、水平弹性扩展——通过简单地增加新节点即可实现 TiDB 的水平扩展,按需扩展吞吐或存储,轻松应对高并发、海量数据场景。 |
3、分布式事务——TiDB 100% 支持标准的 ACID 事务。 |
4、真正金融级高可用 ——相比于传统主从 (M-S) 复制方案,基于 Raft 的多数派选举协议可以提供金融级的 100% 数据强一致性保证,且在不丢失大多数副本的前提下,可以实现故障的自动恢复 (auto-failover),无需人工介入。 |
5、一站式 HTAP 解决方案——TiDB 作为典型的 OLTP 行存数据库,同时兼具强大的 OLAP 性能,配合 TiSpark,可提供一站式 HTAP 解决方案,一份存储同时处理 OLTP & OLAP,无需传统繁琐的 ETL 过程。 |
6、云原生 SQL 数据库——TiDB 是为云而设计的数据库,支持公有云、私有云和混合云,使部署、配置和维护变得十分简单。 |
实际应用中:
pros:
分布式sql,自动扩容
在线ddl
支持update
支持spark
架构简单,可专注于业务开发。
cons:
1. 成本较高,公司无大规模使用经验。
2. 更加偏向于TP,不是列式存储,不能支持向量化计算。
3. 解决问题时间可能会较慢。
2、TiDB的架构图 (Architecture Evolution 技术演进参考 —— QCon北京2018-《TiDB架构与开源之路》-申砾.pdf)
-
PD是整个 集群的管理模块,负责元信息管理、集群调度和分配全局递增非连续ID;
-
TiDB 是客户端接入层,负责SQL解析、执行计划优化,通过PD定位存储计算所需数据的TiKV 地址;
-
TiKV是数据的存储层,底层是基于RocksDB的KV引擎,并在其上分别封装MVCC和Raft 协议,保证数据的安全、一致;
-
TiSpark是Spark接入层,负责把Spark和TiKV 连接到一起,在执行非常重的OLAP业务时可以利用到Spark集群的优势。
————————————————————————————————
- TiDB 是 Server 计算层,主要负责 SQL 的解析、制定查询计划、生成执行器。
- TiKV 是分布式 Key-Value 存储引擎,用来存储真正的数据,简而言之,TiKV 是 TiDB 的存储引擎。
- PD 是 TiDB 集群的管理组件,负责存储 TiKV 的元数据,同时也负责分配时间戳以及对 TiKV 做负载均衡调度。