Tidb和传统数据库都有什么区别呢?
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 个赞
给我感触最深的三点
1、开源
2、计算+存储分离的架构【多点写入,强一致性读】
3、有社区
1 个赞
开源社区、分布式、节点任意扩缩容
关键是对传统如何定义?
我也有这种疑问,但是默认认为是 集中式数据库
传统的单机数据库存的数据有限,但是性能比较稳定一些。
分布式数据库可以随意扩展,自带高可用能力。缺点就是对网络比较敏感,出问题排查复杂一些。因为组件多,大多数都是通过网络进行交互的。
最大区别就是架构上,传统的只能单机写入,分布式可以多点写入且分布式的读写可以横向扩张,但是传统的只能横向扩展读