请教一下跨库查询和插入是怎么做的?

2017-07-15 11:01:27 +08:00
 ericgui
现在有两个系统,而且分别在两台服务器里。

A app CRUD A db,就是 A 客户端可以对 A 自己的 db 增删改查
B app CRUD B db,就是 B 客户端可以对 B 自己的 db 增删改查

现在想 B app R A db,就是 B 来读取 A 数据库,
然后读取的数据,插入到 B 自己的 db 里

或者写个专门用于转存数据的脚本也行


我查了好多方法,但是他们都讨论的假设前提是 AB 两个应用,在同一台服务器,只是不同的数据库

倒是有一个帖子,说是要建立 A 和 B 服务器之间的链接就行,但例子是微软的 MS SQL

有高人指点一二吗?谢谢
4022 次点击
所在节点    程序员
10 条回复
imnpc
2017-07-15 11:15:43 +08:00
一般来说是开放双方 api 用来读取写入

当然 还有一种作死的方法 开放远程数据库连接
配置下同样的数据库帐号密码写入到 app 中 直接读取写入...
缺点是容易被反编译以后干死 2 台服务器....
ericgui
2017-07-15 11:28:07 +08:00
@imnpc 其中一个应用,就是 A 应用,是闭源软件,但可以读取到 数据库,所以才出此下策。
也就是说,我没法直接 更改 A 的源代码,为 B 应用提供一个 API。

我可不可以在 A 的服务器中,写个小程序,专门为 B 提供 API 的代码,这个小程序和 A 共用一个数据库?这样,A 服务器仅仅暴露 API,而不是开放远程数据库连接。这样会安全一点哈。
Immortal
2017-07-15 12:32:48 +08:00
开 api 别直接建连接
ericgui
2017-07-15 12:41:29 +08:00
@Immortal 那我试试吧,哎,hack 一个垃圾系统,也挺 郁闷。
pine
2017-07-15 13:17:35 +08:00
楼主是新手还是什么,问题没有找到关键点,是你不会跨库操作,还是想给系统添加功能,还是用其他软件实现,
你既然能连接数据库,还能操作数据库,做什么还不是都随你?
odirus
2017-07-15 13:33:11 +08:00
直接读取其他系统数据库 -> 请求量少,使用 RPC 调用对方接口即可 -> 高并发,考虑 RPC 服务治理等


从小系统到高并发,基本上就这种路线了。直接跨库查询的话,除非这个业务本身就不断算长期维护、升级,否则还是建议从第二步开始。
odirus
2017-07-15 13:34:45 +08:00
如果后期需要考虑多系统、多节点分布式事务的话,不仅要用成熟的 RPC 框架,还需要多参照别人的系统,否则很容易造成不一致。
annielong
2017-07-15 16:33:47 +08:00
在应用里面直接建立两个数据连接就行了,如果使用的是 api 获取数据那就更好做了,直接获取数据后操作,实在看不到难点在哪里,
ericgui
2017-07-15 19:52:46 +08:00
@annielong 现在我们也没什么好办法,应该是一个 web 框架里,配置 2 个 db,这样的话,可以读取第一个 db,写入第二个 db

确实没难点

但我总觉得这样不对,但又说不上来到底哪里不对
ericgui
2017-07-15 19:54:58 +08:00
@odirus 我这系统做好了,A 系统,就是这个闭源软件系统,不超过 30 个人在用
B 系统,我们自己写的 web application,不超过 300 个人用。

所以。。。。。
但更牛逼的高并发的操作,我又不会(当然,也确实用不上)
其实我就是觉得这样直接连接 2 个 db 有问题,但又不知道哪里有问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/375502

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX