Delta Lake调研:Delta Lake是什么【2】Lakehouse和data warehouse、data lake的区别

本文对比了DataWarehouse、DataLake和DeltaLake(Lakehouse)的特性,探讨了数据仓库的四层结构,强调了数据湖的灵活性以及DeltaLake作为Lakehouse实现的高管理性能。DeltaLake在云对象存储上的应用,结合了数据仓库的强一致性和数据湖的灵活性,解决了数据质量和实时性问题,为企业数据分析提供了高效解决方案。

在这里插入图片描述

Delta Lake是一个基于云对象存储的表存储工具,它实现了lakehouse的构想。Delta Lake可以解决工业领域数据产生,获取,分析等涵盖企业数据分析场景下,数据生命周期内的所有问题,因而有着广阔的使用前景。

在之前的博客Delta Lake调研:Delta Lake是什么
中介绍了Delta Lake: High-Performance ACID Table Storage over Cloud Object Stores中对于Delta Lake工具的介绍。Delta Lake部分实现了Lakehouse构想。本篇博客将对比Lakehouse和data warehouse以及data lake的区别进一步介绍Delta Lake。通过对比Lakehouse和二者的关系,可以了解Delta Lake有什么优势。

Data Warehouse

数据仓库的提出晚于大部分人所熟知的数据库,它同样是数据存储的地方。只不过与数据库面向业务的特性相比,数据仓库存储的数据面向比业务更粗粒度的主题,处理的任务偏向数据分析而并非数据操作。解决问题不同是数据库与数据仓库之间最大的区别。

例如当用户登陆淘宝时,用户输入的用户账号和密码会与后台数据库存储的数据进行比对,当结果匹配时,则用户可以正常登录淘宝,否则就不能。这里举的例子就是数据库的经典使用场景。数据库大多针对OLTP提出。

数据仓库的使用者大多是分析数据的BI users,多用于对大量数据进行数据分析这是与数据库的一个重要区别。

数据仓库的数据分四层存储,分别是ODS层(Operational Data Store),PDW层(Personal Data Warehouse),DM层(Data Marts)和APP层(Application)。其中ODS层负责存储未经处理的原始数据

Data Warehouse的四层结构

ODS
ODS层存储细节数据,是datawarehouse中最接近数据源的一层。数据源中的数据经过ETL操作(Extract抽取、Transform转换、Load加载)后进入本层。ODS层的数据是定义统一的,可以体现历史的,被长期保存的。这一层的数据一般不做过多去躁处理,且数据的分类多基于业务逻辑。
PDW
PDW层是基础指标层,经过初步处理生成的ODS层数据在PDW层进行主题汇总。这一层同时创建各个主题包含哪些属性。

PDW中的数据需要定期进行质量审核,保证权威准确;DW中的数据只允许增加,不允许删除和修改。这一层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。这一层的数据一般是遵循数据库第三范式的,其数据粒度通常和ODS的粒度相同。在PDW层会保存BI系统中所有的历史数据,例如保存10年的数据。
DM
DM层以某个业务应用为出发点而建设的局部PDW。DM只关心自己需要的数据,不会全量考虑企业整体数据架构和应用,每个应用有自己的DM。 数据集市就是满足特定的部门或者用户的需求,按照多维的方式
进行存储,包括定义维度、需要计算的指标、维度的层次等,生成面向决策分析需求的数据立方体(data cube)。

这层数据是面向主题来组织数据的,通常是星形或雪花结构的数据。从数据粒度来说,这层的数据是轻度汇总级的数据,已经不存在明细数据了。从数据的时间跨度来说,通常是 DW 层的一部分,主要的目的是为
了满足用户分析的需求,而从分析的角度来说,用户通常只需要分析近几年(如近三年的数据)的即可。
从数据的广度来说,仍然覆盖了所有业务数据。一个星型结构包含两个基本部分:一个事实表和各种支持维表。
APP
APP层直接面对数据分析者,因而需要着一层的数据是干净且高度结构化的。这一层的数据最终可以导入到数据库中以备分析使用。

Data Lake

