PG+MySQL第6课

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
对象存储 OSS,20GB 3个月
简介: 本篇内容分享了PG+MySQL第6课。

分享人:Digoal 阿里云资深数据库专家

正文:

本篇内容将通过三个部分来介绍PG+MySQL第6课。

一、直接读写MySQL数据

二、冷热分离

三、外部归档表

image.png


一、直接读写MySQL数据


pg的外部表应用,可以访问外部数据源。阿里云的对象存储特点是廉价,由于内部多副本的机制,还可以保证数据的可靠性。我们在内网里使用OSS存储的归档数据,也叫冷数据的话。适合历史数据的归档存储。fdw接口不仅能支持关系数据库,mysql 等对外接口,还支持对象存储的外部存储,用来做外部归档表。

image.png

连接MySQL提供一个主机端口,拿到地址之后,使用user paassword,将pg数据库user连接到mysql server。通过foreign table,把mysql表结构映射到pg外部表。有了这三个元素之后,我们就能够在pg里通过table访问mysql表。

image.png

接下来,保证RDS MySQL和RDS PG 12两个实例,在同样的vpc里,配置MySQ server的白名单。允许pg实例访问vpn内网的MySQ server。插入test_mm和test_innodb的测试数据。

image.png

在pg实例里,创建extension mysql_fdw插件,然后创建mysql server,设置mysql网络地址'和port 'mysql端口。给digoal用户创建mysql server的user mapping,以及'mysqluser和mysqluserpwd'。完成这三步之后,就能创建mysql1的server外部表。

image.png

创建外部表有两种方法。第一,我们在pg里直接用CREATE FOREIGN TABLE 的语法创建,指定server mysql ,在option里指定远端的table text mm表。

外部表创建之后,就能查询到mysql的数据了。

image.png

第二,如果你想把mysql的所有表,在pg里一次性创建好。可以使用import schema的命令。比如把test_innodb和test_mmsk创建到本地的schema下。首先创建本地的schema,然后导入外部表,选择导入的内容,输入命令。就可以一次性导入。

image.png

如何查询导入数据,如上图所示。SELECT `id`, `user_id`, `group_id`, `create_time` FROM `db1`.`test_mm` WHERE ((`id` = 2))就可以完成查询。

image.png

我们要查询一个外部表有没有把条件推送到远端?通过Explain指定web详情,就可以打印remote query。如果查询远程表较慢时,可以检查一下,是不是把所有的数据都起到本地导致的。

image.png

当数据在pg里分析完之后,需要把数据插回MySQL到里,我们可以直接调用insert into的外部表。

image.png

当我们完成远程插入之后, 可以远程更新MySQL.这个时候只需要使用Update on digoal,输入需要更新的表格就可以完成远程更新。

image.png

当你需要删除MySQL记录时,先输入explain verbose delete from where。选择需要删除的表格和相应的ID,然后选择需要删除的内容,就可以完成删除。

注意,在远程执行MySQL时,需要检查explain verbose,如果没有push down,需要返回全表数据到pg。

image.png

当我们需要查询外部表时,完成上述操作后,需要输入如下代码:

db1=> \des

         List of foreign servers

   Name    | Owner  | Foreign-data wrapper

------------+--------+----------------------

mysql_1    | digoal | mysql_fdw

ossserver1 | digoal | oss_fdw

(2 rows)

db1=> \deu

List of user mappings

Server  | User name

---------+-----------

mysql_1 | digoal

(1 row)

 

db1=> \det

   List of foreign tables

Schema |  Table  |   Server  

--------+---------+------------

public | oss_tb1 | ossserver1

public | oss_tb2 | ossserver1

public | test_mm | mysql_1

(3 rows)

然后,就可以完成外部表、server、用户映射的相关查询。

image.png

 


二、冷热分离


OSS fdw通常用在归档数据或者冷热分离的业务场景。比如说我们在pg里存了大量的数据,其中有一部分的数据,访问频次非常低。通过OSS fdw,我们可以使用更少的本地存储,节省成本,提升整体的性价比。

image.png

如何开通OSS fdw呢?首先我们要开通OSS服务,创建一个子账号,然后指定读写OSS对象的权限,它会把id和密码告诉你,如何我们要到OSS控制台,创建一个bucket,即数据存储的归类。与之对应的是pg数据库的外部表的存放位置。然后指定低频访问或标准的存储,确认之后,bucket就创建好了。

image.png

然后,我们在pg里创建create extension oss_fdw插件,然后创建OSS server,指定一个名字,输入OSS的位置,id,key和bucket。是bucket。然后就完成了oss_fdw和server的创建。

image.png


三、外部归档表


