tidb分布式数据库
徐凯文( Kevin Xu)是PingCAP全球战略和运营总经理 。
TiDB是一个开源,云原生,MySQL兼容的分布式数据库,可处理混合事务和分析处理(HTAP)工作负载。 它是旨在大规模部署的关系数据库“ NewSQL”类的成员。 对于那些想知道的人,“ Ti”代表钛。
PingCAP仅仅在三年半前才开始构建TiDB,但是该产品已经聚集了超过15,000个GitHub明星,200个贡献者,7200个提交,2000个fork和300个生产用户。 TiDB最近还获得了InfoWorld的2018年Bossie奖,这是数据存储和分析领域最好的开源软件项目之一。
在本文中,我将介绍TiDB的核心功能和体系结构设计,涵盖数据库的三个主要用例,并预览即将推出的多云TiDB即服务产品和PingCAP的TiDB学院。
TiDB功能
TiDB的核心功能包括弹性水平可伸缩性,具有ACID保证的分布式事务,高可用性以及对实时事务数据的实时分析。 让我们看一下这些功能背后的平台架构。 TiDB平台具有以下组件:
- TiDB:Go内置的与MySQL兼容的无状态SQL层。
- TiKV:内置在Rust中的分布式事务键值存储。 (TiKV最近成为了Cloud Native Computing Foundation项目 。)
- TiSpark:一个Apache Spark插件,可连接到TiKV或专用的列式存储引擎(我们正在努力开发的东西……敬请期待)。
- 布局驱动程序(PD):由Etcd支持的元数据集群,用于管理和调度TiKV。
TiKV是基础层。 通过执行Raft共识协议,所有数据都将在这里持久保存,自动划分为较小的块(我们称为“区域”),自动复制并使其高度一致。 TiKV与PD,Placement Driver一起使用可以在节点,数据中心和地理位置之间复制数据。 它还可以在热点形成时动态删除它们,并拆分或合并区域以提高性能和存储使用率。 我们在TiKV内实现基于范围的分片,而不是基于哈希的分片,因为我们从一开始的目标就是支持功能齐全的关系数据库。 因此,TiKV支持各种类型的扫描操作-表扫描,索引扫描等。
TiDB中的无状态SQL层可处理100%的在线事务处理(OLTP)工作负载和80%的常规即席在线分析处理(OLAP)工作负载。 展示常规的性能改进(见我们的最新TPC-H基准 ),该无状态SQL层利用TiKV的分布式特性经由协处理器层通过部分查询同时向下推到不同TiKV节点来执行并行处理。
对于更复杂的OLAP工作负载,例如用于训练机器学习模型的迭代分析或实时商业智能收集,第二个无状态SQL层TiSpark负责执行任务,也直接从TiKV提取数据。 TiDB讲MySQL,而TiSpark公开Spark SQL。
![tidb平台架构](https://i-blog.csdnimg.cn/blog_migrate/b866a5cec316f742f41bd002a9002aa7.png)
TiDB平台架构。
TiDB架构
您可能已经注意到,整个TiDB平台都是模块化的-所有组件都是独立的代码库,并且松散耦合。 您可以将整个TiDB平台部署为一个完整的软件包(大多数用户这样做),也可以根据需要部署它的一部分。 这种模块化架构为用户提供了最大的灵活性,并符合云原生架构的标准。 根据CNCF的官方定义 ,云原生技术是“启用具有弹性,可管理和可观察的松散耦合系统的技术”。
作为TiDB用户,您可以向外扩展或向内扩展无状态SQL Server或TiSpark层(即您的计算资源),而与扩展TiKV(即您的存储容量) 无关 ,从而可以充分利用您消耗的资源来适应您的需求。工作量。 您几乎可以将TiDB无状态SQL服务器看作是位于TiKV之上的微服务,TiKV是一个有状态的应用程序,用于存储数据。 这种设计使错误隔离更加容易,并且滚动升级和维护更快,破坏性更小。
权衡这些TiDB的优点是部署和监视会增加一些复杂性-还要跟踪更多内容。 但是,随着Kubernetes的兴起和CoreOS率先推出的Operator模式,TiDB的部署和管理变得简单,直接且日益自动化。 Kubernetes的开源TiDB Operator允许您在任何云环境(公共,私有或混合)中部署,扩展,升级和维护TiDB。 TiDB默认情况下会安装Prometheus和Grafana,因此监视“即开即用”。 ( 请参阅有关TiDB Operator的教程 。)
最终,技术资产的灵活可扩展性对于业务成功至关重要。 成为下一个Facebook和下一个Friendster是有区别的。 TiDB模块化和Kubernetes编排使您能够为数据库服务带来灵活的可伸缩性。
最后,让我们看一下TiDB的三个主要用例:MySQL可伸缩性,HTAP实时分析和统一数据存储。
![tidb grafana仪表板](https://i-blog.csdnimg.cn/blog_migrate/1d0635fa25d2864550547cee403dd575.png)
一个示例Grafana仪表板,监视TiDB部署。
TiDB用例:MySQL可伸缩性
由于TiDB会说MySQL,因此它与MySQL有线协议以及MyDumper和MyLoader等MySQL生态系统工具都兼容,因此非常适合那些难以扩展MySQL用户。 需要明确的是,TiDB 不为MySQL的替代品; 相反,它是对 MySQL的补充 。 作为单实例数据库,MySQL仍然是一个不错的选择,因此,如果您的数据量或工作量较小,请坚持使用MySQL。 但是,如果您为此类问题抓紧时间 :
- 考虑如何复制,迁移或扩展数据库以增加容量
- 寻找优化现有存储容量的方法
- 担心查询性能降低
- 研究中间件扩展解决方案或实施手动分片策略
然后是时候开始考虑使用像TiDB这样的分布式SQL数据库了,它可以为您立即解决所有这些问题。 MySQL分片解决方案的不足之处在于,为什么Mobike(世界上最大的无基座自行车共享平台之一)采用TiDB(请阅读Mobike案例研究 )。 Mobike在200个城市中运营900万辆智能自行车,为2亿用户提供服务,因此,不难想象其团队在MySQL上遇到的扩展瓶颈。 Mobike通过与MySQL一起部署TiDB以及PingCAP的企业工具套件(包括Syncer)来满足其对弹性可伸缩性的需求 ,该套件包括Syncer ,可自动将MySQL主数据库与TiDB集群同步。
TiDB和其他与MySQL兼容的数据库之间的主要区别在于TiDB的分布式体系结构。 MySQL是一种已有23年历史的技术,它从未打算作为分布式系统使用。 例如,与TiDB不同,MySQL 无法生成将部分查询同时下推到多台计算机以进行并行处理的查询计划。 TiDBSQL解析器,基于成本的优化器和协处理器层是从头开始构建的,以利用分布式数据库的计算资源和并行性,因此MySQL用户可以拥有更大的权力。
TiDB用例:HTAP实时分析
HTAP(混合交易和分析处理)是Gartner在2014年创造的一个术语,它描述了一种数据库架构,可以打破交易和分析数据工作负载之间的隔wall。 目标是为企业提供实时分析,从而实现实时决策。 其他行业分析公司针对这种体系结构提出了自己的术语:451 Research的“ HOAP ”(混合操作分析处理),Forrester的“ Translytical ”和IDC的“ ATP ”(分析事务处理)。
正如我们已经讨论过的,TiDB通过解耦其计算层和存储层,并为不同的分析任务使用不同的无状态SQL引擎(TiDB和TiSpark),打破了OLTP和OLAP之间的壁垒。 两个引擎都连接到相同的持久数据存储(TiKV),从而使实时分析和决策成为系统的自然产物。 最大程度地减少了繁琐的ETL流程,“ t + 1”延迟不再只是生活的一部分,而且TiDB内部的数据可以比以前更富创造性地使用。
Yiguo.com是一个大型的新鲜产品交付平台,可为500万用户提供服务,它在TiDB之上运行Apache Spark(请阅读Yiguo.com案例研究 )以加快复杂查询的速度。 通过从SQL Server升级基础架构并通过TiDB增强其现有MySQL部署,Yiguo.com可以在中国最大的在线购物日的“光棍节”中全天高效地运行复杂的联接,以获取洞察力并实时做出决策。
TiDB用例:统一数据存储
TiDB是分布式的模块化HTAP数据库,旨在横向灵活地扩展计算和存储容量,以适应不同的工作负载,同时还充当“单一事实来源”。 通过在键值存储之上提供可伸缩SQL服务,TiDB旨在大幅降低与维护基础架构堆栈中的数据管理层有关的人力和技术成本。
对于全球最大的食品配送平台之一Ele.me而言,统一数据存储是采用TiDB和TiKV的主要原因之一(请阅读Ele.me案例研究 )。 以前,Ele.me的数据分散在许多不同的数据库中-MongoDB,MySQL,Cassandra,Redis。 最终,由于增加了运营和维护成本,这种临时堆栈变得站不住脚。 现在,单个TiKV部署可为大约2.6亿用户提供给Ele.me的实时流量的80%。 TiKV集群跨越四个数据中心,每个数据中心都有100多个节点,这些节点始终存储着数十TB的数据。
多云TiDB即服务和TiDB学院
自PingCAP于三年前开始构建TiDB以来,该数据库已在许多情况下经过了实战测试。 如今,已有300多家公司在生产中依靠TiDB来满足其OLTP / OLAP,数据库可伸缩性,实时分析和统一存储的需求。 但是, TiDB路线图上仍有许多工作要做。
其中一项是完全托管的TiDB即服务产品,可在任何云环境(公共,私有或混合)中使用。 PingCAP一直在研究基于Kubernetes的企业级,完全托管的TiDB产品,并将在今年年底发布第一个版本。 如果您有兴趣尽早使用此产品,请 在此处注册 。
PingCAP正在进行的另一个项目是TiDB学院,这是一组自定进度的动手实践课程,旨在帮助数据库管理员,开发人员和系统架构师了解TiDB的体系结构,设计选择,优势和取舍。 第一个课程“带有用于MySQL DBA的TiDB的分布式数据库”已准备好报名。 您可以在这里注册 。
如果您只是想尝试一下TiDB,请查看我们的《 TiDB快速入门指南》 。
Kevin Xu(twitter:@kevinsxu)是PingCAP全球策略和运营总经理 ,特别关注云产品管理和策略。
-
新技术论坛提供了一个以前所未有的深度和广度探索和讨论新兴企业技术的场所。 选择是主观的,是基于我们选择的技术,我们认为这些技术对InfoWorld读者来说是重要的,也是他们最感兴趣的。 InfoWorld不接受发布的营销担保,并保留编辑所有贡献内容的权利。 将所有查询发送到 newtechforum@infoworld.com 。
tidb分布式数据库