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

本文涉及的产品
云数据库 PolarDB MySQL 版,列存表分析加速 4核8GB
PolarDB Agent Express,2核4GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介:

标签

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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
JavaScript IDE 前端开发
【HarmonyOS 4.0 应用开发实战】TypeScript 快速入门之环境配置
【HarmonyOS 4.0 应用开发实战】TypeScript 快速入门之环境配置
623 0
|
8月前
|
存储 监控 安全
RFID技术让高校电动车进出更简便
RFID电动车进出管理系统利用射频识别技术,为每辆电动车配备唯一电子标签,实现自动识别与权限管控。系统支持无感通行、精准识别、多模式联动及数据记录分析,提升高校电动车管理效率与安全性,有效解决乱停乱放、非法进入等问题,保障校园环境有序。
|
消息中间件 人工智能 运维
暸望塔丨一站式服务和生态,助力中企无忧出海
凭借十载服务出海客户的深厚积累,阿里云形成了面向出海不同阶段的专业、系统的技术产品服务和生态。
暸望塔丨一站式服务和生态,助力中企无忧出海
|
8月前
|
算法 关系型数据库 文件存储
ProxylessNAS:直接在目标任务和硬件上进行神经架构搜索——论文解读
ProxylessNAS是一种直接在目标任务和硬件上进行神经架构搜索的方法,有效降低了传统NAS的计算成本。通过路径二值化和两路径采样策略,减少内存占用并提升搜索效率。相比代理任务方法,ProxylessNAS在ImageNet等大规模任务中展现出更优性能,兼顾准确率与延迟,支持针对不同硬件(如GPU、CPU、移动端)定制高效网络架构。
428 126
ProxylessNAS:直接在目标任务和硬件上进行神经架构搜索——论文解读
|
8月前
|
存储 负载均衡 调度
从 FlashAttention 出发:八个值得关注的技术迭代方向
本内容探讨了 FlashAttention 的八大优化方向,涵盖分层归一化、动态分块、上下界筛除、等价 softmax 实现、KV-cache 压缩、异构精度布局、2.5D 并行及调度优化,旨在提升长序列处理效率与多卡协同能力。
348 7
|
8月前
|
机器学习/深度学习 边缘计算 自动驾驶
【状态估计】非线性受控动力系统的线性预测器——Koopman模型预测MPC(Matlab代码实现)
【状态估计】非线性受控动力系统的线性预测器——Koopman模型预测MPC(Matlab代码实现)
527 1
|
9月前
|
Linux Docker 容器
Gentoo Linux相关资源与使用注意事项
本文介绍了基于Gentoo Linux搭建高性能Docker容器云的过程。Gentoo以高度自定义和portage包管理著称,虽安装略复杂,但提供精细化的系统控制。通过官方文档与社区资源,可逐步完成系统构建。
|
缓存 搜索推荐 数据库
使用SiteGround搭建WordPress网站的方法
以上就是在SiteGround上搭建WordPress网站的步骤。这个过程可能需要一些时间和耐心,但只要你按照步骤操作,你就可以成功搭建自己的WordPress网站。
440 23
|
缓存 PHP 数据库
WordPress网站服务器性能优化方法,站长必备。
最后,当你将这些方法组合起来并实施时,您将发现你的WordPress网站性能有了显著的提高。别忘了,这不是一次性的任务,要定期执行,保持你的车(网站)始终在轨道上飞驰。
375 21