铁庵:NoSQL、RDS和大数据异构融合实战,详解PostgreSQL FDW功能原理

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
对象存储 OSS,20GB 3个月
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 6月23日云栖社区《NoSQL、RDS和大数据异构融合实战》的直播顺利结束,来自阿里云的ApsaraDB数据库产品专家萧少聪(铁庵)与大家分享了通过PostgreSQL实现NoSQL、RDS和大数据异构融合实战。

6月23日云栖社区《NoSQL、RDS和大数据异构融合实战》的直播顺利结束,来自阿里云的ApsaraDB数据库产品专家萧少聪(铁庵)与大家分享了通过PostgreSQL实NoSQL、RDS和大数据异构融合实战。直播中,他重点介绍FDW原理,并结合金融报文处理、物联网数据整合、企业并购重组场景下的具体案例,详细讲解了PostgreSQL是如何通过FDW外部数据通道功能实现NoSQL、大数据异构融合以及开发效率的提升的。本次活动整理文章、视频、幻灯片整理如下。



直播视频:

22f50bce928e841c7275d1c53d9778a686b9ba3d

(点击图片查看视频)

幻灯片下载地址:https://oss-cn-hangzhou.aliyuncs.com/yqfiles/e95acb3cc257c377ad8df5e944760638.pdf




Why PostgreSQL ?

d5b269b53c16a0c2961dd82c2725c5d88d3e55f1

图一  PostgreSQL的发展历程

PostgreSQL的前身为ingres Database,从1973年伯克利分校的Ingres项目至今,PostgreSQL现已经过了几十年的发展。相比较于广泛使用MySQL开源数据库,我们之所以对PostgreSQL数据库情有独钟,是因为其独特的魅力所在:

  •    开放性更强:PostgreSQL基于BSD/MIT协议,对所有人免费,可以任意处置,包括使用、复制、修改、合并、发表、分发、再授权或者销售。唯一的限制是,软件中必须包含上述版权和许可提示;相比于其它如 GPL / Apache 开源协议更开放、更适合于长远的企业战略发展;
  •    稳定性:PostgreSQL至今已有超过40年历史,专注于OLTP事务处理;其多程衍生产品已经用于用于传统金融、通讯、能源企业认可,如:平安集团、MasterCard、浙江移动、日本NTT、韩国KT、国家电网;
  •    企业功能:在PostgreSQL 9.0中增加了大量的企业功能:
    •    数据流式复制(9.6支持多节点全同步);
    •    基于ACID的JSON及KV数据类型;
    •    PostGIS地理信息模型;
    •    FDW对接第三方数据源,或实现Sharding;
    •    可扩展支持R语言、网络、生物、化学等函数;
    •    唯一明确说明对SQL 2011的兼容程度>90%;


目前,PostgreSQL正面临着巨大的机遇:首先国内PostgreSQL使用量仅是国外的三十分之一,潜力巨大;从2011年开始,PostgreSQL在国内的查询指数呈现逐年倍增;同时众多国内外商业数据库都是基于PostgreSQL,生态丰富,使其大有成为数据库界Linux之势。


Why FDW ?


FDW全称Foreign-Data Wrapper,简单来说就是PostgreSQL中的外部表功能。得益于PostgreSQL源代码的开放性,当前已经支持包括:MongoDB、Redis、MySQL、SQL Server、Oracle、Hadoop、Hive、Elastic Search等近30种不同的外部数据源(可点击此处查看所支持的全部数据源)。也就是说可以将这些数据库当做是PostgreSQL内的表格直接进行如insert、delete等操作处理。


首先来看一下传统企业现有的数据操作模型。

a4b6ed54a7281c985e956939c17081497e99890b

图二 传统企业的数据操作模型


从上图可以看出,传统企业的数据操作模型中的数据库主要使用Oracle、MSSQL或者MySQL等关系型数据库;前端包括业务系统、OA系统、财务系统等大大小小不同的系统,各系统与之对应的数据库也不尽相同。


