懒人改善生活之 - 数据入库实时转换

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

标签

PostgreSQL , ETL , 数据转换 , 实时转换 , 规则 , 触发器


背景

PostgreSQL是一个功能很强大的数据库,仅仅在数据类型、索引接口的支持方面,就远超各种开源和商业数据库。

有些用户从其他数据源迁移到PostgreSQL,或者有其他数据源来的数据,大多数是字符串、数字,到了PostgreSQL可以转换为更精准的描述(数据类型),提升性能或功能。

例如

1、经纬度,在其他数据库中可能存成两个字段,分别表示经度和纬度。

PostgreSQL支持geometry类型,支持点、线、面、栅格、TOP等GIS类型。

2、数据范围,在其他数据库中可能存成两个字段,分别表示下限和上限。

PostgreSQL通过range支持数值、时间、IP地址等数据类型的范围。

3、IP地址,在其他数据库中可能存为字符串。

PostgreSQL支持network类型。

4、JSON,在其他数据库中可能存成字符串。

PostgreSQL支持JSON类型。

5、图像特征值、线段、多边形、圆形、UUID、XML、数组等,在其他数据库中可能存成字符串。

PostgreSQL支持以上类型。

6、全文检索,在其他数据库中可能需要借助搜索引擎支持。

PostgreSQL支持全文检索类型。

7、枚举类型,在其他数据库中可能存成字符串。

PostgreSQL支持枚举类型。

那么如何将数据从字符串平滑、实时的在入库阶段转换为PostgreSQL支持的类型呢?

PostgreSQL支持trigger和rule,使用任意方法,都可以做到数据的平滑转换。

rule 转换 例子

数据来源是2个字段表示的经纬度,要求实时转换为geometry类型。

创建来源表结构

postgres=# create table nt(id int, c1 numeric, c2 numeric);  
CREATE TABLE  

创建目标表结构

postgres=# create table nt_geo (id int, geo geometry);  
CREATE TABLE  

对来源表创建规则或触发器,例如

postgres=# create rule r1 as on insert to nt do instead insert into nt_geo values (NEW.id, ST_MakePoint(NEW.c1,NEW.c2));  
CREATE RULE  

使用来源数据结构,将数据插入来源数据表

postgres=# insert into nt values (1,1,1);  
INSERT 0 1  

数据会自动写入目标表,来源表只是个转换入口,不会落数据

postgres=# select * from nt;  
 id | c1 | c2   
----+----+----  
(0 rows)  
  
postgres=# select * from nt_geo ;  
 id |                    geo                       
----+--------------------------------------------  
  1 | 0101000000000000000000F03F000000000000F03F  
(1 row)  

cool !!!使用这种方法,我们不需要先入库在转换,也不需要在入库前写程序进行转换。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
7月前
|
数据挖掘
88 网站点击流数据分析案例(统计分析-键路径转化率分析)
88 网站点击流数据分析案例(统计分析-键路径转化率分析)
46 0
|
7月前
|
数据挖掘
85 网站点击流数据分析案例(统计分析-受访分析)
85 网站点击流数据分析案例(统计分析-受访分析)
33 0
|
9月前
|
easyexcel Java Maven
百万数据excel导出功能怎么做
百万数据excel导出功能怎么做
275 0
|
7月前
|
数据采集 分布式计算 数据挖掘
80 网站点击流数据分析案例(数据采集功能)
80 网站点击流数据分析案例(数据采集功能)
34 0
|
10月前
|
SQL Java 关系型数据库
从系统报表页面导出20w条数据到本地只用了4秒,我是如何做到的
最近有个学弟找到我,跟我描述了以下场景: 他们公司内部管理系统上有很多报表,报表数据都有分页显示,浏览的时候速度还可以。但是每个报表在导出时间窗口稍微大一点的数据时,就异常缓慢,有时候多人一起导出时还会出现堆溢出。 他知道是因为数据全部加载到jvm内存导致的堆溢出。所以只能对时间窗口做了限制。以避免因导出过数据过大而引起的堆溢出。最终拍脑袋定下个限制为:导出的数据时间窗口不能超过1个月。
|
数据安全/隐私保护
Mindopt上新数据脱敏功能,方便外发数据
V0.24.0版本的MindOpt优化求解器新增了数据脱敏功能,可以对输入模型文件进行数据脱敏。将优化问题中问题名、决策变量、约束条件名称这些和业务场景相关的数据进行脱敏变更,使得优化问题的数据仅保留看不出用途的数值信息,隐藏业务信息。方便外发数据去做技术可行性验证、方案咨询、测试等。
Mindopt上新数据脱敏功能,方便外发数据
|
SQL 存储 Java
传智健康项目中相关知识点介绍(如图片存储,发送短信,定时调度,统计报表...)(四)
传智健康项目中相关知识点介绍(如图片存储,发送短信,定时调度,统计报表...)
传智健康项目中相关知识点介绍(如图片存储,发送短信,定时调度,统计报表...)(四)
|
存储 Java BI
传智健康项目中相关知识点介绍(如图片存储,发送短信,定时调度,统计报表...)(一)
传智健康项目中相关知识点介绍(如图片存储,发送短信,定时调度,统计报表...)
传智健康项目中相关知识点介绍(如图片存储,发送短信,定时调度,统计报表...)(一)
|
XML 存储 开发框架
传智健康项目中相关知识点介绍(如图片存储,发送短信,定时调度,统计报表...)(三)
传智健康项目中相关知识点介绍(如图片存储,发送短信,定时调度,统计报表...)
传智健康项目中相关知识点介绍(如图片存储,发送短信,定时调度,统计报表...)(三)
|
存储 Web App开发 JavaScript
传智健康项目中相关知识点介绍(如图片存储,发送短信,定时调度,统计报表...)(二)
传智健康项目中相关知识点介绍(如图片存储,发送短信,定时调度,统计报表...)
传智健康项目中相关知识点介绍(如图片存储,发送短信,定时调度,统计报表...)(二)