Share to: share facebook share twitter share wa share telegram print page

TiDB

TiDB
開發者北京平凯星辰科技发展有限公司(PingCAP)
首次发布2017年10月15日,​7年前​(2017-10-15[1]
当前版本8.5.0[2]在维基数据编辑(2024年12月19日,12天前)
源代码库 編輯維基數據鏈接
编程语言Go (TiDB), Rust (TiKV)
语言英文、中文
类型NewSQL
许可协议Apache 2.0
网站pingcap.co.jp/tidb-overview/ 编辑维基数据

TiDB是一个开源的NewSQL数据库,支持混合事务和分析处理(HTAP)工作负载[3]。它与MySQL兼容,并且可以提供水平可扩展性、强一致性和高可用性。它主要由PingCAP公司开发和支持,并在Apache 2.0下授权。TiDB从Google的Spanner[4]和F1[5]论文中汲取了最初的设计灵感。[6]

TiDB被InfoWorld 2018 Bossie Award评选为最佳数据存储和分析开源软件之一。[7]

历史

PingCAP Inc.是一家软件公司,成立于2015年4月,成立后便开始开发TiDB。该公司是TiDB及其关联的开源社区的主要开发人员,维护人员和驱动者。[8]

主要特性

水平可扩展性

TiDB可以通过添加新节点来扩展SQL处理和存储容量。这使得基础设施容量的扩展更加容易和灵活,而传统的关系数据库只能垂直扩展。

MySQL兼容性

对于应用程序来说,TiDB的行为就如同一个MySQL 5.7服务器。用户可以继续使用所有现有的MySQL客户端库。因为TiDB的SQL处理层是从头开始构建的,而不是一个MySQL分支,所以它的兼容性不是100%,[9]而且MySQL和TiDB之间存在已知的行为差异。[10]

具有强一致性的分布式事务

TiDB在内部基于范围将表分片为的小块,这些块称为“区域”。[11]每个区域的默认大小约为100 MB,TiDB在内部使用二阶段提交来确保区域以事务上一致的方式进行维护。

云原生

为了使部署、配置、操作和维护更加灵活,TiDB被设计成可在云中工作。TiDB的存储层称为TiKV,于2018年8月成为云原生计算基金会的沙盒级别项目。[12]TiDB平台的体系结构还允许分别独立扩展SQL处理和存储。

更精简的ETL流程

TiDB可以支持联机事务处理(OLTP)和联机分析处理(OLAP)工作负载。这意味着,虽然用户可能传统上在MySQL上进行交易,然后将数据抽取、转换和加载(ETL)到一个列存储中进行分析处理,但这一步骤不再需要。

高可用性

TiDB使用Raft一致性算法[13]确保数据在整个Raft组的存储过程中高度可用和安全复制。在发生故障时,Raft组将自动为失败的成员选择一个新的领导者,并自我修复TiDB集群,而不需要任何必要的人工干预。失败和自愈操作对应用程序是透明的。

部署方法

Kubernetes Operator

可以使用TiDB Operator将TiDB部署到支持Kubernetes的云环境中。[14]Operator是打包、部署和管理Kubernetes应用程序的方法。它是为运行有状态工作负载而设计的,最早由CoreOS在2016年引入。[15]TiDB Operator[16]最初由PingCAP开发,并于2018年8月开源。[17]TiDB Operator可以用于在笔记本电脑[18]、Google Cloud Platform的Google Kubernetes引擎[19]和Amazon Web Services的Kubernetes弹性容器服务上部署TiDB。[20]

Ansible

通过使用TiDB-Ansible playbook,可以使用Ansible (軟體)部署TiDB。[21]

Docker

可以使用Docker在多个节点和多台机器上的容器化环境中部署TiDB,而Docker Compose可以使用单个命令部署TiDB以进行测试。[22]

工具

TiDB提供了一系列开源工具来帮助现有MySQLMariaDB用户进行数据复制和迁移。

Syncer与Data Migration

Syncer是一个工具,它支持从MySQL或MariaDB实例到TiDB集群的完整数据迁移或增量数据复制。[23]Data Migration(DM)是 Syncer的第二代迭代,它适合将已分片的MySQL或MariaDB表中的数据复制到TiDB。[24]Syncer/DM的一个常见用例是将MySQL或MariaDB表连接到TiDB,几乎将TiDB视为从属,然后在该TiDB集群上直接实时运行分析工作负载。

Lightning

Lightning是一个可将大型MySQL转储高速完全导入到新的TiDB群集中的工具,它提供了比执行每个SQL语句更快的导入体验。该工具用于把大量数据快速填充到一个最初为空的TiDB集群,以便加快测试或生产迁移。之所以能提升导入速度,是因为TiDB通过将SQL语句解析为键值对,然后直接生成有序字符串表(SSTable)文件到RocksDB[25]

TiDB-Binlog

TiDB-Binlog是一个用于收集对TiDB集群所做逻辑更改的工具。它用于在两个TiDB集群之间或从一个TiDB集群到另一个下游平台之间提供增量备份和复制。

它的功能类似于MySQL主从复制。主要的区别在于,由于TiDB是一个分布式数据库文件管理器,因此每个TiDB实例生成的binlog需要在被下游使用之前,根据事务提交的时间进行合并和排序。[26]

用户案例

目前,已有近3000家公司在使用 TiDB,其中包括Mastercard、AirBNB、Square、Paypay、中国银行、建设银行、美团、Bilibili、Shopee[27]、BookMyShow[28]、小米[29]、知乎[30]、美团点评[31]、爱奇艺[32], 转转[33]、摩拜[34]、易果[35],以及猿辅导[36]


参考文献

  1. ^ 1.0 GA release notes. 
  2. ^ 2.0 2.1 Release 8.5.0. 2024年12月19日 [2024年12月31日]. 
  3. ^ How TiDB combines OLTP and OLAP in a distributed database. [2019-12-07]. (原始内容存档于2019-05-02). 
  4. ^ Spanner: Google's Globally-Distributed Database. [2019-12-07]. (原始内容存档于2018-12-30). 
  5. ^ F1: A Distributed SQL Database That Scales. [2019-12-07]. (原始内容存档于2019-12-02). 
  6. ^ TiDB Brings Distributed Scalability to SQL. [2019-12-07]. (原始内容存档于2019-05-02). 
  7. ^ The best open source software for data storage and analytics. [2019-12-07]. (原始内容存档于2019-09-02). 
  8. ^ TiDB developer PingCAP wants to expand in North America after raising $50M Series C. [2019-12-07]. (原始内容存档于2019-05-02). 
  9. ^ Compatibility with MySQL. [2019-12-07]. (原始内容存档于2019-05-02). 
  10. ^ Meet TiDB: An open source NewSQL database. [2019-12-07]. (原始内容存档于2019-07-31). 
  11. ^ TiKV Architecture. [2019-12-07]. (原始内容存档于2019-05-02). 
  12. ^ CNCF to Host TiKV in the Sandbox. [2019-12-07]. (原始内容存档于2019-09-03). 
  13. ^ The Raft Consensus Algorithm. [2019-12-07]. (原始内容存档于2018-01-20). 
  14. ^ Database Operators Bring Stateful Workloads to Kubernetes. [2019-12-07]. (原始内容存档于2019-12-29). 
  15. ^ Introducing Operators: Putting Operational Knowledge into Software. [2019-12-07]. (原始内容存档于2019-11-25). 
  16. ^ TiDB Operator GitHub repo. [2019-12-07]. (原始内容存档于2019-07-16). 
  17. ^ Introducing the Kubernetes Operator for TiDB. [2019-12-07]. (原始内容存档于2019-05-02). 
  18. ^ Deploy TiDB to Kubernetes on Your Laptop. [2019-12-07]. (原始内容存档于2018-08-17). 
  19. ^ Deploy TiDB, a distributed MySQL compatible database, to Kubernetes on Google Cloud. 
  20. ^ Deploy TiDB, a distributed MySQL compatible database, on Kubernetes via AWS EKS. 
  21. ^ Ansible Playbook for TiDB. [2019-12-07]. (原始内容存档于2020-08-25). 
  22. ^ How to Spin Up an HTAP Database in 5 Minutes With TiDB + TiSpark. [2019-12-07]. (原始内容存档于2019-05-02). 
  23. ^ Syncer User Guide. [2019-12-07]. (原始内容存档于2019-11-21). 
  24. ^ DM GitHub Repo. [2019-12-07]. (原始内容存档于2020-08-25). 
  25. ^ Introducing TiDB Lightning. [2019-12-07]. (原始内容存档于2019-05-08). 
  26. ^ TiDB-Binlog Architecture Evolution and Implementation Principles. [2019-12-07]. (原始内容存档于2019-06-16). 
  27. ^ Shopping on Shopee, the TiDB Way - TiDB. pingcap.com. [2019-12-07]. (原始内容存档于2019-11-06). 
  28. ^ BookMyShow.com: More Uptime, 30% Less Operational Cost with TiDB - TiDB. pingcap.com. [2019-12-07]. (原始内容存档于2019-11-06). 
  29. ^ Powering the Xiaomi Mobile Lifestyle with TiDB - TiDB. pingcap.com. [2019-12-07]. (原始内容存档于2019-11-06). 
  30. ^ Lesson Learned from Queries over 1.3 Trillion Rows of Data Within Milliseconds of Response Time at Zhihu.com - TiDB. pingcap.com. [2019-12-07]. (原始内容存档于2019-11-06). 
  31. ^ TiDB, the Key to a Better Life for Meituan-Dianping’s 290 Million Monthly Users - TiDB. pingcap.com. [2019-12-07]. (原始内容存档于2019-11-21). 
  32. ^ Always Fun, Always On: How TiDB Helps iQiyi Deliver Streaming Videos - TiDB. pingcap.com. [2019-12-07]. (原始内容存档于2019-11-06). 
  33. ^ Managing the Surging Data Volume of a Fast-Growing Marketplace with TiDB - TiDB. pingcap.com. [2019-12-07]. (原始内容存档于2019-11-06). 
  34. ^ Blitzscaling the Largest Dockless Bikesharing Platform with TiDB’s Help - TiDB. pingcap.com. [2019-12-07]. (原始内容存档于2019-05-02). 
  35. ^ States, Austin TX United. The Hybrid Database Capturing Perishable Insights at Yiguo. Datanami. 2018-02-22 [2019-12-07]. (原始内容存档于2019-11-06). 
  36. ^ How TiDB tackles fast data growth and complex queries for yuanfudao.com - TiDB. pingcap.com. [2019-12-07]. (原始内容存档于2019-11-06). 
Index: pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve 
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 
Kembali kehalaman sebelumnya