如何操作跨库Join

如何操作跨库Join,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

摘要: 企业选择对其在线业务数据库进行拆分,或选择不同数据库类型以满足其业务需求。业务数据被“散落”在各个地方,如何方便地对这些数据进行汇总关联查询,已经成为困扰用户的一大难题

背景

随着业务复杂程度的提高、数据规模的增长,越来越多的公司选择对其在线业务数据库进行垂直或水平拆分,甚至选择不同的数据库类型以满足其业务需求。原本在同一数据库实例里就能实现的SQL查询,现在需要跨多个数据库实例才能完成。业务的数据被“散落”在各个地方,如何方便地对这些数据进行汇总关联查询,已经成为困扰用户的一大难题。

针对这类问题,传统的解决方案需要用户提前将所有实例的数据提前汇集到同一处,然后再做离线查询分析。为此,用户需要维护数据迁移链路,购买机器资源存储汇集起来的数据,付出大量的资源和运维成本。不仅如此,数据迁移也意味着数据延迟,刚刚产生的在线业务数据,需要“等一会”甚至“等一天”才能去做分析,无法满足实时性需求。

为了解决跨数据库实例及时查询的难题,阿里云DMS(数据管理)推出了跨实例查询服务。

什么是跨实例查询服务

跨实例查询服务为不同环境下的在线异构数据源,提供及时的关联查询服务。不论数据库是MySQL、SQLServer、PostgreSQL还是Redis,不论数据库实例部署在哪个阿里云region,无需数据汇集,仅通过一条SQL就能实现这些数据库实例之间的关联查询。

不仅如此,数据库实例也可以部署在不同的资源环境中,除了RDS之外,我们也支持ECS上的自建数据库、具有公网ip的自建数据库、用户本地IDC自建数据库、甚至是部署在其他云厂商的数据库。

功能特性

在线数据及时查询

目前大多数数据分析的解决方案需要将 OLTP 数据库的数据导出至离线数据系统再进行分析,但这种方案很难满足实时性的要求,同时在数据导出至离线系统时也存在数据丢失的风险。

DMS的跨实例查询服务,无需用户迁移任务,直接编写一条SQL,就能实现多个在线数据库的直接关联分析。由于无需数据同步,降低了业务架构的复杂性,同时也大大节省用户持有离线计算资源的预算和运维成本。

DBLink

熟悉Oracle的人应该知道,我们可以在当前登录的Oracle上,建立一个DBLink指向另一个远程的Oracle数据库表。在跨实例查询服务中,我们重新定义了DBLink的概念,它是一个指向用户的任意数据库实例的虚拟连接,是数据库实例的别名。例如,对于MySQL来说,DBLink和ip/port一一对应。借助DBLink,即可实现对任意数据源的SQL访问。
cdn.com/5195fb64ba5d07fc26656b4276350f91e59bee3b.png">

支持多种关系型数据库

目前已支持MySQL、SQLServer、PostgreSQL等多种关系型数据库。

支持SQL方式访问NoSQL

除了关系型数据库之外,跨实例查询还支持以SQL方式访问Redis等NoSQL数据库。由于支持了SQL语法,也可以实现RDBMS和NoSQL之间关联查询。是的,你没看错,一条SQL就能实现MySQL和Redis之间的关联查询。

支持跨地域以及混合云查询

企业发展到一定阶段,用户量、业务量不断攀升,原来的单机房容量已经不能满足业务发展的需求,再结合容灾、高可用等因素,通常会选择跨region部署,也叫单元化部署。同时,不少企业也需要将业务拓展到海外,通过本地就近部署,为国外用户提供更好的体验。类似这种水平拆分带来的问题就是,如何对全局的业务数据进行统一的汇总关联查询。

借助DMS跨实例查询服务,无论您的数据库实例部署在阿里云的哪个region,无需跨region的数据迁移,即可实现所有region数据的统一查询。

除了阿里云RDS,我们也支持用户部署在阿里云ECS上的各种数据库。不仅如此,如果您的数据库部署在本地IDC机房,甚至其他云厂商,都可以通过跨实例查询服务,实现这些混合云场景的跨实例关联查询。

跨实例数据导入导出

insert into b select * from a;
众所周知,这条SQL语句可以将表a的数据导出到表b中,但如果a表和b表不在同一个数据库实例上,那这条sql就无能为力了。

跨实例查询服务的出现,打破了实例与实例之间数据导入导出的边界。它可以将数据从一个MySQL实例的表导出到另外一个MySQL实例的表中;也可以将SQLServer表和PostgreSQL表关联查询的结果,导出到MySQL实例的表中,就是这么灵活。
如何操作跨库Join  join 第1张

兼容标准SQL

通过标准的SQL语句,即可实现跨实例查询。同时跨实例查询服务高度兼容MySQL,支持MySQL协议,以及各种常用函数和语法。您可通过JDBC/ODBC驱动连接到跨实例查询服务;也可以使用各种MySQL GUI工具来管理各种数据源;当然,您也可以在DMS跨实例查询控制台上直接使用。

Serverless架构

跨实例查询是无服务器化的在线数据库关联查询服务。用户无需预购计算资源、无需维护资源、没有运维和升级成本,随时随地使用。

高性能低延迟

跨实例查询服务底层基于强大的MPP计算引擎,持续不断地对SQL查询进行优化,包括pushdown、join算法、执行计划缓存、Meta缓存、本地调度、连接池等技术。目前单表查询以及跨实例的多表关联查询,都能在毫秒级完成。

技术架构

如何操作跨库Join  join 第2张

我们发现用户遇到的其实就是典型的跨实例查询问题。目前,阿里云DMS跨实例查询服务已经支持跨多个数据库实例的SQL查询的能力,用户利用一条SQL即可解决上述难题。不仅能够满足“跨库Join”这一核心诉求,还能极大地简化用户的技术方案。
如何操作跨库Join  join 第3张

异构数据库的关联查询

某公司考虑成本和未来可扩展性,正在将业务数据从SQLServer迁移到MySQL上。在这期间,必然存在某些业务子系统仍然在SQLServer上,另外一些业务子系统已经全部迁移到MySQL上,这时两个子系统之间的联合查询,就可以借助阿里云的跨实例查询服务实现。不仅如此,在迁移过程中,还可以通过跨实例查询服务,来校验SQLServer和MySQL上的数据是否一致。

混合云场景的关联查询

某游戏公司,由于各种原因,同时保有阿里云、腾讯、UCloud、AWS等环境的数据库实例,同时在自己自建的IDC也部署了部分数据库。业务的数据如此分散,单是统计一下当前游戏在线用户数,都要分别到各个环境去查询一遍再做汇总。借助阿里云跨实例查询服务,一条SQL就能实现跨云厂商和IDC之间的关联查询。

关于如何操作跨库Join问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注蜗牛博客行业资讯频道了解更多相关知识。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论电报频道链接