pg_lakehouse 与 datafusion

原理分析

pg_lakehouse 是 ParadeDB 推出的一个开源插件,支持对多种数据湖里的数据做分析计算。它的出现,使得 Postgres 能够像访问本地数据一样轻松访问 S3 等对象存储,轻松访问 Delta Lake 上的表格,具备数据湖分析能力。

pg_lakehouse 的查询计算能力是通过 Apache DataFusion 来支持的。DataFusion 是一个纯计算引擎,它不负责存储,内置了几种数据格式支持,并且可以通过 TableProvider 接口支持更多的数据输入方式[ref]。
DataFusion

从原来上看, pg_lakehouse 提供了一组访问数据湖的方法,并将这些方法和 DataFusion 的计算能力结合起来,帮助 Postgres 获得分析数据湖数据的能力。

也就是说,Postgres 基于 pg_lakehouse 做数据湖分析时,计算能力主要靠 pg_lakehouse 提供,而不是依赖 Postgres 自身的计算引擎。Postgres 的价值在于给用户提供一个一致的操作界面,如 SQL dialect、schema view、生态工具等。

用户访问数据湖的整体交互流程如下:
SQL -(pgsql)-> Postgres --> pg_lakehouse -(FDW, DF understandable SQL Dialect)-> DataFusion

pg_lakehouse 对数据湖的访问,是基于 postgres 外表界面实现的。有几点需要注意:

  • 集成湖的 catalog 不是必须的。Doris 等湖仓一体的数据库为了简化用户使用,会做 Multi External Catalog 集成,自动导入外表 schema。pg_lakehouse 依然要求用户在 Postgres 中创建外表。
  • pg_lakehouse 支持通过 arrow_schema function 来自动获取湖中数据的 schema
  • Postgres 还支持类似这样的语法批量导入外部 schema(但对于 lakehouse 的支持程度如何暂未调研):import foreign schema public from server duckdb into public;

Thinking in MyDB

对于 MyDB 来说,计算引擎部分依然是使用 MyDB 自身的计算引擎,无需依赖第三方(如 DataFusion、Volex)。

MyDB 重点是实现可扩展的数据湖接入策略,降低接入新存储、新格式的成本。我们要区分好 Object Stores、File Format 和 Table Format 三方面的需求,各自做好扩展。

Object Stores:

  • Amazon S3
  • Aliyun OSS
  • Tencent Cloud COS
  • Huawei Cloud OBS
  • S3-compatible object stores (e.g. MinIO)
  • Azure Blob Storage
  • Azure Data Lake Storage Gen2
  • Google Cloud Storage
  • Local file system
  • potentially any service supported by Apache OpenDAL.

File Formats

  • Parquet
  • CSV
  • JSON
  • Avro
  • ORC

Table Formats

  • Delta Lake
  • Apache Iceberg
  • MaxCompute

Schema 的集成,要做一些聪明的事情。External Catalog 固然美好,但增加了对外部系统的依赖,压力大的情况下,外部系统可能先挂。如果能提供一套快速创建、刷新 External Table 的方法,也不失为一种好的解决方案。

参考

组件说明:

ParadeDB is an Elasticsearch alternative built on Postgres. We’re modernizing the features of Elasticsearch’s product suite, starting with real-time search and analytics.

pg_lakehouse is an extension that transforms Postgres into an analytical query engine over object stores like S3 and table formats like Delta Lake. Queries are pushed down to Apache DataFusion, which delivers excellent analytical performance. Combinations of the following object stores, table formats, and file formats are supported.

DataFusion includes several built in data sources for common use cases, and can be extended by implementing the TableProvider trait. A TableProvider provides information for planning and an ExecutionPlans for execution.

DataFusion Motivation
Today, a vast amount of non-operational data — events, metrics, historical snapshots, vendor data, etc. — is ingested into data lakes like S3. Querying this data by moving it into a cloud data warehouse or operating a new query engine is expensive and time consuming. The goal of pg_lakehouse is to enable this data to be queried directly from Postgres. This eliminates the need for new infrastructure, loss of data freshness, data movement, and non-Postgres dialects of other query engines.
.
pg_lakehouse uses the foreign data wrapper (FDW) API to connect to any object store or table format and the executor hook API to push queries to DataFusion. While other FDWs like aws_s3 have existed in the Postgres extension ecosystem, these FDWs suffer from two limitations:
.
Lack of support for most object stores, file, and table formats
Too slow over large datasets to be a viable analytical engine
pg_lakehouse differentiates itself by supporting a wide breadth of stores and formats (thanks to OpenDAL) and by being very fast (thanks to DataFusion).

FDW 工作原理:

在 PostgreSQL 中,外部数据包装器(Foreign Data Wrapper,FDW)允许一个 PostgreSQL 服务器访问外部数据源,如另一个 SQL 或 NoSQL 数据库。FDW 的工作机制基于 SQL/MED ("SQL Management of External Data") 标准,这提供了一个框架来访问和管理存储在不同数据源中的数据。

