V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
siri521
V2EX  ›  问与答

多数据源如何 sql 连接查询

  •  
  •   siri521 · 2023-01-12 00:18:31 +08:00 · 1855 次点击
    这是一个创建于 675 天前的主题,其中的信息可能已经有所发展或是发生改变。

    报表服务,需要联接查询多个数据源,进行列表展示,这个有比较好的实现方案么? 多数据源指 a 库再 A 服务器,b 库再 B 服务器……

    目前想到的方案是,通过代码来获取数据,在 A 服务器 a 库查询出关联字段后,在去 B 服务器 b 库进行查询,但是代码会比较复杂,请问大家有什么好的实现方案么?

    注:冗余表这个方案暂时不考虑,因为连接查询的表与条件是用户手动配置的,所以不考虑这个方案

    第 1 条附言  ·  2023-01-12 09:17:37 +08:00
    补充下, 数据库可能是各种类型,没有限制,例如,mysql 中的表与 oracle 中的表连查
    第 2 条附言  ·  2023-01-12 09:32:47 +08:00
    数据库种类有很多种,mysql 、oracle 、sqlserver 等,只做 DQL 操作
    第 3 条附言  ·  2023-01-12 11:43:17 +08:00
    谢谢大家,目前跟 leader 确认,写业务逻辑来实现这个功能
    20 条回复    2023-01-12 16:59:30 +08:00
    xmumiffy
        1
    xmumiffy  
       2023-01-12 00:42:42 +08:00 via Android
    你数据库支持就能跨实例查询 比如 dblink 或者 FEDERATED 引擎
    strawberryBug
        2
    strawberryBug  
       2023-01-12 00:46:31 +08:00 via Android
    trino
    haimianbihdata
        3
    haimianbihdata  
       2023-01-12 01:02:59 +08:00 via Android
    Doris 好像可以的
    shakoon
        4
    shakoon  
       2023-01-12 08:33:48 +08:00
    提问要讲清楚关键信息啊,a 库 b 库用的什么数据库这种关键信息不说?
    oracle 的话可以在一个库上面建其他库的 dblink ,然后所有操作和本地库一样。
    mysql 的话可以用 federated 引擎在本地建立一个空表链接到其他实例下的数据去,使用时和本地表一样的用,但是不支持事务
    opengps
        5
    opengps  
       2023-01-12 09:15:17 +08:00
    先抽数集中到一个库里啊
    oneisall8955
        6
    oneisall8955  
       2023-01-12 09:42:21 +08:00 via Android
    你是不是需要数仓?
    8355
        7
    8355  
       2023-01-12 09:49:32 +08:00
    你是不是需要中台
    lower
        8
    lower  
       2023-01-12 10:12:21 +08:00
    pg 有各种 fdw 插件,是不是可以满足你的要求?
    lower
        9
    lower  
       2023-01-12 10:17:18 +08:00
    @lower 不过看了一下好像都是 GitHub 上第三方维护的,不知道稳定性如何
    EXChen
        10
    EXChen  
       2023-01-12 10:18:01 +08:00
    presto
    loading
        11
    loading  
       2023-01-12 11:48:01 +08:00 via Android
    oracle bridge ?
    ym1ng
        12
    ym1ng  
       2023-01-12 11:54:24 +08:00
    spark sql ?
    nekoneko
        13
    nekoneko  
       2023-01-12 15:17:56 +08:00
    trino 或 presto, 推荐 trino
    lichao
        14
    lichao  
       2023-01-12 15:21:50 +08:00
    同数据库类型的数据库有的(只试过 MS SQL SERVER )是可以相互 join 查询的,不同数据库类型的话应该行不通,只能分别查询然后自己用代码组装数据
    11ssss
        15
    11ssss  
       2023-01-12 15:22:24 +08:00
    不选大数据技术栈可以看看这个
    https://github.com/Qihoo360/Quicksql
    wangxiaoaer
        16
    wangxiaoaer  
       2023-01-12 15:24:46 +08:00
    这是典型的数据仓库场景,不要试图在代码层面解决。搞个专门用来展示、分析的库,这个库也就是所谓的数据仓库,定期从其他不同源同步,至于如何同步就可以通过一些脚本、工具定时执行了。
    liprais
        17
    liprais  
       2023-01-12 15:25:09 +08:00
    把数据拉回来再搞
    不然别人嫌弃死你
    siri521
        18
    siri521  
    OP
       2023-01-12 15:53:40 +08:00
    @wangxiaoaer 信息的实时性要求比价高,如果定期从其他不同源的地方同步的话,实施性比较差吧
    wangxiaoaer
        19
    wangxiaoaer  
       2023-01-12 15:59:06 +08:00
    @siri521 这就是同步策略了,假如是 mysql 的基于 binlog 的推送同步,实时性没啥问题吧。 除非是定时轮询同步才存在实时性问题。
    zzzain46
        20
    zzzain46  
       2023-01-12 16:59:30 +08:00 via iPhone
    数据仓库
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2730 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 11:02 · PVG 19:02 · LAX 03:02 · JFK 06:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.