当传统企业面向互联网/物联网进行转型时,必须要构建新的系统与数据库。对于大部分企业而言,通常会选择MongoDB作为其数据库,这是因为互联网应用中大量的数据是以JSON这类非结构化模式存储。但MongoDB实际上不是一个关系型数据库,因此不具有表格(Table)之类的概念。当企业开发的新应用需要与传统的应用进行通信时,目前采用的方法是:在原有的业务、OA等系统的原有程序上加入新代码,而且新代码操作并非传统的SQL语句,而是使用MongoDB专用的语法进行操作,这使得整体的开发变得更为复杂。

1cc708b8b1b5431a19c7bb81510834d91592cbf8

图三 传统企业整个大数据处理模型


对于传统企业整合大数据处理而言,需要将数据放入到Hadoop/Spark/HBase中进行整体分析。在这个过程中,需要将MongoDB以及传统的Oracle/MSSQL/MySQL中的数据通过定期ETL清洗等方式定期传回到大数据分析平台中,并且利用Hadoop编写MapReduce一系列的组件将Hadoop中的分析结果转存系统的数据库中,以供业务系统使用。


因此,在传统企业向互联网/物联网转型的过程中,会创造大量的软件,而这些软件可能是由不同的代码语言编写而成;同时还需要在旧的系统中扩展新的代码。总结来看,传统的企业(ISV)面临的问题可以概括成下面三点:

  •  时间:不抓紧时间转型将可能错失良机;
  •  复杂:新架构跨界操作多管理难;
  •  团队:新知识积累不足,抗风险能力低。

如何去解决这些问题呢?我们采用的方式是:PostgreSQL FDW 。

0b316dc3838ab7424394e044b7f95b2094adf39a

图四 PostgreSQL FDW


从上图可以看出,通过FDW之后,可以将MongoDB/Redis等NoSQL数据库、MySQL/SQL server等RDS关系型数据库或者Hadoop等大数据处理平台,甚至是一些OSS/Excel等文件当成一系列的外部表进行操作。下面将借助具体案例进行分析。


FDW: SQL Everything加速传统行业转型


传统企业都需要向互联网、物联网或者移动端进行转型,在转型的过程中一定会遇到包括JS、JSON在内的移动端的数据类型。一个项目通常会相当复杂,在现有的基础上以最少量的改动实现代码的快速迭代,完成新的功能是非常重要的。目前,可借助PostgreSQL协助实现“敏捷项目”转型,通过使用FDW打破NoSQL和BigData的障碍,快速成型,充分发挥现有团队的SQL价值。通过SQL开发方式快速进入新领域,再进行代码向非关系型处理(JSON)或大数据处理的深度优化抽离开始,实例数据库架构的“敏捷”转型。 


目前PostgreSQL 通过支持JSON数据类型,在传统行业转型的过程中,可以将传统用户数据场景轻松转换成移动互联网数据场景。通过全SQL在PostgreSQL中进行JSON数据操作,并可以对JSON中的某个属性进行索引以提高查询性能。实现NoSQL + SQL的有机整合,实现一类NewSQL的处理模型,同时在PostgreSQL中的JSON处理完全遵循ACID的数据库原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)要求。直接符合传统企业对于业务数据的可靠性、稳定性等需求,避免让用户为适应NoSQL数据库的CAP“最终一致”原理而不得不马上调整现有业务模型的窘境。

 

ca17119562737ec4a9d50abc4328f7ed84e13770

图五 SQL与JSON结合


由此上图可见通过PostgreSQL我们可以在一个SQL中操作原始的关系型数据,同时又可以进行JSON数据的整合处理。这为我们系统的“转型”开发争取到大量时间。但尽管部分的数据和JSON类型可以用PostgreSQL进行处理实现,解决了关系型数据库跟物联网对接的问题。当业务扩展到一定规模后,MongoDB数据库的需求依然会逐步展现,一是当JSON数据不要求ACID时MongoDB处理性能更高,二是当前体系下MongoDB扩展性事好;同时还可能需要用到Hadoop进行大数据分析,这又形成了非常复杂的架构和较大的任务量。针对这种情况,可以通过引入FDW模型加以解决。

f159c4d72d555d8509b28f06e39842b59adf53b9

图六 FDW实现“敏捷项目”成型


