TiDB

转载自:TiDB:世界级开源 NewSQL 分布式关系型数据库

数据库技术发展演进

在 08 年以前基本上是以单机型数据库为主,比如大家耳熟能详的 Oracle,MySQL,遇到的比如大数据存储、高并发等问题。于是,以 Google 为代表的一些互联网公司开始转向 NoSQL 这种分布式的数据库,这是一个牺牲掉关系的模型去追求可扩展性的方向,那我们有没有办法把单机型的 SQL 的关系模型跟 NoSQL 所带来的分布式的能力结合在一起呢,newSQL,代表产品是 Google 的Spanner/F1

大数据时代传统数据库之困 - 痛点

单机型数据库,一般来说你没有办法很优雅的解决,只能在业务层来做分库分表 或者使用中间件等折衷方案
(1)强一致性事务,比如说转账只能在业务层自己来做保证,写很多代码
(2)高可用 主从复制,很麻烦
跨数据中心多活、跨数据中心容灾的方案来说,在已有开源实现上基本没有一个方案可以很好的去支持跨数据中心多活的架构,都是通过业务层,或者很重的 DBA 的介入来做这样的事情

Google Spanner/F1:第一个真正意义上 NewSQL

分布式的架构,它可以根据业务压力无限地去做一个水平扩展,或者收缩

上层保证了是一个完整的 SQL 支持,没有做任何妥协,也就是它支持跨行的事务

完整的强一致的 Auto-Failover

真正的 NewSQL?一是我们有水平扩展,而且在水平扩展的过程中是不会将事务和强一致性做任何妥协的,是保证业务层透明的强一致的支持跨行事务的水平扩展。第二是我们能做到跨数据中心的多活,任何一个数据中心宕机,上层的业务是没有感知而且整个集群可以自动的做数据恢复和高可用,不需要任何的人工介入。第三,我们的数据库一定是面向云的架构去做设计的,不会出现一个个数据孤岛的这种状态,我们相当于是一个整体的数据库的解决方案。

TiDB 典型应用场景

首先,如果你在用关系型数据库,比如 MySQL 比如 Oracle 这样的单机关系型 SQL 的数据,当你有水平扩展的需求,当你的数据量比较大已经超出了单机的限制,比如说并发量单机已经扛不住了,但是同时你又不想在业务层做很复杂的分库分表,这时候你可以使用 TiDB。

第二,就是你的数据极端重要,不能容忍任何的数据丢失,不能容忍任何的宕机的时间,这时候你还需要跨数据中心的多活和高可用的话,TiDB 是你唯一的选择。

第三,你需要对你整个业务做云上的改造,但却还在使用单机数据库的话,它一定会成为你整个架构的瓶颈,这时候你需要 TiDB 去帮你解决在云上的数据存储方案。

DB Sharding vs NewSQL

(1)业务的开发工作量的对比,比如说你在用传统的 DB Sharding 的时候,在项目的设计之初,你需要做分库分表、需要做中间件的选型、需要做主备的设计,可能是数以月计的,而且你还要有很强的架构能力去帮实现这事情。

(2)开发阶段,如果你是用传统的单机型数据库或者直接去做业务层的分库分表的话,很多业务的跨库、跨表的事务的查询是没有办法直接在数据库做的,需要业务层对连表查询去做保证,但这个程序的复杂度是非常高的,工作量至少要以月计算的。

(3)扩容,在传统的 DB Sharding 方案上,基本是没有办法去搞定的,复杂度会随着节点数的增加形成指数级的提升。

数据中心高可用、容灾、多活的完美解决方案

(1)DB2 的小型机,或者传统的硬件或者高端存储这种硬件复制的方案,缺点一是价格昂贵,另外,备份是一个冷备,就是当你的主生产中心故障时,还是需要人工手动去切换业务;

(2)Oracle ADG,但是 ADG 的方案和用传统的 DB2 的问题也是一样的,一是需要去额外购买 license,第二是并没有办法做到真正意义上的多活,他的备机也是一个 stand by,仍然在故障的时候没有办法做到秒级的 RTO,还是需要人工的介入,人工去确认数据没有问题,人工去把备机切换上来,这都是故障的隐患。

(3) MySQL这种互联网的开源关系型数据库,没有原生的安全的同步解决方案

TiDB中的一些方案

https://github.com/pingcap/tidb

https://pingcap.com/docs-cn/

https://pingcap.com/docs/

kv store RocksDB :

Raft to replicate data :通过Raft 做数据副本,leader负责写入,2个中任何一个fellower应答写入成功就可以了  prot from etcd 

