能否替换tidb的存储?

有这个必要吗?那还需要用tidb干啥呢

tidb 代码里很多地方强依赖 tikv 和 pd,并没有很好地解耦,替换不现实。
之前 foundationdb 想过直接用 tidb 做上层的 SQL 引擎,后来放弃了:Use FoundationDB as an alternative of TiKV for TiDB · Issue #19111 · pingcap/tidb · GitHub

2 个赞

TiDB作为一款优秀的分布式数据库,其核心组件主要是是计算层tidb-server、存储层tikv-server和调度管理层pd-server,这几个组件共同构成了这款数据库。

楼主如果不想要存储层tikv,那么由于pd是管理数据Region的调度管理层,那么也不需要pd-server了,这样只剩下一个tidb-server计算层。由于tidb-server包含有很多与tikv、pd相关的处理逻辑,你们也是无法直接使用的,需要经过大量的源码调整和验证,实在是吃力不讨好。如果仅仅是想要一个SQL解析器、事务处理模块,可以直接用官方开源的 sql parser,这个比你直接使用tidb-server好多了。

另外,在只需要KV存储的业务场景,可以不用tidb-srver计算层,只部署tikv-server和pd-server 实现一个纯分布式KV键值对分布式存储系统,业务绕过滤事务等相关特性,直接访问的 Raw KV。这个用法需要业务方有极强的源码把控能力,以应对各种未知的问题(虽然支持,但毕竟是非常规用法)。

2 个赞

你这样的话,PD的调度,TiDB的算子下推啥的应该都需要改源代码吧

我看单独用tidb源码编译运行也能跑,不需要安装tikv和pd,是本地有一个store吧

是的,我看单独编译tidb运行也能跑,不需要装tikv和pd,这个本地有一个store

实现所有的tikv的接口和pd的接口就可以替换,但是tidb有些和tikv耦合的有点紧,比如说region管理之类的。

tidb和tikv代码是全部开源的,大佬可以去研究下。
大佬有自己开发一个数据库的想法非常牛。

这位大佬估计就是想自己做自己的数据库了

弄个单机的应该不需要pd吧,只要能从自己存储上拿数据上来在tidb层做计算就行了

这是打算套壳?吃信创的汤了?

那不是,打算试下自己用用看

好新颖的想法

tidb的代码里面有访问pd的部分,查region在哪里。这个得实现,否则没法工作。

MySQL 引擎都是可插拔的

PG 也有外表一说,往这些方向研究吧。

TIDB 的扩展性暂不清楚。

这个搞你得对他们的组件了解的非常深刻吧,不建议

如果这样那你要根据tidb实现相应的接口,很复杂不建议这样做

大佬,具体得实现哪些接口才行啊,有相关文档吗