传统数据库和Tidb都有什么区别呢?

Tidb和传统数据库都有什么区别呢?

理解是传统集中式以及衍生的主备及读写分离等,问deepseek的结果:

1 个赞

刚好有有一期地区交流就讲过这个。

带你走进 TiDB,对比传统数据库,TiDB 强在哪?谈谈 TiDB 的适应场景和产品能力-韦万.pdf (5.2 MB)

1 个赞

1. 架构

  • 传统数据库(如 MySQL、PostgreSQL、Oracle 等):
    • 通常采用单机架构或者基于主从复制、分片等方法来实现水平扩展。
    • 传统数据库通常是单机架构,性能和容量受到单台机器硬件资源的限制。
    • 如果需要处理大规模的数据集或高并发请求时,传统数据库可能需要复杂的扩展机制,如分库分表等。
  • TiDB
    • TiDB 是一个分布式数据库,内建支持水平扩展。它的架构由三个主要组件组成:TiDB Server(SQL层)TiKV(分布式存储层)PD(Placement Driver,协调调度层)
    • TiDB 采用无共享架构(Shared-Nothing),每个节点独立工作,通过分布式协议协调一致性和负载均衡。
    • 它的设计目标是实现大规模数据处理,支持自动横向扩展。

2. 数据存储方式

  • 传统数据库
    • 通常采用本地磁盘存储,数据存储结构为传统的表结构,数据存储通常是集中式的。
    • 虽然支持索引、缓存等优化,但存储的性能和容量有局限,扩展往往需要依赖外部方案,如分区和分表。
  • TiDB
    • TiDB 使用 TiKV 作为存储层,TiKV 是一个分布式键值数据库,具有线性扩展的特性。
    • 数据是以 Key-Value 形式存储,并通过分布式方式将数据分布到多个节点上。TiDB 的存储层是高度分布式的,支持大规模数据的存储和查询。
    • TiDB 通过存储引擎(如 RocksDB)来实现数据的高效持久化。

3. 扩展性

  • 传统数据库
    • 扩展性相对较差,传统数据库通常只能通过垂直扩展(提升单机硬件性能)或者采用 主从复制分区 的方式进行水平扩展。
    • 当需要处理大量数据时,传统数据库的扩展性和性能可能成为瓶颈。
  • TiDB
    • TiDB 设计为水平可扩展,可以在不影响现有系统运行的情况下,动态增加节点以扩展计算和存储能力。
    • TiDB 可以自动分配和调整数据的分布,支持大规模并行处理。它能够根据负载自动进行扩展,支持海量数据和高并发请求。

4. 事务处理和一致性

  • 传统数据库
    • 传统数据库通常支持 ACID(原子性、一致性、隔离性、持久性)事务,但在分布式环境下的一致性和隔离性可能存在问题,尤其是当数据库分片、跨节点操作时。
    • 多数传统数据库在分布式环境下的事务处理存在挑战,如网络分区时的一致性问题。
  • TiDB
    • TiDB 支持 分布式 ACID 事务,通过 Percolator 事务模型(类似 Google Spanner 的设计)来保证分布式系统中的一致性和事务隔离性。
    • TiDB 通过 Raft 协议来保证数据的一致性和高可用性,确保分布式系统中事务的一致性。

5. SQL 支持

  • 传统数据库
    • 传统关系数据库系统通常支持丰富的 SQL 语法和功能,能够很好地处理关系型数据。
    • 但是在处理海量数据时,传统数据库可能需要复杂的优化,如分库分表、手动的负载均衡等。
  • TiDB
    • TiDB 完全兼容 MySQL 协议,支持传统的 SQL 查询语法,同时也能支持分布式查询。
    • 用户可以像使用 MySQL 一样使用 TiDB,且无需关注分布式系统的复杂性。

6. 高可用性与故障恢复

  • 传统数据库
    • 传统数据库可能依赖 主从复制双活架构 来提供高可用性,但在发生故障时,恢复过程通常较为复杂,且可能存在数据丢失的风险。
  • TiDB
    • TiDB 设计为 高可用,通过 Raft 协议 来保证节点间数据的一致性。即使在部分节点故障的情况下,系统仍然能够保证数据的高可用性和一致性。
    • TiDB 支持自动数据备份和恢复,具备容错能力。

7. 适用场景

  • 传统数据库
    • 更适合小规模、单机环境,适用于中小型应用,或者对事务一致性要求高的传统应用场景。
    • 对于数据量较小或扩展需求不高的业务系统非常合适。
  • TiDB
    • 适用于需要 高并发、高可用、大数据量 的应用场景,例如互联网公司、电商平台、大数据分析平台等。
    • 当企业需要处理海量数据,且希望能够灵活扩展时,TiDB 是一个非常合适的选择。

总结

特点 传统数据库 TiDB
架构 单机或主从架构 分布式架构
扩展性 垂直扩展、分库分表 水平扩展,动态添加节点
存储方式 本地存储或集群存储 TiKV 分布式键值存储
事务支持 支持 ACID,分布式环境下有挑战 支持分布式 ACID 事务,Raft 保证一致性
SQL 支持 完全支持 SQL 兼容 MySQL SQL
高可用性 主从复制,手动负载均衡 高可用,自动故障恢复
适用场景 小规模、单机环境 大规模、高并发、分布式场景
1 个赞

https://docs.pingcap.com/zh/tidb/stable/overview

看首页介绍,还有视频…

视频参考: 课程中心
文档参考: TiDB 文档中心
另外,架构,存储的方式,高可用这些都不一样 。

给我感触最深的三点
1、开源
2、计算+存储分离的架构【多点写入,强一致性读】
3、有社区

1 个赞

开源社区、分布式、节点任意扩缩容

关键是对传统如何定义?

:joy:我也有这种疑问,但是默认认为是 集中式数据库

传统的单机数据库存的数据有限,但是性能比较稳定一些。
分布式数据库可以随意扩展,自带高可用能力。缺点就是对网络比较敏感,出问题排查复杂一些。因为组件多,大多数都是通过网络进行交互的。

最大区别就是架构上,传统的只能单机写入,分布式可以多点写入且分布式的读写可以横向扩张,但是传统的只能横向扩展读

你这问题看一下这个官方视频吧
https://learn.pingcap.cn/learner/course/960001