网站首页 > 技术文章 正文
背景
随着业务复杂程度的提高、数据规模的增长,越来越多的公司选择对其在线业务数据库进行垂直或水平拆分,甚至选择不同的数据库类型以满足其业务需求。与此同时,业务的数据被“散落”在各个数据库实例中。如何方便地对这些数据进行汇总查询,已经成为困扰用户的一大问题。
例如,一家电商创业公司,最初的会员、商品、订单数据全部都存放在一个SQLServer实例中。但随着会员数量和交易规模的不断增长,单个SQLServer实例已经支撑不了巨大的业务压力,同时基于成本考虑,将商品和订单表从原来的SQLServer中拆分出来,分别存放到两个不同的MySQL实例中。原先用户连接到一个实例上即可执行一条SQL来关联汇总查询这三张表的数据,但现在由于数据库拆分,无法简易实现这一操作。
于是我们可以创建DBLINK来关联查询
什么是DBLink
熟悉Oracle的人应该知道,我们可以在当前登录的Oracle上,建立一个DBLink指向另一个远程的Oracle数据库表。
类似的,跨数据库查询中的DBLink,是一个指向用户的任意数据库实例的虚拟连接,是数据库实例的别名:
- DBLink和数据库实例一一对应,对于MySQL来说,对应的就是MySQL数据库所在的ip:port
- DBLink可以指向MySQL、SQLServer、PostgreSQL、Oracle、Redis等;
- 用户需在SQL语句的库表名前加上DBLink前缀(DBLink.库.表),即可实现跨数据库查询。
- DBLink的名字由英文字母、数字和下划线组成
示例:
create public database link DBLINK1
connect to "登录账号" identified by "密码"
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.100.100(数据库地址))(PORT = 1521端口)))
(CONNECT_DATA =(SERVICE_NAME = 服务名)))';
-- 查询其他库
select * from MACHINE@DBLINK1;
DBLink/database/table对应关系
数据库系统通常把数据组织成层次结构,如:database、schema、table等,以方便命名空间隔离和权限管理。跨库查询也是类似,它以dblink、database和table这三层结构来组织。
在跨库查询中,用户访问一个表需要指定全名称,即:dblink.database.table。然而,不同数据库类型具有不同的层次组织,为了实现统一查询,需要将这些不同层次结构统一起来,形成DBLink、database和table三层结构。下表描述了跨库查询服务与MySQL、PostgreSQL、SQLServer和Redis之间层次结构的映射关系:
跨库查询 | MySQL | PostgreSQL | SQLServer |
DBLink | ip+port | ip+port+database | ip+port |
database | database | schema | database |
table | table | table | table |
猜你喜欢
- 2024-10-30 用xstart远程连接linux图形用户界面
- 2024-10-30 整理关于PostgreSQL如何配置系统可以进行远程连接
- 2024-10-30 只要网通就可以实现异构数据库交互(oracle,mysql 等数据交互)
- 2024-10-30 详细Android连接远程的MySQL数据库实例
- 2024-10-30 远程桌面管理器:Remote Desktop Manager,掌控远程连接
- 2024-10-30 Oracle 远程或本地运行RMAN oracle远程访问
- 2024-10-30 oracledb_exporter监控Oracle,一个入侵性极低的监控方案
- 2024-10-30 详解远程连接报错处理--发生身份验证错误。要求的函数不受支持
你 发表评论:
欢迎- 636℃几个Oracle空值处理函数 oracle处理null值的函数
- 629℃Oracle分析函数之Lag和Lead()使用
- 617℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 613℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 611℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 603℃【数据统计分析】详解Oracle分组函数之CUBE
- 590℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 576℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)