在FDW模型中,传统的系统业务依旧直接对应于Oracle/MSSQL/MySQL传统的关系型数据库;通过引入PostgreSQL作为中介库,也就是中间的处理节点,以便提供FDW和SQL的操作;新的互联网应用连接到MongoDB数据库中;通过在PostgreSQL中建立FDW与MongoDB的通道,将MongoDB中的数据当成PostgreSQL的数据表;在旧的业务系统中,仅需简单的SQL扩展就可以访问到MongoDB的数据;此外,PostgreSQL同样可以通过FDW与传统的数据库打通;最后,大数据处理平台以及OSS等文件也可以通过FDW与原来的业务系统进行连接。


FDW:金融报文处理


接下来看一下,在金融行业诸如报文处理等操作时FDW的是如何发挥作用的。

893b7135e05af5167793ece0a5b39c440863e364

图七 FDW在金融报文处理中的应用


金融的报文有很多种处理方式,其中一种方式是将单个格式化文件上传到某个文件目录下;在数据库中,通过存储过程定期任务读取文件列表,在文件列表内直接将数据读出、汇总,经过计算之后重新入库。


在PostgreSQL中,同样可以利用FDW实现金融报文的处理。例如前端的前置系统会不停地将文件上传到OSS(这是一个阿里云的对象存储服务,用户可以将各种文件或对象存储于这个服务引擎中),FDW就可以访问OSS读取这些文件,具体操作如下图所示:

be7ae76f3341a208bd644f09b256af670dfb205c

图八 FDW实现OSS操作


从上图可以看到,整体过程首先需要创建oss_fdw的插件;然后创建server,用于定位到OSS中的数据位置;接着创建基于OSS文件目录的名部表,将目录下所有文件的数据以表的形式展现;通过表的方式对OSS中的数据进行访问;再将OSS中的数据写入到PostgreSQL数据库中;数据并行的从 ossexample 装载到 example 中;最后,可以看到 oss_fdw 能够正确估计 oss 上的文件大小,正确的规划查询计划。


FDW:物联网数据整合


现在来看一下物联网数据整合的过程。在物联网环境中,有智能手环、车载系统等设备产生的大量的非格式化数据存储在MongoDB中。目前常用的模式是通过应用程序硬编码打通服务器上的关系数据库和大数据库处理平台。

57d4bb961438bffb676b58a9564818f777decb26

图九 FDW用于物联网数据整合


上图是将物联网环境整合到PostgreSQL中的具体示意图,应用程序通过MongoDB的语法对存储在MongoDB数据库中数据进行操作。当需要高效开发时,通过FDW利用SQL操作快速地实现对MongoDB的操作;此外,在PostgreSQL中的PostGIS的系统,支持复杂的地理信息的计算,车载系统等路径信息可通过PostGIS先预处理,然后再输送到大数据处理平台中。


PostgreSQL也可以与MongoDB直接操作,通过表的处理方式处理一些无需硬编码的操作。对于那些需要快速、高性能处理的业务,可以通过MapReduce进行处理性能优化。


值得注意的是,由于所有的操作经过FDW进行转换,如果选用的FDW的组件并不能将所有的查询、分析等操作下发到Hadoop或MongoDB中处理,这时就需要将数据从Hadoop或MongoDB中读入,然后再通过PostgreSQL进行分析处后传递给应用端,这样的方式在提升开发效率的同时,会导致一定的性能损耗。


FDW:解决企业并购重组问题


企业并购是很多开发商都会碰到的问题,母公司和其他并购的公司使用的数据库可能完全不同,总部会有自己的数据库要求。传统的模式是通过硬编码,将数据先汇总到总部,然后总部再做其他的处理;同时总部有新的数据出现时,需要再将这些数据下发到子公司内。整个编码操作非常冗余复杂,不仅延长了企业并购的时间,同时也增加了开发和管理难度。

b3a7739c93504955a0194a2f29e28629e0f03bd8

图十 FDW解决企业并购重组问题


