暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL援建湖仓一体

原创 梧桐 2025-02-14
238

数字化时代,湖仓一体(Data Lakehouse)作为一种新兴的数据管理架构,越来越受到企业的关注。它结合了数据湖和数据仓库的优点,旨在为企业提供一种更为高效、灵活且可扩展的数据存储与分析解决方案。本文将探讨湖仓一体的数据格式、结合PostgreSQL在湖仓一体的数据管道、数据治理与法律问题以及人工智能应用。

一、湖仓一体的数据格式

在构建湖仓一体时,数据格式的选择至关重要。企业应仅存储对其业务操作真正必要的数据,并以高效的方式进行存储。避免仅仅因为数据“可能在未来有用”就将其存储起来。法律法规要求企业制定数据保留政策,而大多数公司在长期内实际上只需要聚合数据。一些原始数据在处理后可或必须被删除,因为企业需要为数据的收集、存储和处理支付成本。湖仓一体中的数据格式多种多样,包括JSON、Parquet、Avro和ORC等。这些格式各有特点,例如:

  • JSON:一种键值对格式,支持嵌套结构,适合存储半结构化数据。
  • Parquet:一种压缩的列式存储格式,优化用于数据分析,尤其适合处理大规模数据集。它对数值类型(如INT32、INT64、FLOAT、DOUBLE、BOOLEAN)非常高效,但对字符串类型(存储为BYTE_ARRAY)效率较低。
  • Avro:一种基于模式的行式存储格式,适合需要频繁更新的场景。
  • ORC:一种优化用于读密集型工作负载的列式存储格式。

此外,现代湖仓一体还依赖于一些先进的数据格式框架,例如Apache Arrow、Apache Iceberg、Delta Lake和Apache Hudi。这些框架为管理和处理大规模数据集提供了更强大的功能:

  • Apache Arrow:一个跨语言的内存数据分析平台,定义了标准化的列式内存格式,支持零拷贝读取,与Python数据分析紧密集成。
  • Apache Iceberg:源于Netflix的表格式框架,支持不可变、追加式和事务性操作。每次更改都会创建一个新的元数据文件和快照,支持版本控制、分区和模式演变,并允许用户通过时间旅行功能查询历史数据。
  • Delta Lake:由Databricks创建的开源存储格式,支持ACID事务和可扩展的元数据管理,适用于湖仓一体架构。
  • Apache Hudi:源于Uber的事务性数据湖框架,支持多次更新和删除操作,将数据库和数据仓库的功能引入数据湖。

在湖仓一体中,PostgreSQL也扮演了重要角色。它支持列式存储,以提高分析效率,并通过FDW支持CSV、JSON、Parquet等格式。此外,PostgreSQL还通过扩展(如pg_analytics和pg_duckdb)与DuckDB等现代分析型数据库集成,提供更强大的功能。

三、数据管道

湖仓一体的成功实施离不开高效的数据管道。不同的业务场景需要不同的数据管道解决方案。例如,在电信业务场景中中,探针从移动网络收集事件数据,这些数据以每分钟数百GB的速度产生,但提供商通常只需要聚合的摘要数据。在这种情况下,采用集中式模型,仅存储聚合数据,而原始数据在处理后被丢弃。而在服装电商的尺码预测小部件中,系统需要毫秒级时间内算出最佳适配尺寸,这有赖于预先聚合的机器学习数据。该场景采用混合模型,基于湖仓一体平台,原始事件数据存储两年以供数据分析使用。对于需要快速响应的场景,如安全登录和金融交易软件,采用强分散式模型,仅存储聚合数据,并在处理后尽快丢弃原始数据。在这些案例中,PostgreSQL都可扮演了重要角色,可通过多种功能和扩展在数据管道中承担多种角色,例如:

  • 强大的分区功能:通过pg_partman扩展实现高效的数据分区。
  • 行级安全性:实现细粒度的访问控制。
  • JSONB实现:支持多种索引类型,优化半结构化数据的存储和查询。
  • 多种FDW:支持连接不同数据库和文件格式。
  • 分布式扩展:如Citus和TimescaleDB,分别支持分布式计算和时间序列数据的高效处理。

四、数据治理与法律问题

