tikv集群为什么不支持mpp?

为什么tikv集群不支持mpp架构? 是技术上的问题,还是tikv架构上的限制,又或者是其它问题?

这涉及到架构和模型的区别。

大规模并行处理(MPP)是一种计算架构,它利用大量的处理器或计算节点同时工作来解决计算密集型问题。MPP系统通过将任务并行地分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终结果。这种架构在数据库非共享集群中尤为常见,其中每个节点都有独立的磁盘存储系统和内存系统,并通过专用网络或商业通用网络互相连接,协同计算,作为整体提供数据库服务。

你要看MPP计算架构的定义,tikv的cop层是完全满足这个定义的。
不过现在的MPP多指的是MPP模型。

MPP模型最早由Karloff、Suri和Vassilvitskii于2010年提出,是并行计算中一种重要的模型,可以用来建模Hadoop、Spark等众多实际广泛应用的并行计算框架。在MPP模型中,计算以同步轮进行,在每一轮中,任何一台机器都可以向/从任何其他机器发送/接收信息,前提是从/向每台机器传输的数据总量为O(1)。MPP算法的效率是通过轮数来衡量的,一般追求常数轮的算法。此外,MPP算法还应该是完全可扩展的,即算法在任何内存参数下都可以运行,尤其是对于高维聚类问题,需要满足算法的可扩展性。

tikv不满足这个模型的定义,很明显tikv不满足 任何一台机器都可以向/从任何其他机器发送/接收信息

我个人理解,tikv不应该支持MPP模型的主要原因还是稳定性。
任何一台机器都可以向/从任何其他机器发送/接收信息,tikv层会是一个复杂的相互调用的网络。
这其实就是一种铁索连环,如果正常业务复杂对整个tikv层压力是80%,当其中一台tikv因为各种原因挂掉的时候,整个tikv层的处理能力也会下降,同样的业务量,可能很快使得整个tikv层都崩掉。

归根到底TP业务和AP业务的要求和计算特点就是不一样的。从保证稳定的角度,假设需要数据间的相互交换,放到tidb层去做,保证tikv层的稳定,是一种更好的设计。

2 个赞

因为 tiflash 支持 :joy_cat:,MPP 模型主要针对大数据量的处理,而 tikv 是行存,为了 TP 而设计的

1 个赞

列存可以

应该是综合评估后的结果,有tiflash 支持,tikv不支持

mpp需要列存支持

tiflash不是支持吗

tiFlash不是主要做数据分析用的吗,安装的时候把组件装上就可以了

:thinking:tikv是保证OLTP的,tiflash是保证OLAP的,所以tikv不支持,tiflash支持,不知道这个能不能解释的通

只有tiflash才支持mpp,看一下101课程。

tiflash支持吧

mpp是大规模并行处理结构,应用于OLAP场景,tiflash支持;
tikv是行存结构,适合快速事务处理,应用于OLTP场景。

二者的目标场景和技术实现都不一样,但是TiDB集群可以在一个集群实现,相辅相成,这就是真正实现了HTAP的先进架构。

1 个赞

tidb就算做mpp其实也是在tidb-server上做,不可能在tikv上做。

TiDB的MPP不是在TiFlash上做的吗?

假如你说的MPP是一种并行计算架构,TIDB符合,假如你说的MPP是模型,TIDB不符合

多谢回复 :call_me_hand:

mpp的确只能在tiflash上运行。

我的理解mpp的并发度是受限的,肯定要先确保TP业务。TiFlash做分离也是确保TP业务不收影像。

1 个赞

的确不支持哦,官方设计的问题。

只有tiflash才支持mpp