PostgreSQL 与对象存储的结合: 在 MinIO 中访问外部数据

数据领域最激动人心的发展之一是湖仓一体功能在所有主要数据库供应商中的兴起。Snowflake 和 SQL Server 长期以来一直采用这一点,现在 PostgreSQL 正在通过 pg_lakehouse 拥抱这种范式转变,使得利用现代数据湖进行分析、AI 等比以往任何时候都更容易。随着越来越多的传统数据库继续允许您查询对象存储中的数据,AWS 选择弃用 Amazon S3 Select,这也许并非巧合。该领域有更多的进入者可以成功地为客户提供此功能以及更多功能。

虽然绿地化提供了为特定用例定制技术堆栈的快感,但完整的淘汰和替换策略很少可行,也不明智。相反,前进的道路在于利用现有的数据库技术进行计算,同时投资于世界一流的对象存储。在这个现代时代,数据和存储才是真正的价值,因为查询引擎虽然很重要,但已经变得商品化和可互换。pg_lakehouse使目前使用PostgreSQL的许多企业能够采用这种策略,使他们能够在不牺牲现有投资的情况下使用现代数据湖为未来进行构建。pg_lakehouse 是由 ParadeDB 开发的开源扩展。此扩展利用了 PostgreSQL 现有的外部数据包装器功能,并通过与 Apache DataFusion 的集成进行了增强,以提供对各种数据源的高性能分析。

从 SQL 到对象存储:新前沿

PostgreSQL长期以来一直支持外部表和扩展,使其能够与外部数据源进行交互。新的 pg_lakehouse 扩展延续了这一传统,使 PostgreSQL 能够查询存储在 MinIO 等对象存储系统中的数据。这不仅仅是一个附加组件,而是 PostgreSQL 现有功能的扩展,允许用户将外部对象存储视为其数据库中的本机表。与 MinIO Enterprise Object Store 配对,用户可以存储大量数据,同时将其与现有的 SQL 工作流集成。数据工程师们欢欣鼓舞,因为PostgreSQL已经成为对象存储的查询引擎。

为什么这很重要

在现代数据环境中,有效存储和分析数据的能力至关重要。就其本身而言,传统数据库在可扩展性和灵活性方面存在局限性,尤其是在处理大型数据集或多样化的数据格式时。现代数据湖架构结合了数据湖和数据仓库的优点,可以解决这些挑战。通过分解计算和存储,此体系结构使企业能够独立扩展资源,从而优化性能和成本。此外,现代数据湖支持各种 AI/ML 工作负载,确保数据始终可访问、具有弹性且安全,即使在地理位置分散的大型部署中也是如此。

PostgreSQL 和 MinIO 企业对象存储

将 PostgreSQL 与 MinIO 的企业对象存储 (EOS) 集成为构建现代数据湖奠定了坚实的基础,提供的功能可确保您的数据具有可扩展性、安全性和高性能。

1 . 使用 MinIO 跨数据源查询:使用 pg_lakehouse 扩展直接查询存储在 MinIO 中的数据。目前,与 S3 兼容的对象存储(如 MinIO)支持 CSV 格式。PostgreSQL 可以将这些文件视为本机表,使您能够执行复杂的分析,而无需移动数据。ParadeDB 表示,对 Iceberg 的支持将很快可用,进一步扩展数据湖的多功能性。对 Iceberg 的支持将很快推出,进一步扩展数据湖的多功能性。

2 . 企业级可扩展性:MinIO 的架构专为大规模而设计,可以毫不费力地管理 EB 级数据。MinIO 使用基于服务器池的分布式架构,允许水平扩展,这意味着您可以添加更多池以增加容量和性能,而不会造成中断。这种设计非常适合处理现代企业的大规模数据需求,确保您的基础设施能够随着数据需求的增长而增长。

3 . 高级安全性:安全性在现代数据架构中至关重要。MinIO EOS 提供强大的安全功能,包括用于服务器端加密的 MinIO Enterprise KMS(密钥管理系统)。EOS KMS确保您的数据在静态和传输过程中都得到加密,从而保持最高级别的数据保护。

4 . 高性能:MinIO Enterprise Cache 功能通过将频繁访问的数据存储在更靠近应用程序的位置,显着提高了数据访问速度。这对 PostgreSQL 查询特别有利,因为在 PostgreSQL 查询中,减少延迟可以加快查询执行速度,尤其是对于存储在数据湖中的大型数据集。世界上只有一种最快的对象存储,并且使用 NVMe SSD 的 GET 操作超过 325 GiB/s,PUT 操作超过 165 GiB/s,因此只有一种真正的对象存储选择来支持 PostgreSQL 作为查询引擎。