分布式存储中的数据分片:kv Hash(简易,分散,缺点SQL查询Key太散,查询效率差,这里使用Hbase的range方式分组),注意逻辑上region分裂(同时有不同的副本),物理上Raft迁移增加fellower(从leader上拷贝)

关系 to kv

F1 在线schama变更 2013论文

kubernetes   docker


03-11
<think>好的,用户想了解关于TiDB的介绍与使用。首先,我需要根据用户提供的引用资料来整理相关信息。用户给出的引用1到4都是关于TiDB的不同方面,比如工具、安装、应用案例和源代码结构。我应该从这些引用中提取关键点,组织成一个清晰的回答。 首先,TiDB的定位是什么?引用1提到它是分布式数据库,兼容MySQL,适合在线事务和实时分析。这点很重要,需要放在介绍的开头。然后,用户可能关心它的核心特性,比如水平扩展、高可用性、强一致性和MySQL兼容性。这些在引用中都有涉及,尤其是水平扩展和兼容性。 接下来是安装与使用部分。引用2提到了TiUP工具,从4.0版本开始使用,简化了组件的管理。需要详细说明TiUP的作用,比如一行命令启动集群,并给出具体的安装步骤。引用1还提到syncer工具,用于将MySQL数据增量导入TiDB,这也是使用方面的重要内容,需要分点说明。 应用案例部分,引用3提到TiDB在互联网、金融等领域的应用,可以举几个例子,比如互联网公司的实时数据分析,金融行业的分布式事务处理,传统企业的数据整合。这些场景能帮助用户理解TiDB的实际价值。 最后,用户可能对技术架构感兴趣,但引用4主要涉及源代码结构,可能超出一般用户的了解范围,但可以简要提到其模块化设计,比如parser模块的结构,展示其专业性和可扩展性。 在生成相关问题的时候,需要围绕TiDB的核心功能、安装、使用场景、与其他数据库的区别等方面提问,帮助用户深入探索。比如,如何迁移MySQL数据到TiDBTiDB的优化方法,适用场景,与MySQL的区别,高可用性实现,TiUP的作用等。这些问题能引导用户进一步学习。 需要注意的是,所有数学表达式要用$...$格式,但当前内容可能涉及较少数学公式,但如果有的话需要正确应用。同时保持回答结构清晰,分点说明,语言简洁。最后检查引用是否正确标注,比如syncer工具在引用1,TiUP在引用2,应用案例在引用3,源代码结构在引用4。 现在组织内容,确保每个部分都有对应的引用支持,并且问题相关且具有针对性。可能遗漏的点需要确认引用资料是否覆盖,比如技术架构的详细部分,但用户提供的引用4更多是源代码目录,可能不需要深入,只需简要提及即可。</think>### TiDB 介绍与使用 TiDB 是 PingCAP 公司设计的开源分布式数据库,兼容 MySQL 协议,支持水平扩展、高可用性和强一致性,适用于在线事务处理(OLTP)和实时分析(OLAP)场景[^1][^3]。以下是核心内容整理: #### 一、核心特性 1. **水平扩展** 通过添加节点实现存储与计算能力的线性扩展,支持百 TB 级数据量[^1]。 2. **高可用性** 基于 Raft 协议实现多副本数据同步,故障时自动恢复。 3. **强一致性** 分布式事务支持 ACID 特性,保证数据一致性。 4. **MySQL 兼容** 支持 MySQL 协议与语法,可无缝迁移 MySQL 应用[^1]。 #### 二、安装与工具 1. **TiUP 工具** 从 TiDB 4.0 开始,TiUP 作为包管理器简化组件管理,例如启动集群: ```bash tiup cluster deploy <cluster-name> <version> topo.yaml tiup cluster start <cluster-name> ``` 支持一键部署 TiDB、PD、TiKV 等组件[^2]。 2. **数据迁移工具** - **Syncer**:增量同步 MySQL 数据到 TiDB。 - **Lightning**:全量数据导入工具,适用于大规模迁移。 #### 三、应用场景 1. **互联网实时分析** 如用户行为分析、实时推荐系统[^3]。 2. **金融分布式事务** 支持高并发交易与一致性要求。 3. **传统企业数据整合** 统一多数据源,简化架构。 #### 四、技术架构(示例) 以 `parser` 模块为例,其目录结构包括: - `./ast`:定义 SQL 解析后的抽象语法树(AST)[^4]。 - `./lexer`:词法分析,生成 token 流。 - `./parser`:核心 SQL 解析逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值