软件开发使用TiDB做数据库,一定绕不开MySQL吗

问个简单的问题。。。使用TiDB开发软件系统,系统后端一定要先访问操作MySQL再复制至TiDB吗?也就说一定要用MySQL才能使用TiDB吗?

能不能只使用TiDB呢?那这样ORM是否可以直接操作TiDB实现数据CRUD呢

3赞

可以直接访问tidb啊,我们这里的业务就是直接操作tidb的
不过如果你们老业务的话,一定要进行前期测试,看哪些东西不适配

2赞

请问怎么直接访问呢?目前我们是采用Django开发后端,sqlalchemy操作MySQL做CRUD。如果绕过MySQL直接访问TiDB的话,sqlalchemy还能直接操作吗?另外TiDB不是不支持存储过程吗,CRUD更改的数据怎么绕过mysql复制而存到TiDB呢…在下是小白,冒昧求教5555

1赞

TiDB 支持 MySQL 传输协议及其绝大多数的语法。这意味着现有的 MySQL 连接器和客户端都可以继续使用。所以正常情况下来说应该直接使用原来 Python 的程序连接 TiDB 就可以了。存储过程这块只能改程序了,mysql本身也不建议用存储过程。

1赞

tidb 不支持存储过程,昨天贾老师在聊天中也谈到了这个问题,
以前的架构,数据量和计算要求,通常会放到配置最好的那台机器上,
最好的机器是哪个? 当然是数据库咯
那如果数据库是最好的配置,为啥不计算好了,直接用? 所以 这个有历史可寻的

分布式数据库的算力,是通过多个节点来一起加强,不是单个节点了,最大的区别

业务场景也是如此,如果没有量级的飞速增长,用用mysql,分库分表,在做个数据归档是不是就满足要求了? 那为啥要折腾? 因为业务在变,量级在给出更高的要求

1赞

都一样啊,sqlalchemy只是个操作数据库的框架,因为tidb兼容mysql,sqlalchemy配置的链接是mysql还是tidb都行啊,你现在的链接配置的是tidb的么,还是说你配置的是mysql,然后mysql和tidb之间又做了dm同步

2赞

我们现在链接配置的是mysql,正在考虑怎么配置tidb。
按照您的意思,是有两种方案,一是直接链接配置Tidb,sqlalchemy操作数据库,这种方案就可以绕过mysql。二是链接配置mysql,再通过dm同步到tidb。请问是这样吗~

1赞

哦哦,也就是说对tidb进行CRUD也是可以的,只是如果有增量数据要存储的话需要用其他手段存储?

1赞

其实正常链接就是第一种方案,如果想使用tidb的话第二种没啥意义,经历完善的测试就好了

1赞

好的好的!感谢感谢!

1赞

应该没有问题,存储过程实现的功能放到代码里取实现,增量数据存储是指什么?

1赞

就是后续需要添加大批数据进行存储。话说CRUD不需要涉及存储过程吗,为什么可以用原有orm框架进行CRUD,但存储过程需要改程序呢?

1赞

后续需要添加大批数据进行存储加tikv节点就行,orm框架本质不也是代码生成sql去数据库执行么,但是存储过程是数据库层面的东西。

2赞

好的好的!感谢大佬!

1赞

把tidb当成mysql来用就行了
1、开发使用msyql的连接驱动 连接tidb
2、客户端可以使用navicat 连接tidb

1赞

只是他们的协议一样吧,那来的先访问mysql再复制的操作

2赞

真的要从mysql 切换到 tidb 前还是要进行测试的,尤其是 tidb 与 mysql 不同处的测试。我们公司就遇到了自定义函数的问题。

1赞

基本上是无缝转换过来的,只是有些场景或者用法在分布式数据库上有更有的使用方式,最好按照分布式数据库最有用法调整一下。比如自增主键这种,高并发使用auto_random,提前分配region等等

1赞

感觉题主是不是对存储过程有什么误解,你就把tidb当成一个没有存储过程的musql数据库来用就行了。

1赞