5 . 使用 MinIO 控制台简化管理:MinIO Enterprise Console 提供了一个基于 Web 的直观界面,用于在一个地方管理所有对象存储,包括监控、用户管理和策略执行。在构建现代数据湖时,这种易管理性至关重要,因为它允许管理员从单一界面有效地监督存储层。

通过利用 MinIO 企业对象存储的这些功能,结合 PostgreSQL 的强大功能,您很快将能够构建一个现代、安全且高度可扩展的现代数据湖,以满足当今数据密集型环境的需求。此设置不仅可以增强您的分析能力,还可以为面向未来的数据策略奠定坚实的基础,确保您的基础架构能够适应不断变化的数据管理环境。

开始使用 pg_lakehouse

安装过程很简单,官方 ParadeDB 文档中提供了详细的设置说明。作为 AGPL-3.0 许可的开源项目,pg_lakehouse 鼓励社区贡献并确保扩展保持免费和可访问性,使其成为希望使用 PostgreSQL 和 MinIO 实现数据基础设施现代化的组织的重要工具。

继续构建

通过 pg_lakehouse 将湖仓一体功能集成到 PostgreSQL 中,结合 MinIO 强大的对象存储,为现代数据需求提供了强大的解决方案。此举不仅仅是增加功能,而是反映了行业中更广泛的趋势,即数据湖和数据仓库融合在一起,提供两全其美的服务。随着越来越多的数据库采用类似的功能,数据分析的未来看起来比以往任何时候都更加光明和集成。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Java使用Jsoup后台调用天地图地理编码接口的几个问题

目录 前言 一、天地图的地理编码接口 1、相关的API介绍 2、响应接口 二、使用JSOUP调用相应接口面对的问题及应对 1、第一关访问路径的问题 2、第二关UnsupportedMimeTypeException 3、可能的http获取403问题 三、总结 前言 如果你现在的项目中有如下的需求,…

[JavaEE] 工作流- Activiti7 框架详解

目录 1、Activiti介绍 1.1、BPMN设计器 1.2、常见流程符号 1.2.1、事件event 1.2.2、活动activiti 1.2.3、流向flow 2、入门案例 2.1、需求说明 2.2、初始环境 2.2.1、添加依赖 2.2.2、添加配置 2.2.3、添加引导类 2.2.4、启动项目 2.2.5、表结构 2.2.6、常见ap…

解决 mfc140.dll 文件丢失的问题,5种mfc140.dll解决方法

当您尝试启动一个用 Microsoft Visual Studio 2015 开发的 Windows 应用程序时,如果出现“无法找到 mfc140.dll 文件”的错误,请不要紧张。这类问题通常由DLL文件缺失、损坏或未正确安装引起。好消息是,存在多种解决方案可以帮助您解决这一挑…

Vue指令:v-cloak、v-once、v-pre 指令

Vue 指令系列文章: 《Vue插值:双大括号标签、v-text、v-html、v-bind 指令》 《Vue指令:v-cloak、v-once、v-pre 指令》 《Vue条件判断:v-if、v-else、v-else-if、v-show 指令》 《Vue循环遍历:v-for 指令》 《Vue事件…

【机器学习练习】糖尿病预测

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、数据预处理 1. 数据导入 import numpy as np import pandas as pd import seaborn as sns from sklearn.model_selec…

css 将背景图片居中显示,并且显示全,不拉伸的效果实现,图片设置宽度,高度自适应,并且显示全。

1、背景自适应的css: .bg-tns {background-image: url(img/xxx.jpg);background-size: cover;background-position: center; /* 将图片居中显示 */min-height: calc(100vh-100px); /* 确保至少为视口高度 */} 这个布局是这样的: 这里的背景图的高度&am…

unity Standard Assests资源商店无法安装解决方案

Unity游戏开发 “好读书,不求甚解;每有会意,便欣然忘食。” 本文目录: Unity游戏开发 Unity游戏开发unity中国 嗨嗨嗨,我来啦。 这几天的川渝之旅已经圆满结束了,今天开始正常给大家更新: Unity…

Unity与UE,哪种游戏引擎适合你?

PlayStation vs Xbox,Mario vs Sonic,Unreal vs Unity?无论是游戏主机、角色还是游戏引擎,人们总是热衷于捍卫他们在游戏行业中的偏爱。 专注于游戏引擎,Unity和Unreal Engine(简称UE4)是目前市…

