LakeSoul简介
LakeSoul是一个开源的云原生实时湖仓框架,由数元灵公司原创开发并于2023年5月捐赠给Linux Foundation AI & Data基金会成为沙箱项目。LakeSoul旨在为企业提供一个统一的实时数据中心和数据资产基础,同时也是AI 2.0大模型时代的知识库,支持海量多模态数据管理、集成大模型训练和RAG应用。
LakeSoul具有以下主要特性:
- 弹性架构:计算和存储完全分离,无需固定节点和磁盘,计算和存储各自具有弹性能力。
- 高效可扩展的元数据管理:使用外部PostgreSQL数据库管理元数据,支持高并发写入。
- ACID事务:使用元数据DB的事务实现两阶段提交协议,确保数据一致性。
- 多级分区和高效upsert:支持范围和哈希分区,以及行列级别的灵活upsert操作。
- 流批一体:支持流式Sink,可同时处理流数据摄入、历史数据批量填充和交互式查询等场景。
- Schema演化:用户可以随时添加/删除字段,历史数据可以以兼容模式读取。
- CDC流和日志流摄入:支持在一个Flink作业中同步整个数据库,自动表发现和DDL同步。
- 高IO性能:使用Rust的Arrow-rs库读写Parquet文件,优化了IO性能。
- 多计算引擎支持:目前支持Spark和Flink进行批流读写,Presto连接器支持表读取。
- 工作区和RBAC:使用PostgreSQL的RBAC和行级安全策略实现元数据的权限隔离。
LakeSoul的技术优势
领先的技术理念和架构设计
传统数据架构面临响应不及时、成本高、无法统一实时数据和批量数据以及难以扩展等问题。LakeSoul提供了完美的湖仓存储解决方案来解决上述问题。它在云上提供高并发、高吞吐的读写能力和完整的仓库管理能力,并以通用的方式提供给各种计算引擎。
支持增量写入和Upsert更新
LakeSoul提供高效的Merge on Read和Upsert功能,提高了数据摄入的灵活性和性能。这使得数据更新和合并变得更加高效,尤其适合需要频繁更新的场景。
实时湖仓
LakeSoul支持流式和批量写入、快照读取,以及Flink CDC多源实时入湖、流式增量读取和计算,实现全链路实时数据仓库。这种流批一体的设计使得用户可以在同一个系统中处理实时数据和历史数据,大大简化了数据处理流程。
开放性
LakeSoul支持与Spark、Flink和Presto等多种计算引擎的互联互通,并全面支持ETL、OLAP和AI模型训练等多种数据智能计算服务。这种开放的生态系统使得用户可以根据自己的需求选择最适合的工具和框架。
LakeSoul的应用场景
-
统一BI和AI的数据基础设施 LakeSoul为BI和AI应用提供了统一的数据基础设施,多个计算引擎可以直接高效地读写数据。这种统一的approach可以大大减少数据孤岛,提高数据的利用效率。
-
实时数据仓库 在需要高效摄入增量数据,以及进行行级或列级并发更新的场景中,LakeSoul表现出色。它的高并发写入能力和ACID事务保证使得实时数据仓库的构建变得更加简单和可靠。
-
大范围时间跨度的数据查询和更新 对于需要查询和更新跨越大时间范围的海量历史数据,同时又要保持低成本的场景,LakeSoul结合云对象存储提供了理想的解决方案。
-
重ETL和即席查询 对于资源消耗变化剧烈,期望计算资源能够独立弹性伸缩的场景,LakeSoul的弹性架构设计完美契合这一需求。
-
高并发写入和高性能元数据管理 在需要高并发写入和高性能元数据管理的场景中,LakeSoul的PostgreSQL元数据存储和优化的设计可以满足这些高要求。
-
主键数据更新的高吞吐量要求 对于主键数据更新需要高吞吐量的场景,LakeSoul的高效upsert操作和优化的存储结构可以提供出色的性能。
LakeSoul的实际应用示例
实时在线数据库入湖报表分析
LakeSoul支持通过简单的配置,如在线数据源等,启动全库同步和实时入湖任务。它支持自动感知新表并同步表结构变更,无需人工运维。在线数据实时更新到湖仓中,BI报表和大屏展示可以无缝连接并实时更新,使得关键业务指标可以随时掌握,支持业务决策。
实时报表分析
基于LakeSoul的流批更新特性,可以通过SQL完成数据抽取、转换和开发,简化ETL和数据分析过程。这种方式不仅提高了数据处理的效率,还降低了开发和维护的复杂度。
RAG智能专家系统
LakeSoul提供原生Python接口,集成支持PyTorch等主流AI框架直接调用数据、训练和推理。它还可以支持大模型训练和RAG应用,为企业构建智能系统提供强大的数据支持。
加入LakeSoul社区
LakeSoul是一个开源项目,欢迎开发者和数据专业人士加入社区,共同推动数据智能的发展。您可以通过以下方式参与:
- 访问LakeSoul官方网站了解更多信息
- 在GitHub上为项目贡献代码或提出建议
- 加入LakeSoul技术讨论邮件列表参与技术交流
通过参与LakeSoul项目,您不仅可以提升自己的技能,还可以为开源社区做出贡献,推动数据湖仓技术的发展。让我们一起构建更智能、更高效的数据世界!