如上图所示,通过FDW的形式,将所有的子公司与总部系统打通,即便子公司的数据库在异地,FDW依然可以通过互联网的形式连接到数据库中;总部应用系统除了可添加PostgreSQL数据源实现对所有子公司数据进行查询外,也可以通过简单的SQL操作将子公司的数据与总部数据进行整合;甚至可以将总部数据库与PostgreSQL进行打通连接,这样一来,各家子公司就可以访问权限范围内的总部数据。


总结


PostgreSQL是一个非常强大、功能齐全的开源数据库,本文重点介绍的只是FDW和JSON处理,未来期待更多的开发者成为PostgreSQL新生的一代,共同推进其在国内的发展。


关于分享者


萧少聪(铁庵) ,PostgreSQL中国用户会创始人之一、阿里云ApsaraDB for RDS PostgreSQL/PPAS产品专家、EnterpriseDB认证数据库专家、RedHat RHCA认证架构师。 


ApsaraDB for RDS PostgreSQL产品页面:https://www.aliyun.com/product/rds/postgresql


相关系列文章

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
2月前
|
存储 JSON 关系型数据库
《Postgresql实战》笔记(二)
《Postgresql实战》笔记(二)
34 0
|
4月前
|
SQL 关系型数据库 MySQL
postgresql|数据库|MySQL数据库向postgresql数据库迁移的工具pgloader的部署和初步使用
postgresql|数据库|MySQL数据库向postgresql数据库迁移的工具pgloader的部署和初步使用
116 0
|
1月前
|
存储 关系型数据库 MySQL
TiDB与MySQL、PostgreSQL等数据库的比较分析
【2月更文挑战第25天】本文将对TiDB、MySQL和PostgreSQL等数据库进行详细的比较分析,探讨它们各自的优势和劣势。TiDB作为一款分布式关系型数据库,在扩展性、并发性能等方面表现突出;MySQL以其易用性和成熟性受到广泛应用;PostgreSQL则在数据完整性、扩展性等方面具有优势。通过对比这些数据库的特点和适用场景,帮助企业更好地选择适合自己业务需求的数据库系统。
|
1月前
|
分布式计算 DataWorks 关系型数据库
DataWorks报错问题之dataworks同步rds数据到maxcompute时报错如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
2月前
|
关系型数据库 网络安全 数据库
《Postgresql实战》笔记(一)
《Postgresql实战》笔记(一)
48 0
|
3月前
|
关系型数据库 MySQL 数据处理
MySQL vs. PostgreSQL:选择适合你的开源数据库
在当今信息时代,开源数据库成为许多企业和开发者的首选。本文将比较两个主流的开源数据库——MySQL和PostgreSQL,分析它们的特点、优势和适用场景,以帮助读者做出明智的选择。
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB MySQL企业版与标准版功能对比:如何选择适合您的版本?
随着数字化时代的到来,企业对于数据处理的需求越来越高,而数据库作为数据处理的核心,其性能和成本成为了企业关注的焦点。阿里云全新推出的PolarDB MySQL企业版和标准版,以全新的架构和优化,为企业提供了高性能、低成本的数据库解决方案。但在功能上,这两个版本有很多差异,我们该如何选择呢?
58 2
|
3月前
|
存储 NoSQL 关系型数据库
什么是NoSQL数据库?它与传统关系型数据库有什么区别?
什么是NoSQL数据库?它与传统关系型数据库有什么区别?
56 0
|
3月前
|
JavaScript 关系型数据库 MySQL
基于JavaWeb和mysql实现网上书城前后端管理系统(源码+数据库+开题报告+论文+答辩技巧+项目功能文档说明+项目运行指导)
基于JavaWeb和mysql实现网上书城前后端管理系统(源码+数据库+开题报告+论文+答辩技巧+项目功能文档说明+项目运行指导)
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB MySQL版:强大功能,超高性能,满足企业级需求
PolarDB MySQL版:强大功能,超高性能,满足企业级需求 在当今信息化社会,企业对于数据处理的需求日益增长,如何选择一款高性能、高可靠性且成本合理的数据库成为了一大挑战。阿里巴巴的PolarDB MySQL版应运而生,它不仅兼容MySQL,还具备传统数据库所不具备的优势,为企业提供了更高效、更可靠的数据处理方案。
107 3