前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MYSQL的身体,POSTGRESQL 的头脑

MYSQL的身体,POSTGRESQL 的头脑

作者头像
AustinDatabases
发布2019-06-21 16:48:03
7570
发布2019-06-21 16:48:03
举报
文章被收录于专栏:AustinDatabasesAustinDatabases

通常如果我们在使用多种数据库的时候,最头痛的是数据库不唯一,SQL SERVER 访问 ORACLE ,ORACLE 访问 MYSQL ,MYSQL 访问 SQL SERVER,这的确不是一件美好的事情, 而强大的PG的 FDW 可以解决这样的问题。通过 FDW ,foreign-data wrapper 来解决各种数据库的数据融合的问题。基本上市面上有的数据库,POSTGRESQL 都可以进行FDW的连接,例如创建数据表,读取,插入,更改数据表等等都是可以的。

而MYSQL 多物理数据库之间表的查询其实是比较麻烦的,我们可以通过POSTGRESQL 来解决这个问题。

安装的步骤就省略了,网上大量的文章,并且安装也比较简单,并不需要很高深的技术。

我们直接就来到 POSTGRESQL 如何用FDW的方式来操纵 MYSQL 数据库,并且能将查询比较好的完成。

1 创建与MYSQL 之间的数据连接

CREATE SERVER employee FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host '192.168.198.88',port '3306');

employee 是FDW的名字标识, mysql_fdw 是采用的POSTGRESQL 的扩展对应的数据库是那个,这里是MYSQL ,options后面是数据库的连接的IP 和对应的 端口。

CREATE USER MAPPING FOR PUBLIC SERVER employee OPTIONS (username 'admin',password passwd');

创建与fdw对应的连接数据库的账户和密码,此用户名和密码应该已经在MYSQL 上建立。

我们在POSTGRESQL 上创建两个已经在 MYSQL employees 数据库中存在的表 ( employee 数据库是 MYSQL 的公用测试库)

在创建表时需要注意的是,有些字段的类型 MYSQL 和 POSTGRESQL 不是一一对应的,这里并未要求严格,例如如果MYSQL是 VARCHAR类型的

在POSTGRESQL 可以建立为 TEXT, 时间类型 POSTGRESQL 是timestamp 对应 MYSQL 的 datatime类型,具体的类型对应还需要仔细查询两种数据库的不同点,好在POSTGRESQL 兼容性高。

在POSTGRESQL 中创建对应的表结构

CREATE FOREIGN TABLE titles (

emp_no int ,

title varchar(50) ,

from_date timestamp,

to_date timestamp

) SERVER employee OPTIONS (dbname 'employees', table_name 'titles');

CREATE FOREIGN TABLE employee (

emp_no int ,

birth_date timestamp ,

first_name varchar(14) ,

last_name varchar(16) ,

gender varchar(2),

hire_date timestamp ) SERVER employee OPTIONS (dbname 'employees', table_name 'employees');

在创建完这两个数据库后

可以直接在postgresql 的数据库中看到两张相关的表

然后我们就可以直接进行查询,而语法也可以比较复杂。

通过上面的图片,所有的数据均在MYSQL 端,而查询语句的灌入都在POSTGRESQL端。

虽然查询的速度和在本地的MYSQL 查询的速度不能比较,但如果我们就需要多种数据库的联合查询,则POSTGRESQL 为多种数据库的数据互联提供的便利。并且由于支持的数据库种类较多,类似部分大数据库的平台也可以直接接入,这为快速部署多种数据库的查询平台提供了一种方案。

同时我们也可以从图中发现,POSTGRESQL 在上层还是走了一些特殊的语句查询的优化方式,并且在窗口函数,以及一些特殊的语句功能方面POSTGRESQL 相比较MYSQL 是有优势的。所以有时候在一些特殊的需求中我们或许可能找到多种数据库互补的方式来让工作变得更轻松。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档