数据湖与数据仓库不同,它可以存储来自业务线应用的关系数据以及来自移动应用程序、loT设备和社交媒体的非关系数据。数据湖可以存储的数据种类相较于数据仓库会更为丰富。在向数据湖存入数据时,无需定义数据结构和数据模式,因而也无需对未来用这份数

<think>我们正在讨论的是三种不同的数据访问处理技术:DAO(数据访问对象)、Lake House(湖仓一体)VBA Query(VBA中的查询)。这三者属于不同的领域层次,我将从概念、应用场景区别三个方面进行对比分析。 ## 1. 概念定义 ### (1) DAO (Data Access Object) - **定义**:DAO是一种设计模式,用于抽象封装对数据源(如数据库)的访问。它提供了一组接口方法,使应用程序能够在不暴露底层数据细节的情况下执行CRUD操作(创建、读取、更新、删除)[^1]。 - **特点**: - 通常用于关系型数据库(如Access、SQL Server) - 在VBA中,DAO通过`Microsoft DAO x.x Object Library`实现 - 核心对象包括`Database`、`Recordset`、`QueryDef`等 ### (2) Lake House (湖仓一体) - **定义**:Lake House是一种现代数据架构,结合了数据湖(Data Lake数据仓库(Data Warehouse)的优势。它允许在同一个存储层上处理结构化、半结构化非结构化数据,同时支持事务处理、BI分析机器学习[^2]。 - **特点**: - 基于云存储(如AWS S3、Azure ADLS) - 使用Delta Lake、Apache Iceberg等开源格式实现ACID事务 - 支持SQL查询、流处理高级分析 ### (3) VBA Query - **定义**:VBA Query指在VBA(Visual Basic for Applications)中执行的数据查询操作,通常通过以下方式实现: - DAO或ADO的SQL查询 - Excel原生方法(如`Range.QueryTable`) - 直接操作Excel对象模型(如`AutoFilter`) - **特点**: - 主要用于Excel、Access等Office应用 - 查询范围限于本地文件或连接的数据库 - 语法基于VBASQL的混合 ## 2. 核心区别对比 | **维度** | **DAO** | **Lake House** | **VBA Query** | |------------------|----------------------------------|-----------------------------------|-----------------------------| | **应用层级** | 应用程序数据访问层 | 企业级数据基础设施 | 办公自动化脚本层 | | **数据规模** | 中小型(GB级以下) | 大型(TB/PB级) | 小型(Excel工作表级) | | **数据类型** | 结构化数据 | 结构化+半结构化+非结构化 | 主要为结构化数据 | | **典型场景** | Access数据库操作 | 数据分析湖、实时仪表盘 | Excel报表自动化 | | **事务支持** | 支持 | 通过Delta Lake等实现ACID | 有限支持(依赖宿主应用) | | **并发能力** | 弱(文件级锁) | 强(分布式处理) | 无(单线程执行) | | **技术生态** | Office/VBA | Spark/Flink/Presto等大数据组件 | VBA/COM | ## 3. 典型代码示例 ### (1) DAO 查询示例(VBA) ```vba Sub DAOQuery() Dim db As Database Dim rs As Recordset Set db = OpenDatabase("C:\Northwind.mdb") Set rs = db.OpenRecordset("SELECT * FROM Orders WHERE Year([OrderDate]) = 1998") ' 结果输出到Excel Sheet1.Range("A1").CopyFromRecordset rs rs.Close db.Close End Sub ``` ### (2) Lake House 查询示例(PySpark) ```python from pyspark.sql import SparkSession spark = SparkSession.builder.appName("LakeHouseQuery").getOrCreate() df = spark.read.format("delta").load("s3a://lakehouse/sales") df.createOrReplaceTempView("sales") result = spark.sql(""" SELECT product_id, SUM(amount) FROM sales WHERE year=2023 GROUP BY product_id """) result.show() ``` ### (3) VBA QueryTable 示例 ```vba Sub ExcelWebQuery() With Sheet1.QueryTables.Add( _ Connection:="URL;https://api.example.com/data.csv", _ Destination:=Range("A1")) .RefreshStyle = xlOverwriteCells .Refresh End With End Sub ``` ## 4. 适用场景选择建议 - **选择DAO**: 当需要操作本地Access数据库或小型关系数据库,且需求涉及复杂事务时。 - **选择Lake House**: 当处理海量多源异构数据,并需要同时支持实时分析机器学习时。 - **选择VBA Query**: 当在Excel/Access中快速实现简单数据提取报表自动化时。 > 注:在现代化数据架构中,Lake House正逐渐取代传统数据仓库,而VBADAO主要用于遗留系统维护[^3]。 --- ### §§ 相关问题 §§ 1. DAOADO在VBA中的主要区别是什么? 2. 如何将Excel VBA的数据处理迁移到Lake House架构? 3. Delta Lake是如何实现ACID事务的? 4. VBA Query能否直接连接云数据库(如Azure SQL)? [^1]: VBA DAO技术手册, Microsoft Docs [^2]: Lake House架构白皮书, Databricks [^3]: 现代数据栈演进分析, Gartner 2023 </think>以下是DAO(数据访问对象)、Lake House(湖仓一体)与VBA Query三种技术的核心区别对比分析: --- ### **1. 本质定位差异** | **技术** | **层级** | **核心功能** | |-----------------|--------------------|---------------------------------------------| | **DAO** | 应用程序层 | 提供对象化接口访问数据库(如Access, SQL Server) | | **Lake House** | 大数据架构层 | 统一数据湖+数仓能力,支持结构化/非结构化数据处理 | | **VBA Query** | Office应用层 | 在Excel/Access内执行SQL查询或数据导入操作 | > 示例: > - DAO通过`Recordset`对象操作数据库记录[^1] > - Lake House通过Spark引擎处理PB级数据[^2] > - VBA Query使用`DoCmd.RunSQL`执行本地查询 --- ### **2. 数据处理能力对比** #### **(1) 数据规模** $$ \begin{cases} \text{DAO} & \text{(GB级)} \\ \text{VBA Query} & \text{(MB~GB级)} \\ \text{Lake House} & \text{(TB~PB级)} \end{cases} $$ #### **(2) 数据类型支持** | 技术 | 结构化数据 | 半结构化数据 | 非结构化数据 | |--------------|-----------|-------------|------------| | DAO | ✓ | △ | ✗ | | VBA Query | ✓ | △ | ✗ | | Lake House | ✓ | ✓ | ✓ | > 注:Lake House可原生处理JSON/Parquet/图像等格式[^3] --- ### **3. 核心技术栈** ```mermaid graph LR A[Lake House] --> B(Delta Lake) A --> C(Spark/Flink) A --> D(Iceberg/Hudi) E[DAO] --> F(ODBC/JDBC) E --> G(COM对象模型) H[VBA Query] --> I(Excel QueryTables) H --> J(Access SQL) ``` --- ### **4. 典型应用场景** | **场景** | 推荐技术 | 原因 | |-------------------------|---------------|------------------------------------------| | Excel内处理本地数据库 | VBA Query | 无需外部依赖,直接操作Excel对象模型 | | 企业级关系数据库开发 | DAO | 支持事务处理复杂SQL操作 | | 海量数据分析+ML训练 | Lake House | 分布式计算,统一批流处理 | | 实时报表生成 | DAO+VBA混合 | 快速提取DB数据到Excel | > **混合用例**: > 用Lake House清洗数据 → DAO写入SQL Server → VBA Query生成Excel报表 > $$ \text{Data Pipeline} = \text{Lake House} \xrightarrow{\text{ETL}} \text{DAO} \xrightarrow{\text{Export}} \text{VBA} $$ --- ### **5. 性能关键指标对比** | **维度** | DAO | VBA Query | Lake House | |---------------|-------------|-------------|-----------------| | 延迟 | 10~100ms | 100ms~2s | 分钟级(批)/秒级(流) | | 并发能力 | 数十连接 | 单线程 | 数千节点 | | 扩展性 | 垂直扩展 | 不可扩展 | 水平扩展 | --- ### **6. 演进关系** ```math \text{早期单机方案} \xrightarrow{\text{数据量增长}} \begin{cases} \text{VBA Query} \\ \downarrow \\ \text{DAO} \\ \downarrow \quad \searrow \\ \text{传统数仓} \rightarrow \boxed{\text{Lake House}} \end{cases} ``` > DAO/VBA仍适用于轻量级场景,Lake House解决大数据场景痛点[^4] --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值