您好,登录后才能下订单哦!
今天就跟大家聊聊有关多个异构数据库如何关联查询,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
DBlink 只适合同种数据库关联,难以关联异构库。其他方式不是改变部署架构,就是增加开发工作量,实施起来困难很多。
开发难度小的方式貌似是 ETL,把异构库变成同构库,就可以用熟悉的方式写关联 SQL。但这种方式需要改变原来的部署架构,硬加一个 ETL 层和一个数据集市层,一般还得加个管理员去维护定时调度,或者额外写代码判断“数据是否 ETL 完毕”。更大的问题是,这种方式需要把实时计算变成延迟计算,甲方爸爸知道了恐怕会拍桌子。
彻底的解决方案貌似是微服务,把高耦合的 ODBC/JDBC 接口变成低耦合的 http 接口,这样就可以用统一的 json 或 xml 去传输数据。但这种方式要针对每张表开发数据服务接口,要针对每种算法开发客户端接口,还要用陌生的框架和类库,要解决数据库外的权限安全……工作量顶天了。而且,具体的运算还得硬写。
较现实的方法还可以用高级语言比如 JAVA,先用 SQL 把异构数据取过来,再用 arraylist 转成 2 个类,接下来就可以进行 list 之间的 join 了。但这件事等于拿 JAVA 手工替代 SQL,简单的合并还凑合,关联查询就难写了,况且还有子查询、关联后分组汇总等实用算法。总之,JAVA 缺乏结构化类库,替代 SQL 的成本非常高。
如果使用集算器来实现异构库关联,则可以保持原部署架构,开发工作量也不大。首先,SPL 可用统一的数据结构访问任意的数据库表,这就解决异构的问题。其次,SPL 具有丰富的结构化类库,很容易实现关联查询以及后续的实用算法,经常比 SQL 还简单。最后,集算器提供了 JDBC\ODBC 接口,程序员只需引入驱动程序,就可以在原来的代码上实现异构库关联。
比如 java 通过集算器的 JDBC 驱动,访问 Oracle 的 orders 表,并关联 MySQL 的 customer 表,最后对关联结果分组汇总:
con=DriverManager.getConnection(“jdbc:esproc:local://”);
ResultSet rs = con.executeQuery(“orcl.query(/“select * from orders/”).join(cust,my.query(/“select * from customer/”):custid,city).groups(city;sum(amount))”);
看完上述内容,你们对多个异构数据库如何关联查询有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。