V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ericgui
V2EX  ›  程序员

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

  •  
  •   ericgui · 2017-07-15 11:01:27 +08:00 · 3932 次点击
    这是一个创建于 2448 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在有两个系统,而且分别在两台服务器里。

    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

    有高人指点一二吗?谢谢
    10 条回复    2017-07-15 19:54:58 +08:00
    imnpc
        1
    imnpc  
       2017-07-15 11:15:43 +08:00
    一般来说是开放双方 api 用来读取写入

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

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


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

    确实没难点

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

    所以。。。。。
    但更牛逼的高并发的操作,我又不会(当然,也确实用不上)
    其实我就是觉得这样直接连接 2 个 db 有问题,但又不知道哪里有问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3065 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:50 · PVG 20:50 · LAX 05:50 · JFK 08:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.