利用漏洞实现 Outlook 的 RCE:第 2 部分

## 攻击面 Outlook 要播放的声音文件是波形音频文件格式( WAV)。它通过接收声音文件路径的PlaySound函数播放。PlaySound将加载文件、解析它,然后调用soundOpen,后者将调用不同的波形函数,例如waveOutOpen。 WAV 文件充当多个音频编解码器的容器(或包装器)。编解码器是一…

Shire 0.5 发布:构建数据安全 RAG,充分整合研发资产

最近,我们发布了新版本的 Shire,在这个新的发布(Shire 0.5)里,你可以更好地融合本地研发资产,同时构建数据安全 RAG。在这次版本中,我们增加了: 对 SonarQube 的 issue 支持。可以直…

从0到1构建视频汇聚生态:EasyCVR视频汇聚平台流媒体协议支持的前瞻性布局

TSINGSEE青犀EasyCVR视频汇聚平台是一款基于云-边-端一体化架构的视频融合AI智能分析平台,广泛应用于工地、仓储、工厂、社区、校园、楼宇等多个领域。平台凭借其强大的数据接入、处理、转码及分发能力,在视频监控领域展现出显著的技术优势和应用前景。本…

python项目在linux中的启动脚本(shell脚本)

背景: 在linux环境,使用shell脚本,实现对某个服务的启动、停止功能。 shell脚本的功能: 启动(start):通过参数 start ,实现启动服务。如果该服务已经启动,给出已经启动…

松下弧焊机器人维修 控制柜故障 连接线修复

一、Panasonic焊接机器人控制柜与机器人的接线 机器人的控制箱,一定要配对使用。松下焊接机器人控制柜已经记忆了机器人的绝对原点(机器人位置控制原点)。 二、编码器电缆 (圆形连接器) 1. 接口的插头插座要注意,插头要插到插座中。 2. 用一手握住电缆&a…

《黑神话:悟空》发售后快手游戏笔记本电脑GMV日环比增长40%

一、美联储9月降息预期升温 昨夜美股三大股指在震荡中收涨,市场情绪受到美联储7月会议纪要提振。纪要显示,美联储官员普遍倾向于9月降息,多位官员认为当前利率水平已对经济构成限制。此消息推动美股上涨,并带动金价创新高&#xf…

鸿蒙HarmonyOS编程开发:TLS单向认证通讯示例

1.TLS简介 TLS(Transport Layer Security)协议的前身是SSL(Secure Socket Layer)安全套接层协议,由Netscape公司于1994年提出,是一套网络通信安全协议。IETF(The Internet Engineering Task Fo…

前端开发中的大屏布局方案:使用 rem 单位与动态设置 html 的 font-size

使用 rem 单位与动态设置 html 的 font-size 前言 随着设备尺寸的多样化,网页需要能够在不同大小的屏幕上提供良好的用户体验。传统的布局方式(如使用 px)在不同分辨率下可能会导致布局失真。为了解决这个问题,我们可以通过动态…

【UE5】基于摄像机距离逐渐剔除角色

效果 步骤 1. 新建一个工程,在内容浏览器中添加第三人称游戏内容包 2. 找到第三人称角色的材质实例“MI_Quinn_01”并打开 找到材质实例的父项材质“M_Mannequin” 打开材质“M_Mannequin” 在材质图表中添加如下节点 此时运行效果如文章开头所示。 参考视频&#…

flutter 中 ssl 双向证书校验

SSL 证书: 在处理 https 请求的时候,通常可以使用 中间人攻击的方式 获取 https 请求以及响应参数。应为通常我们是 SSL 单向认证,服务器并没有验证我们的客户端的证书。为了防止这种中间人攻击的情况。我么可以通过 ssl 双向认证的方式。即…

创意无限,尽在掌握:热门视频剪辑软件一览

我们记录生活、分享故事、传播信息用视频的频率越来越高了。而这些视频往往都是通过剪辑之后才能展示出当前的效果。那这次我们就来探索剪辑视频的时候都会用到什么工具吧。 1.福昕视频剪辑 连接直达>>https://www.pdf365.cn/foxit-clip/ 这是一款专为追求高效与创意…

【React】为什么Hooks不能出现在判断中

前言 在 React 中,Hooks 不能写在条件语句中,如下面这段代码点击button后则会报错。 import { useEffect, useState } from "react"export default () > {const [count, setCount] useState(0)if (count > 0) {useEffect(() > {co…