产品方向上比较,MySQL默认innodb,擅长OLTP的业务场景,同时MySQL可以插件组装各式引擎,换
言之MySQL是一个通用型的数据库产品支持所有的业务场景。而TiDB默认悲观事务,同样是以OLTP为
重,同样是一个通用型的数据库产品。但是两者是不一样的,由于MySQL是单机型的结构,如果它要扩
展,只能通过数据库中间件路由划分,如果数据满了需要停机停服,重新进行数据的割分。
TiDB对业务无侵入性,扩展非常简单,发展至今安装与维护都非常成熟 ,通过Tiup就可以就可以对分布
式集群进行组装维护的相关操作,并且支持在线升级,无缝迁移。
总结,TiDB与MySQL没有对比性, 他们不是同一类的数据产品,但是从数据库的特性和市场方向上出
发 ,他们又有了对比的维度指标。事实上,TiDB努力向MySQL学习,甚至还聘请了innodb的内核开发
工程师,努力调整TiDB的底盘,让TiDB从内向外都像MySQL。
同类竞争产品
TiDB是一款分布式数据库产品,以分布式为标识并能基于线下安装 ,国内同样竞比产品有
OceanBase,国外同比有CockroachDB。TiDB的商业经营主要集中在云数据库上,所以PolarDB也是
TiDB的竞争对手。那么TiDB与PolarDB、OceanBase、CockroachDB有什么不同?
从数据库处理的流程开始讲,从任务开始到任务结束。
1. 用户发起请求, 数据库客户端发起请求到指定的数据库集群。
2. 目标数据库响应 指定的数据库集群指定一个节点响应用户的请求。
3. 两者建立会话, 数据库集群其中一个节点与客户端产生会话。
4. 对象请求解析, 数据库将接收的请求进行 语法检查,对象解析、转换对应的关系代数结构、并进
行计划任务优化。
5. 调度并且执行, 按照拆解的计划寻找数据并进行计算,数据可能是按行式存放的,也可能是按列式
存放的【 TiDB是少数不多的产品中同时提供行式存储和列存存储的厂商】
6. 监测任务状态, 观测数据库的执行中状态。
7. 返回数据结果, 数据库服务端返回结果给数据库客户端
最关键的是第2步、第4步、第5步。
第2步是 哪一个节点响应数据库客户的请求,分布式数据库有两种系统架构,一种是中心化架构
【master\slave】,一种是去中心化架构。中心化架构的负色职责分清,负责干活、负责指挥、负责接
待用户,而去中心货架构则是每个节点角色平等,对待客户的请求,其中的一个节点会瞬间切换成负责
接待,剩余的节点根据情况转化执行。
TiDB在这里采用中心化的架构,节点角色之间的职责更加清晰,分工更加明确。
第4步和第5步是数据计算和数据存储的关键步骤,TiDB在这里做了深度的松散解耦,数据计算用TIDB,
数据存储用TIKV,两者是真正意义上的存算分离,要增加存储容量,可以增加没有CPU的硬盘服务器,
要增加计算能力,可以增加没有硬盘的服务器。关于分布式的功能和作用则集中在一个PD的模块上。
OB则是去中心架构,而且计算和存储高度耦合,所以OB又称为集中式的分布式架构,后面又称为单机
式的分布式架构。
TiDB比起同类产品在架构上更加高度松散耦合,与云计算技术更加紧密协作,珠联壁合。
TiDB vs MySQL
如果TiDB要做大做强,必须要撼动广大码农的工作使用习惯,广大码民对MySQL的使用已经深入人心
了,不管是TP应用,还是AP应用,先不管性能,首先用MySQL完成业务代码的开发,这意味着MySQL
经常被当HTAP数据库来用。下面我用CH-benchmark 针对 TiDB6.0以及MySQL8.0来做一个测试。
TPC-CH 由未经修改的 TPC-C 模型和事务、以及 TPC-H 查询的改编版本构成,TPC-CH 保持所有 TPC-C
实体和关系完全不变,并集成了 TPC-H 模型中的 SUPPLIER、REGION 和 NATION 表。这些表在 TPC-H
查询中频繁使用,并允许以非侵入的方式集成到 TPC-C 模型中。SUPPLIER 包含固定数量(10,000条)
的条目。因此,STOCK 中的一条记录可以通过 STOCK.S I ID × STOCK.S W ID mod 10, 000 =
SUPPLIER.SU SUPPKEY 与其唯一的供应商(SUPPLIER 表中对应记录)关联起来。TPC-C 中的原始
评论