湖仓一体的有效管理离不开良好的数据治理。数据治理要求企业明确数据生命周期,建立清晰的数据目录和数据血缘。缺乏这些基础,企业可能会陷入技术炒作的漩涡,而无法真正实现数据的价值。数据治理并不一定需要复杂的解决方案,对于小型企业来说,从简单的规则开始可能更为合适。数据质量是数据治理的关键,如果数据无人负责,其质量将难以保证。企业需要建立基本的数据目录和数据定义,并基于此进行质量检查和数据剖析。数据安全和隐私同样至关重要,企业需要遵守如PIPL(个人信息保护法)、GDPR(通用数据保护条例)等法律法规。在湖仓一体中,PostgreSQL可通过以下方式帮助实现数据治理:

  • 检查约束和触发器:用于确保数据质量。
  • 对象注释:帮助构建数据目录。
  • pgTAP扩展:提供单元测试框架,用于数据质量检查。
  • pg_analytics与DuckDB集成:用于数据分析和质量评估。

此外,还可使用外部工具和流程,如Great Expectations/dbt用于数据质量检查,Apache Atlas/OpenMetadata用于数据目录和血缘管理,OpenLineage用于AI/ML的数据血缘管理,以及使用Marquez作为开源的元数据服务。

五、人工智能与湖仓一体

人工智能(AI)在湖仓一体中的实用性取决于具体用例。商业AI解决方案可能会带来隐私和安全问题,而本地开源AI解决方案虽然提供了更多的控制权,但通常不如商业AI强大。AI模型的答案基于概率,而非绝对正确。例如,大型语言模型(LLM)使用Transformer架构和注意力机制来理解上下文,并根据训练数据生成文本。然而,这些模型的答案取决于激活的语义关联,因此需要谨慎对待。AI在处理特定领域数据时可能会遇到问题,因为其性能高度依赖于训练数据的质量、数量和主题覆盖范围。对于一般主题数据,如发票、财务报告和仓库管理,AI表现出色。但对于更专业化的主题,AI可能会产生幻觉。尽管如此,AI仍可用于头脑风暴,为企业提供新的想法和视角,但结果需要经过双重检查。

人工智能与在湖仓一体中的应用还面临一些常见问题,例如:

  • 过度泛化:由于训练数据存在偏差,导致模型得出错误结论。
  • 误解:由于上下文错误,导致模型得出错误结论。
  • 欠拟合:模型过于简单,无法捕捉细节,过于泛化。
  • 过拟合:模型过于专注于训练数据,无法泛化。
  • 对输入的过度解读:由于输入不完整,模型会“幻觉”缺失的部分。
  • 分布外泛化:由于训练数据未覆盖某些主题,导致模型得出错误结论。

此外,一些早期的AI承诺仍未兑现。例如,针对特定领域的微调可能会使模型在新数据上表现更好,但可能会导致在通用数据上表现不佳,甚至出现“灾难性的遗忘”。检索增强型生成(RAG)模型依赖于额外数据的质量,虽然对聊天机器人和帮助系统非常有用,但在复杂数据分析方面表现不佳。高度特定的数据需要提供示例和解释。最近,AI代理成为新的热点。它们可运行额外的任务,如互联网浏览、运行机器学习模型或使用多种知识源,并具备多步推理能力。然而,它们仍然依赖于底层LLM的质量,在已知主题上表现出色,但在小众的主题上可能会产生幻觉。

在湖仓一体中,PostgreSQL与AI和ML的结合是一个很有前景的领域。PostgreSQL提供了多种扩展,支持AI和ML功能,例如:

  • pgvector:用于向量相似性搜索,支持检索增强型生成(RAG)。
  • Timescale pgvectorscale:改进的pgvector扩展,可优化性能。
  • Timescale pgai:自动化嵌入向量的创建,用来简化RAG流程。
  • PostgresML:支持在PostgreSQL中直接运行机器学习模型。

六、总结

PostgreSQL本身并不是一个完整的湖仓一体解决方案,它可以作为湖仓一体架构中的核心组件,为企业提供了一种强大的数据管理解决方案,通过整合多种数据格式、优化数据管道、强化数据治理,并结合人工智能和机器学习技术,帮助企业更好地存储、管理和分析数据。实施湖仓一体时,企业需要根据业务需求和数据特点,选择合适的数据格式、工具和技术,并确保数据治理和法律合规性,合理利用人工智能在湖仓一体中的潜力,实现企业数据的最大价值。

参考:
Josef Machytka:Building a Data Lakehouse with PostgreSQL

最后修改时间:2025-03-10 22:14:23
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论