更多资讯
- 奇点数联&新葡的京首頁完成战略重组,乔迁国贸核心区
- 新葡的京首頁参编《基于区块链的医疗健康应用技术规范总则》团体标准 为智慧医疗赋能
- 专利,赋能企业高质量发展
- 数据湖在医疗大数据领域的应用探索
- 喜报!新葡的京首頁科研平台客户在医学领域顶级期刊(IF39.3)发表文章
数据湖在医疗大数据领域的应用探索
发布时间:2023-07-24 作者:奇点数联
背景
数据湖是一种用于大规模、多样化数据存储和处理的技术。它的概念源于数据管理的演变和大数据技术的发展。传统上,在处理数据时通常采用数据仓库的方式,即将数据从各个源头提取、转换和加载到预定义的模式中,以支持特定的分析和查询需求。然而,这种数据仓库模型在面对大数据时面临一些挑战。
随着数据量的不断增长和多样化的数据源的涌现,数据仓库模型在以下几个方面存在限制:
数据多样性:传统数据仓库模型对结构化数据的支持较好,但难以处理半结构化和非结构化数据,如文本、日志文件、传感器数据等。
数据提取和转换的复杂性:在传统的数据仓库中,数据提取、转换和加载(ETL)过程是复杂和耗时的。随着数据源的增加和数据模式的变化,ETL过程变得更加复杂和困难。
数据延迟:传统数据仓库模型需要定期的批处理过程来加载和更新数据,这导致了数据的延迟,无法提供实时或近实时的数据分析。
数据湖的概念于此背景下出现,旨在解决传统数据仓库模型的限制。数据湖是一个集中存储各种类型和源头数据的存储系统,它接受原始、未经处理的数据,并保留其原始格式和结构。与数据仓库不同,数据湖不要求预定义的模式或转换过程,而是将数据保存在其原始形式中,以支持灵活的数据探索、分析和挖掘。
定义和概念
数据仓库(Data Warehouse)是一种基于预定义结构和模式的中心化数据存储系统,用于集成、转换和存储来自各个数据源的结构化数据。数据仓库通过ETL(提取、转换和加载)过程将数据从源系统中提取出来,经过转换和清洗后存储在预定义的模式中。它主要用于支持决策支持和业务分析需求,数据在存储时被结构化,以便于查询和报表生成。数据仓库提供了稳定、一致的数据视图,适合基于历史数据的分析和报告。
数据湖(Data Lake)是一个存储多种数据类型和源头的大型数据存储系统,它接受原始、未经处理的数据,并保留其原始格式和结构。数据湖不要求预定义的模式或转换过程,数据以原始形式存储,以支持灵活的数据探索、分析和挖掘。数据湖可以集成结构化、半结构化和非结构化数据,包括文本、图像、音频等。数据湖适用于需要进行广泛的探索、实验和发现的场景,支持更灵活的数据分析和应用。
湖仓一体(Lakehouse)是将数据湖和数据仓库的优点结合起来,旨在实现数据湖的灵活性和数据仓库的稳定性的综合方法。湖仓一体技术将数据湖作为存储层,保留原始数据,同时引入结构化和元数据管理机制,使得数据湖中的数据可以被认可、组织和查询。湖仓一体技术通过引入事务性处理、数据质量控制和查询性能优化等功能,使得数据湖可以支持更广泛的分析、报告和实时查询需求。
总结来说,数据湖仓是在数据湖的基本架构上,通过一系列以表格式Table Format为代表的新技术解决了数据湖泊的各种传统痛点,将数据仓库和数据湖泊功能融合在一起,使其具有了数据仓库在数据管理方面的各种优点,并直接支持BI和AI的各种数据分析场景的新型架构。
医疗领域应用
数据集成和存储:数据湖能够集成来自多个医疗数据源的各种类型的数据,包括临床数据、基因组学数据、传感器数据等。这些数据可以以原始形式存储在数据湖中,而无需预定义的结构或转换。
弹性和可扩展性:数据湖具备弹性和可扩展性,可以容纳大量的数据。在医疗领域中,随着数据规模的增长,数据湖可以轻松地扩展以适应不断增加的数据量。
多样化的数据处理:数据湖允许以多种方式处理数据,包括批处理、流处理和交互式查询。这种灵活性使医疗专业人员能够根据需要进行数据分析和挖掘,以获得对患者和疾病的深入洞察。
数据探索和发现:数据湖提供了一个探索和发现数据的平台。医疗研究人员可以在数据湖中进行自助式探索,探索不同数据源之间的关联、发现新的研究领域,并进行实验性的分析和建模。
安全和隐私:数据湖可以提供安全的数据访问和隐私保护机制。医疗机构可以实施适当的访问控制和数据加密策略,确保敏感的医疗数据得到保护。
通过这些特性,数据湖在医疗领域中可以支持医疗决策、个性化医疗、健康监测、资源管理和疫情控制等应用。医疗专业人员和研究人员可以从数据湖中获得更全面、深入的数据视图,为改善医疗质量、提供个性化治疗和推动医疗创新做出贡献。
数据湖技术选型
目前市面上流行的三大开源数据湖方案分别为:delta、Apache Iceberg和Apache Hudi。
Delta Lake是DataBricks公司开源的、用于构建湖仓架构的存储框架。能够支持Spark,Flink,Hive,PrestoDB,Trino等查询/计算引擎。作为一个开放格式的存储层,它在提供了批流一体的同时,为湖仓架构提供可靠的,安全的,高性能的保证。
Apache Hudi是由Uber的工程师为满足其内部数据分析的需求而设计的数据湖项目,它提供的fast upsert/delete以及compaction等功能可以说是精准命中广大人民群众的痛点,加上项目各成员积极地社区建设,包括技术细节分享、国内社区推广等等,也在逐步地吸引潜在用户的目光。
Apache Iceberg是一种开放的数据湖表格式。可以简单理解为是基于计算层(Flink,Spark)和存储层(ORC,Parqurt,Avro)的一个中间层,用Flink或者Spark将数据写入Iceberg,然后再通过其他方式来读取这个表,比如Spark,Flink,Presto等。
ACID和隔离级别支持
Serialization是说所有的reader和writer都必须串行执行;
Write Serialization:是说多个writer必须严格串行,reader和writer之间则可以同时跑;
Snapshot Isolation:是说如果多个writer写的数据无交集,则可以并发执行;否则只能串行。Reader和writer可以同时跑。
Schema变更支持和设计
这里有两个对比项,一个是schema变更的支持情况,hudi仅支持添加可选列和删除列这种向后兼容的DDL操作,而其他方案则没有这个限制。另外一个是数据湖是否自定义schema接口,以期跟计算引擎的schema解耦。这里iceberg是做的比较好的,抽象了自己的schema,不绑定任何计算引擎层面的schema。
流批接口支持
Hive暂时不支持Spark Streaming消费。
社区活跃度
为什么选择Iceberg?
构建大数据生态的过程中遇到了几个痛点,而Iceberg恰好能解决这几个痛点:
T+0的数据落地和处理,传统的数据处理流程从数据入库到数据处理通常需要一个较长的环节、涉及许多复杂的逻辑来保证数据的一致性,Iceberg的ACID特性保证了数据写入的原子性和一致性,确保数据的完整性和准确性。
降低数据修正的成本,使用传统的Hive或Spark进行数据修正时,需要多次读写数据,导致高昂的修正成本。而Iceberg具有修改和删除能力,可以降低开销,提高效率。Iceberg的修改和删除操作是原子的,仅处理需要修改的数据,避免了全量数据读写。
至于为何最终选择采用Iceberg,而不是其他两个开源项目,技术方面的考量主要有以下几点:
Iceberg的架构和实现与特定计算引擎解耦,它采用通用的数据组织格式。这使得Iceberg可以轻松地与不同计算引擎(例如Flink、Hive、Spark)集成,对于内部数据处理流程的衔接至关重要。
良好的架构和开放的格式,相比于Hudi、Delta Lake,Iceberg的架构实现更为优雅,同时对于数据格式、类型系统有完备的定义和可进化的设计。
Iceberg针对对象存储的特性进行了优化,避免了耗时的listing和rename操作,这使得Iceberg在与对象存储相结合时能够更加高效地运行,提升了整体性能和数据处理的效率。
在国内Iceberg的推广不断增加,并且国内开发者对这个项目的投入和运营也在增加,这为Iceberg在国内的前景带来很大希望。国内市场的发展和国内公司的参与将进一步推动Iceberg的发展和应用。
奇点数联作为一家医疗大数据公司,在医疗领域扮演着重要的角色,正在利用Iceberg的实践和技术优势,为医疗行业做出贡献,通过数据分析和人工智能等技术,提供前沿创新的解决方案,提高医疗服务的效率和质量,为患者和医护人员提供更好的支持和体验。