PostgreSQL FDW 如何工作主要包括以下步骤:

1. 加载和创建 FDW 扩展:
第一步是在 PostgreSQL 数据库中加载和创建相应的 FDW 扩展。例如,postgres_fdw 用于连接远程 PostgreSQL 服务器,其他 FDW 如 mysql_fdw 用于 MySQL 数据库连接等。

2. 定义外部服务器和用户映射:
在 PostgreSQL 中,指定外部数据源的详细信息,比如服务器地址、端口、登录凭证等,并为本地用户创建映射以授权远程数据访问。

3. 创建外部表:
定义外部表,这些表代表远程数据源中的表。这个步骤将远程表的模式映射到 PostgreSQL 中,来决定哪些列和数据类型将被访问。

4. 查询外部表:
当本地 PostgreSQL 服务器上的用户查询外部表时,查询将被转发到 FDW。

SQL 转化过程:
当一个 SQL 查询是对一个外部表的操作时,FDW 会接管这个查询,并进行以下转换过程:

解析:FDW 分析本地查询的结构,这通常涉及解析 SQL 语句并理解所请求的目标数据、过滤条件、聚合操作和排序需求。

转换:然后,FDW 会把本地 SQL 查询翻译(或重写)成远程数据库系统理解的"方言"。例如,如果远程数据源是 MySQL 数据库,postgres_fdw 会将 PostgreSQL SQL 查询转换为 MySQL 可以理解的 SQL 查询。

执行:转换过的查询被发送到远程数据库,由远程数据库执行。

结果获取:查询结果从远程数据库返回到 PostgreSQL 服务器,并在必要时进行进一步的处理(例如,如果一些请求在远程数据库上不能完成,如某些类型的JOIN操作,那么这些操作需要在返回结果之后由 PostgreSQL 本身完成)。

结果返回:经处理的数据最终返回给客户端。

这个过程的某些环节可能依赖特定的 FDW 实现。比如,并非所有的查询条件和聚合操作都可以推送到所有类型的远程数据源进行处理。可能某些操作必须在本地 PostgreSQL 端完成,这取决于 FDW 的功能和远程数据源的限制。

FDW 的优势之一是它提供了一种透明的机制来访问外部数据,使得外部数据源的表现形式与本地表非常相似,使开发者能以统一的方式查询和操作数据。然而,性能和功能上的限制要依赖于具体的 FDW 实现和外部数据源的能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/662815.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ES报错1

ES在kibana的JSON如图: 提交后错误信息如下 所以是什么错误呢: 原来是:json的格式有误改成 这里的错误其实是我在文件传输时,为了节约空间,没有以json格式传递,而是一串字符就传过来了,需要使用josn的格式化工具格式化才行,结果格式化的不正确,才遇到此坑

Guns框架:基于主流技术Spring Boot2 + Vue3 + Antd Vue的现代Java应用开发新纪元

Guns框架:基于主流技术Spring Boot2 Vue3 Antd Vue的现代Java应用开发新纪元 摘要:随着信息技术的飞速发展,软件开发框架在提升开发效率、降低成本方面扮演着至关重要的角色。Guns框架,作为一个现代化的Java应用开发框架&#x…

【Linux多线程】认识多线程创建线程

文章目录 什么是多线程为什么称linux下的线程是轻量级进程呢? 线程的优点线程的缺点线程异常线程和进程创建线程1.pthread_create2.pthread_self 什么是多线程 进程是正在运行的程序的实例,而线程(thread)是进程中的一个执行路线…

如何顺利通过软考中级系统集成项目管理工程师?

中级资格的软考专业包括"信息系统",属于软考的中级级别。熟悉软考的人都知道,软考分为初级、中级和高级三个级别,涵盖计算机软件、计算机网络、计算机应用技术、信息系统和信息服务五个专业,共设立了27个资格。本文将详…

GPT-4o:重塑人机交互的未来

一个愿意伫立在巨人肩膀上的农民...... 一、推出 在人工智能(AI)领域,自然语言处理(NLP)技术一直被视为连接人类与机器的桥梁。近年来,随着深度学习技术的快速发展,NLP领域迎来了前所未有的变革…

Excel快速判断大量身份证性别,VBS代码

