TiDB 适用场景

it2024-12-17  14

TiDB 适用场景: 1.强一致性分布式事务: 可以把 TiDB 想象成一个单机的 RDBMS,ACID 事务可以在多节点间进行,无需担心一致性问题。 TiDB 对业务 没有任何侵入性,是传统的数据库中间件、数据库分库分表等优雅的替换方案。 重点解决 MySQL 的单机性能和容量无法线性和灵活扩展的问题. 2.数据归档库: 若存储不足的时候可以水平扩展机器,TiDB的存储量大,归档的时候可以无需考虑磁盘空间。 配合TiDB的工具(syncer\mydumper\loader 和TIDB DM)可实现自动归档,当然也无需要考虑源库的操作。 顺序写入的场景:日志写入、数据审计、财务流水 3.MySQL单库超过亿行级别的表较多,否则量级达不到性能不如MySQL。至少是5000万行级别以上的。 4.业务爆发式增长,有高并发,业务量增长较快。 5.OLAP: TiDB 本身的SQL对OLAP支持有限制,需要结合TiSPark.在TiDB3.0之前不支持view,不支持windows functions, CTE也不支持,TiDB自身对OLAP查询有限。由于TiDB优先OLTP,借鉴Google的 spanner, 对批量INSERT、UPDATE、DELETE操作单次限制在30万行,需要手动修改参数支持DML大批量操作。 6.MySQL+MyCAT 这种分库分表的数据合并: MySQL+MyCAT的可支撑单表10亿级别的业务,但是需要配置MyCAT等数据库中间件,比较繁琐。 由于TiDB自身就支持自动分片的功能,可以替换MySQL+MyCAT这种方案。 7.异地多中心、auto-Failover保证数据库高可用: TiDB 使用多副本进行数据存储,并依赖业界最先进的 Raft 多数派选举算法确保数据 100% 强一致性和高可用。 副本 可跨地域部署在的不同的数据中心,主副本故障时自动切换,无需人工介入,自动保障业务的连续性,实现真正意义上 的异地多活。不过在实际部署异地多活的时候还是需要考虑网络传输等因素. 8.数据量大时,水平弹性扩展: 分布式的 TiDB 可随着你的数据增长而无缝地水平扩展,只需要通过增加更多的机器来满足业务增长需要,应用层可以 不用关心存储的容量和吞吐。 TiDB 根据存储、网络、距离等因素,动态进行负载均衡调整,以保证更优的读写性能。 TiDB 不适用场景: 1.MySQL单表存储数据在亿级别以下的时候,MySQL+MyCAT方案性能要比TiDB高。 2.资金预算紧张的情况下,运行一个TiDB集群至少需要6台高配SSD硬盘的主机(建议支持NVME协议) 随着时间的推移和硬件的发展,硬件成本会降低。 3.TiDB on cloud 虽然有TiDB operator 项目,但是截至20193月还不稳定和性能不足,不推荐运行在生产的kubernetes集群。 尚在PoC阶段。但是Cloud DB 是大势所趋。 4.要求100%不修改源代码迁移应用从MySQL迁移到TiDB。 这个主要是TiDB目前对MySQL的函数和功能的兼容性不足导致的。预期TiDB 3.0会兼容MySQL8.0版本大部分功能。 TiDB 不足的地方: 1.宣称HTAP,对于OLAP支持还需要大力发展 ,一般OLAP是列存计算上有比较大的优势,如何在一个数据库里做到行存和列存共存是需要解决的。 2.采用RocksDB 作为存储引擎,其自身存在写放大缺陷(Write Amplification ) 3.由于是兼容MySQL的语法,而不是标准SQL,对一些高频SQL语句(merge、full join等)支持不足 4.TiDB作为OLAP应用的时候,若OLTP和OLAP放置到一起对业务影响还是会较大的,需要做资源限制。尚需TiDB的 开发人员努力优化的,作为宣称的HTAP性能有待商榷和验证。 业界采用的方案: BAT三家有自己开发的对应的云数据库,国内的TMD(toutiao、meituan\xiaomi、didi)等互联网企业均有使用. https://pingcap.com/cases-cn/ 被替换的产品: 1.TiDB替换掉MySQL+MyCAT 2.TiDB替换掉Hbase 3.TiDB替换掉 4.替换掉OLTP和OLAP是两套存储和计算的方案 TiDB 畅想: 1.如何提升OLAP的性能?支持列存数据库 2.对于新兴的硬件的支持如GPU加速、FPGA. 3.生产级的TiDB on kubernetes 4.SQL标准的支持而非MySQL的SQL 方言
最新回复(0)