TiDB 项目介绍
TiDB 是一个开源的分布式 SQL 数据库,它的名称中的 "Ti" 代表钛元素。这个项目旨在提供高可用性、可水平和垂直扩展、强一致性以及高性能的云原生数据库解决方案。
核心特性
分布式事务
TiDB 采用两阶段提交协议来确保 ACID 合规性,提供强一致性。事务可以跨多个节点进行,即使在网络分区或节点故障的情况下,TiDB 的分布式特性也能确保数据的正确性。
可扩展性
TiDB 支持水平和垂直扩展。用户可以通过添加更多节点来实现水平扩展,或者通过增加现有节点的资源来实现垂直扩展,这些操作都可以在不停机的情况下完成。TiDB 的架构将计算与存储分离,使得用户可以根据需求灵活地调整这两个方面。
高可用性
TiDB 内置了 Raft 共识协议,确保了系统的可靠性和自动故障转移。数据被存储在多个副本中,只有在写入大多数副本后,事务才会被提交,这保证了强一致性和可用性,即使部分副本失败也不会影响整体系统。用户还可以配置副本的地理位置分布,以实现不同级别的灾难容忍度。
HTAP 能力
TiDB 提供了两种存储引擎:行存储引擎 TiKV 和列存储引擎 TiFlash。TiFlash 使用 Multi-Raft Learner 协议实时从 TiKV 复制数据,确保了两种存储引擎之间的数据一致性。TiDB 服务器可以协调在 TiKV 和 TiFlash 之间执行查询,以优化性能。
云原生
TiDB 可以部署在公有云、私有环境或原生 Kubernetes 环境中。TiDB Operator 可以帮助在 Kubernetes 上管理 TiDB,自动化集群操作。同时,TiDB Cloud 提供了全托管服务,使用户能够轻松经济地部署 TiDB 集群。
MySQL 兼容性
TiDB 与 MySQL 8.0 兼容,用户可以使用熟悉的协议、框架和工具。大多数情况下,应用程序可以无需修改代码或只需少量修改就能迁移到 TiDB。此外,TiDB 还提供了一套数据迁移工具,帮助用户轻松将应用数据迁移到 TiDB 中。
开源承诺
开源是 TiDB 的核心理念。所有源代码,包括企业级功能,都在 GitHub 上以 Apache 2.0 许可证公开。TiDB 团队相信开源能够促进透明度、创新和协作。他们积极鼓励社区贡献,以建立一个充满活力和包容性的生态系统。
快速入门
TiDB 提供了多种部署方式:
- 本地测试集群:用户可以参考 TiDB 快速入门指南在本地部署测试集群。
- Kubernetes 部署:使用 TiDB Operator 可以在自管理的 Kubernetes 环境或公有云的 Kubernetes 服务上轻松部署 TiDB。
- TiDB Cloud:这是一个全托管的 TiDB 版本,提供免费套餐,无需信用卡即可快速获得一个免费集群。
此外,TiDB 还提供了丰富的 SQL 功能,用户可以通过文档了解这些功能。开发者可以使用 MySQL 驱动程序或 ORM 来构建 TiDB 应用。
社区支持
TiDB 拥有活跃的社区支持。用户可以通过 Discord、Slack、Stack Overflow 等平台与其他 TiDB 用户交流,提问和分享经验。对于 bug 报告、改进建议或新功能请求,可以使用 GitHub Issues 或参与 GitHub Discussions。
贡献
TiDB 欢迎来自各方的贡献。无论是改进文档、修复 bug 还是开发新功能,都可以参与到 TiDB 的开发中来。项目提供了详细的贡献指南和开发指南,以及标记为"good first issues"和"help wanted"的 issues 供新贡献者选择。此外,TiDB 还提供了贡献地图,列出了可以贡献的各个方面。
通过这些特性和社区支持,TiDB 正在成为一个强大、灵活且易于使用的分布式数据库解决方案,适用于各种规模的企业和应用场景。