报表服务,需要联接查询多个数据源,进行列表展示,这个有比较好的实现方案么? 多数据源指 a 库再 A 服务器,b 库再 B 服务器……
目前想到的方案是,通过代码来获取数据,在 A 服务器 a 库查询出关联字段后,在去 B 服务器 b 库进行查询,但是代码会比较复杂,请问大家有什么好的实现方案么?
注:冗余表这个方案暂时不考虑,因为连接查询的表与条件是用户手动配置的,所以不考虑这个方案
1
xmumiffy 2023-01-12 00:42:42 +08:00 via Android
你数据库支持就能跨实例查询 比如 dblink 或者 FEDERATED 引擎
|
2
strawberryBug 2023-01-12 00:46:31 +08:00 via Android
trino
|
3
haimianbihdata 2023-01-12 01:02:59 +08:00 via Android
Doris 好像可以的
|
4
shakoon 2023-01-12 08:33:48 +08:00
提问要讲清楚关键信息啊,a 库 b 库用的什么数据库这种关键信息不说?
oracle 的话可以在一个库上面建其他库的 dblink ,然后所有操作和本地库一样。 mysql 的话可以用 federated 引擎在本地建立一个空表链接到其他实例下的数据去,使用时和本地表一样的用,但是不支持事务 |
5
opengps 2023-01-12 09:15:17 +08:00
先抽数集中到一个库里啊
|
6
oneisall8955 2023-01-12 09:42:21 +08:00 via Android
你是不是需要数仓?
|
7
8355 2023-01-12 09:49:32 +08:00
你是不是需要中台
|
8
lower 2023-01-12 10:12:21 +08:00
pg 有各种 fdw 插件,是不是可以满足你的要求?
|
10
EXChen 2023-01-12 10:18:01 +08:00
presto
|
11
loading 2023-01-12 11:48:01 +08:00 via Android
oracle bridge ?
|
12
ym1ng 2023-01-12 11:54:24 +08:00
spark sql ?
|
13
nekoneko 2023-01-12 15:17:56 +08:00
trino 或 presto, 推荐 trino
|
14
lichao 2023-01-12 15:21:50 +08:00
同数据库类型的数据库有的(只试过 MS SQL SERVER )是可以相互 join 查询的,不同数据库类型的话应该行不通,只能分别查询然后自己用代码组装数据
|
15
11ssss 2023-01-12 15:22:24 +08:00
不选大数据技术栈可以看看这个
https://github.com/Qihoo360/Quicksql |
16
wangxiaoaer 2023-01-12 15:24:46 +08:00
这是典型的数据仓库场景,不要试图在代码层面解决。搞个专门用来展示、分析的库,这个库也就是所谓的数据仓库,定期从其他不同源同步,至于如何同步就可以通过一些脚本、工具定时执行了。
|
17
liprais 2023-01-12 15:25:09 +08:00
把数据拉回来再搞
不然别人嫌弃死你 |
18
siri521 OP @wangxiaoaer 信息的实时性要求比价高,如果定期从其他不同源的地方同步的话,实施性比较差吧
|
19
wangxiaoaer 2023-01-12 15:59:06 +08:00
@siri521 这就是同步策略了,假如是 mysql 的基于 binlog 的推送同步,实时性没啥问题吧。 除非是定时轮询同步才存在实时性问题。
|
20
zzzain46 2023-01-12 16:59:30 +08:00 via iPhone
数据仓库
|