身份证判断性别的原理就是,身份证倒数第二位是单数表示是男的,单数是女的 可以用IF公式来判断,但是需要下拉,如果几百上千条数据还好,要是上万就不好拉取了,如果数据太多,可以用VBA代码判断 IF(MOD(VALUE(MID(A1,17,1)),2)0,"女","男") 原理:MID(A1,17,1…

MacBook 怎么玩Windows游戏 苹果笔记本怎么玩游戏?mac上如何玩windows游戏

传统上,Mac 不被认为是好的游戏机。然而,苹果已经开始在 Mac 上的游戏上投入更多精力,特别是自从转向苹果芯片以来。这使得 Mac 游戏的本机移植数量和模拟 Windows 游戏的能力都得到了显著提高。 方法一:Boot Camp 1、Boot Camp是…

正确地安装 Python

Python由荷兰国家数学与计算机科学研究中心的吉多范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数…

windows10远程桌面端口,修改Windows 10远程桌面端口的步骤

在Windows 10操作系统中,远程桌面功能为企业用户、技术支持人员以及个人用户提供了极大的便利,允许他们远程访问和管理另一台计算机的桌面环境。然而,默认的远程桌面端口(通常为3389)常常成为安全漏洞的潜在目标&#…

粒子辐照环境中相机镜头防护及LabVIEW图像处理注意事项

在粒子辐照环境测试电路板性能的实验中,需要对相机镜头进行有效防护,同时利用LabVIEW进行图像识别和处理。本文将讨论相机镜头防护的关键因素和LabVIEW处理过程中的注意事项,包括防辐射材料选择、辐射屏蔽措施、散热管理、空间布局及LabVIEW软…

Linux驱动开发笔记(二) 基于字符设备驱动的GPIO操作

文章目录 前言一、设备驱动的作用与本质1. 驱动的作用2. 有无操作系统的区别 二、内存管理单元MMU三、相关函数1. ioremap( )2. iounmap( )3. class_create( )4. class_destroy( ) 四、GPIO的基本知识1. GPIO的寄存器进行读写操作流程2. 引脚复用2. 定义GPIO寄存器物理地址 五、…

SC8205LA 20VN沟道增强型MOS(Mos)场效应管

特点 ❥专有的先进平面技术 ❥高密度超低电阻设计 ❥大功率、大电流应用 ❥理想的锂电池应用 ❥封装形式:SOT23-6

总是不能盈利?试着用这两个观点去学习现货白银的技巧

一进入现货白银市场,投资者都想着如何去找到现货白银交易的机会,学习现货白银投资的方法。其实这些都是手段,而最终的目的还是为我们的盈利服务。而对于盈利来说,其实胜率和风险报酬比才是影响盈利的重要因素,我们带着…

Springboot邮件发送配置

Springboot邮件发送配置 pom.xml依赖&#xff1a; <dependency><groupId>org.eclipse.angus</groupId><artifactId>jakarta.mail</artifactId><version>2.0.3</version> </dependency> <dependency><groupId>or…

最简单的安卓模拟器抓包?

安装模拟器抓包似乎是有个绕不开的话题&#xff0c;但是现在普遍的安卓模拟器抓包会遇到以下问题&#xff1a; 1.证书配置繁琐 2.模拟器不兼容软件 3.系统设置繁琐。 前几天写过一次微信小程序如何抓包&#xff0c;现在来讲一下模拟器怎么抓包吧。首先使用的工具还是TangGo测…

Canny算子

Canny算子_百度百科 (baidu.com)https://baike.baidu.com/item/Canny%E7%AE%97%E5%AD%90/8821789?frge_ala 图像处理中最经典的边沿检测算法&#xff1a; Canny边缘检测_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1U4411277i/?spm_id_from333.1007.top_right_bar_…

达梦 结果拼接=多行结果返回一列字符串.

sql 转换 查询出多行数据 (select t.PROPERTY from JD_CODING t left join DELIVERY_OF c on t.VALUE c.TYPE where t.PROPERTY stackingType group by t.PROPERTY) 更改后 转为一列的拼接字符串 ( select listagg( distinct t.PROPERTY,,) within group ( order by t.P…

linux的磁盘分区与管理

磁盘分区与管理 识别磁盘 一块硬盘的“艺术”之旅&#xff08;硬盘空间使用&#xff0c;经历的步骤&#xff09; •识别硬盘 > 分区规划 > 格式化 > 挂载使用 Unix/Linux的基本哲学理念&#xff1a;一切皆文件 /dev:存放设备&#xff08;键盘、鼠标、光驱、硬盘……

AI 绘图要如何入门?有哪些好用的软件推荐?(附工具+教程+变现模式)

1.Ai绘画如何入门 不需要把Ai绘画想的很复杂 抛去复杂的应用 使用现成简单的工具 只需要学会提示词 描述你想要的画面即可 提示词 不需要太复杂&#xff0c;也不能太简单&#xff0c;太简单依赖于ai的基本样式&#xff0c;关键是要抓住你想要的核心描述 AI不太擅长理解人类的…

国产操作系统上部署SVN版本控制系统

原文链接&#xff1a;国产操作系统上部署SVN版本控制系统 | 统信 | 麒麟 | 中科方德 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇在国产操作系统上部署SVN版本控制系统的文章。SVN&#xff08;Subversion&#xff09;是一款广泛使用的版本控制系统&#xff0c;它…