创建OSS server之后,就可以创建外部表。首先,指定外部表的结构,然后指定server,指定option里的目录,最后指定格式。如上图所示,创建oss外部表时,分为压缩和不压缩,大家可以根据不同的需求选择相应的命令。

image.png

紧接着,我们创建一张pg的本地表。结构跟OSS表的结构一模一样,然后在这张本地表里写入100万条测试记录。可以看到,写入100万条数据花了九秒的时间。

image.png

当我们查询外部表时,它的查询速度还是比较快的。查询limit1时,只要几十毫秒就返回了。在查询时,注意OSS的表没有索引,所以需要把表格下载到本地,然后通过本地过滤,再进行查询。

image.png

在查询过程中,我们可以发现不带压缩的表,它的查询速度更慢。因为OSS和pg实例间的传输带宽有限,如果不做压缩,查询效率会更低。同样的200万条记录,压缩后只花了14秒查询,不压缩花了将近27秒查询。所以建议大家在查询过程中使用压缩,提升工作效率。

image.png

除此之外,归档数据和外部数据是不一样的。外部表可以做update和delete。但归档数据只能insert和查询。它不能做update和delete。如果我们直接对OSS的外部表做update和delete操作,系统就会报错。

image.png

每一个OSS的外部只跟OSS建立一个连接,OSS带宽限制跟连接直接挂钩。如果我们同时跟OSS建立多个会话,访问一张外部表,整体的带宽就会增加,从而提升处理的吞吐能力。

image.png

上图链接,是OSS外部表快速入门的帮助文档,有需要的同学可以登陆查看。其中,大家需要注意文件的位置,有三个参数可以指定,且这三个参数互斥。如果有写入要求,必须选择虚拟目录或者prefix格式。如果你对OSS表有写入要求,就不能选择parse_errors参数。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
安全 关系型数据库 数据库
上新|阿里云RDS PostgreSQL支持PG 16版本,AliPG提供丰富自研能力
AliPG在社区版16.0的基础上,在安全、成本、可运维性等多个方面做了提升,丰富的内核/插件特性支持,满足业务场景的需求
|
存储 SQL Oracle
PG+MySQL第14课
数据库使用者了解数据库的高级功能后,才能在业务场景里面使用,来提升整体的生产效率。
PG+MySQL第14课
|
关系型数据库 MySQL
为什么全网都在劝你在学PG,而不是MySQL?
为什么全网都在劝你在学PG,而不是MySQL?
325 0
为什么全网都在劝你在学PG,而不是MySQL?
|
SQL 编解码 并行计算
PG+MySQL第9课-实时精准营销
通常业务场景会涉及基于标签条件圈选目标客户、基于用户特征值扩选相似人群、群体用户画像分析这些技术,本文将围绕这三个场景去介绍在实施精准营销里面的PG数据库的使用
PG+MySQL第9课-实时精准营销
|
SQL 数据采集 机器学习/深度学习
PG+MySQL第13课
数据库使用者了解数据库的高级功能后,才能在业务场景里面使用,来提升整体的生产效率。
PG+MySQL第13课
|
存储 SQL 自然语言处理
PG+MySQL第12课
数据库使用者了解数据库的高级功能后,才能在业务场景里面使用,来提升整体的生产效率
PG+MySQL第12课
|
存储 机器学习/深度学习 算法
PG+MySQL第11课-多维向量搜索
多维向量搜索不仅可以用在特征值的相似圈选这类场景,还可以用在图像识别场景。而不同的向量支持不同的距离算法,如cube、imgsmlr和pase.
PG+MySQL第11课-多维向量搜索
|
存储 SQL 搜索推荐
PG+MySQL第10课-多维组合搜索
多维组合查询也是pg非常擅长的产品,它的解决方法或者优化方法非常的多,并且也具备了跟搜索引擎一样的倒排索引技术,可以便捷有效地解决任意字段组合查询的业务场景诉求
PG+MySQL第10课-多维组合搜索
|
存储 SQL 编解码
PG+MySQL第8课
今天给大家分享的主题是时空空间,时空数据库概念以及实战。主要从这3个方面:空间/时空数据库的概念;应用场景;四个模型的使用案例,主要是一些概念性的东西以及它案例的操作性的东西。
PG+MySQL第8课
|
SQL 存储 并行计算
G+MySQL第7课-PG的并行计算跟JIT
PG的并行计算跟JIT,分别应用在分析型的业务场景,比如复杂的TB级别的实时分析场景。本篇内容将从2个部分为读者介绍PG+MySQL联合解决方案,希望可以让大家对PG+MySQL有更深入的了解,并可以将这些特性应用到项目中,达到降本提效的目的。
G+MySQL第7课-PG的并行计算跟JIT