news 2026/9/24 0:41:24

如何通过 REST API 暴露 Delta 表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何通过 REST API 暴露 Delta 表

原文:towardsdatascience.com/how-to-expose-delta-tables-via-rest-apis-53b4dd7afa4e?source=collection_archive---------0-----------------------#2024-05-06

三种架构讨论并测试用于服务 Delta 表

https://rebremer.medium.com/?source=post_page---byline--53b4dd7afa4e--------------------------------https://towardsdatascience.com/?source=post_page---byline--53b4dd7afa4e-------------------------------- René Bremer

·发布于 Towards Data Science ·7 分钟阅读·2024 年 5 月 6 日

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1c9e1d23ea5b1cf0a55e7475f13b53a9.png

通过内外数据暴露——图片由 Joshua Sortino on Unsplash 提供

1. 引言

金奖架构 中的 Delta 表通常用于创建数据产品。这些数据产品用于数据科学、数据分析和报告。然而,一个常见的问题是如何通过 REST API 暴露数据产品。这个想法是将这些 API 嵌入具有更严格性能要求的 Web 应用程序中。以下是一些重要问题:

为了深入探讨这些问题,评估了三种架构,如下所示:架构 A——API 中的库,架构 B——计算层,架构 C——存储层。请参阅下图。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/4660f725419bf5d6260407749ecb8d6f.png

三种架构用于暴露 Delta 表——图片由作者提供

在博客文章的其余部分中,将描述、部署和测试这三种架构。然后得出结论。

2. 架构描述

2.1 架构 A:使用 DuckDB 和 PyArrow 的 API 中的库

在此架构中,API 直接连接到 delta 表,中间没有计算层。这意味着数据通过 API 本身的内存和计算进行分析。为了提高性能,使用了嵌入式数据库 DuckDB和PyArrow的 Python 库。这些库确保只加载相关的数据(例如,只加载 API 所需的列)。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/60464d2733670c853ce8caa4d24451df.png

架构 A:API 中的库 — 作者提供的图像

这种架构的优点是数据不需要复制,并且 API 和 delta 表之间不需要中间层。这意味着移动部件更少。

这种架构的缺点是它更难扩展,所有的工作都需要在 API 本身的计算和内存中完成。如果需要分析大量数据,这尤其具有挑战性。这些数据可能来自大量记录、大量列和/或大量并发请求。

2.2 架构 B:使用 Synapse、Databricks 或 Fabric 的计算层

在此架构中,API 连接到计算层,而不是直接连接到 delta 表。计算层从 delta 表中获取数据并进行分析。计算层可以是Azure Synapse、Azure Databricks或Microsoft Fabric,并且通常能够很好地扩展。数据不会复制到计算层,但可以在计算层应用缓存。在本文的剩余部分中,测试使用了Synapse 无服务器。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/dfc98b85a7d99735689388832e72f6e6.png

架构 B:计算层 — 作者提供的图像

这种架构的优点是数据不需要复制,架构能够很好地扩展。此外,它可以用于处理大数据集。

这种架构的缺点是需要在 API 和 delta 表之间添加一个额外的层。这意味着需要维护和保护更多的移动部件。

2.3 架构 C:使用 Azure SQL 或 Cosmos DB 的优化存储层

在此架构中,API 不是连接到 delta 表,而是连接到另一个存储层,在该存储层中,delta 表被复制。不同的存储层可以是 Azure SQL 或 Cosmos DB。存储层可以针对快速检索数据进行优化。本文的其余部分中,测试使用了 Azure SQL。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/84a687b97eb88e5346449d5e6a4704fb.png

架构 C:优化存储层 — 作者提供的图像

这种架构的优点是存储层可以通过使用索引、分区和物化视图来优化数据读取速度。这通常是请求-响应型 Web 应用场景中的需求。

这种架构的缺点是需要对数据进行重复存储,并且在 API 和 Delta 表之间需要一个额外的层。这意味着需要维护和保护更多的组件。

在接下来的博客中,将部署和测试这些架构。

3. 部署和测试架构

3.1 部署架构

为了部署这些架构,创建了一个 GitHub 项目,该项目部署了前一章中讨论的三种解决方案。该项目可以通过以下链接找到:

https://github.com/rebremer/expose-deltatable-via-restapi

执行 GitHub 项目时将部署以下内容:

一旦部署完成,就可以执行测试。测试将在下一个段落中描述。

3.2 测试架构

为了测试架构,将应用不同类型的查询和不同的扩展方式。不同类型的查询可以描述如下:

以下是查询的示例。

--Query1:Point look up11columns without large texts SELECT SaleKey,TaxAmount,CityKey,CustomerKey,BillToCustomerKey,SalespersonKey,DeliveryDateKey,Package FROM silver_fact_sale WHERE CityKey=41749andSalespersonKey=40andCustomerKey=397andTaxAmount>20--Query2:Description columnwithmore than500characters SELECT SaleKey,Description FROM silver_fact_sale WHERE CityKey=41749andSalespersonKey=40andCustomerKey=397andTaxAmount>20--Query3:Aggregation SELECT MAX(DeliveryDateKey),CityKey,AVG(TaxAmount)FROM silver_fact_sale GROUP BY CityKey HAVING COUNT(CityKey)>10

扩展性可以描述如下:

下一段将描述结果。

3.3 结果

部署并测试架构后,可以获得结果。这是结果的总结:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/0881c24c646ce4ade82355446a0f7a03.png

测试结果总结

架构 A 不能使用 SKU B1 部署。如果使用 SKU P1V3,则在列大小不太大的情况下,结果可以在 15 秒内计算出来。请注意,所有数据都在 API 应用服务计划中进行分析。如果加载了过多数据(无论是通过很多行、大列和/或大量并发请求),这个架构将难以扩展。

使用 Synapse Serverless 的架构 B 在 10 到 15 秒内完成计算。计算在自动扩展的 Synapse Serverless 上进行,用于提取和分析数据。所有三种类型的查询的性能是一致的。

使用 Azure SQL 的架构 C 在创建索引时表现最佳。对于查询 1 和查询 2,API 的响应时间大约为 1 秒。查询 3 需要进行全表扫描,其性能与其他解决方案相当。

3. 结论

Medallion 架构中的 Delta 表通常用于创建数据产品。这些数据产品用于数据科学、数据分析和报告。然而,一个常见的问题是如何通过 REST API 暴露 delta 表。在这篇博客中,描述了三种架构及其优缺点。

架构 A:使用 DuckDB 和 PyArrow 的 API 中的库。在这个架构中,API 直接连接到 delta 表,并且中间没有任何层级。这意味着所有的数据都在 Azure Function 的内存和计算中进行分析。

架构 B:使用 Synapse、Databricks 或 Fabric 的计算层。在这个架构中,API 连接到计算层。这个计算层从 delta 表中提取和分析数据。

架构 C:使用 Azure SQL 或 Cosmos DB 的优化存储层

在这个架构中,API 连接到一个优化过的存储层。Delta 表预先复制到这个存储层,并且该存储层用于提取和分析数据。

不幸的是,并没有一种“灵丹妙药”式的解决方案。本文旨在为通过 REST API 暴露增量表选择最佳架构提供指导。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 10:22:07

【计算机毕业设计案例】基于springboot+vue的医院综合管理系统实现与设计基于SpringBoot+Vue技术的医院运营管理系统的设计与实现(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/9/20 17:16:19

Spring Boot自动配置

Spring Boot自动配置 一、核心思想与目标 自动配置是Spring Boot的基石,其核心目标是:根据项目中引入的依赖(JAR包)和预设的配置,自动、智能地组装和配置Spring应用所需的Bean,实现 “约定大于配置” &am…

作者头像 李华
网站建设 2026/9/20 17:22:27

微信小程序体育球馆场地租赁商城系统

文章目录 具体实现截图主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 具体实现截图 本系统(程序源码数据库调试部署讲解)带文档1…

作者头像 李华
网站建设 2026/9/20 17:22:29

挑战篇-02-认识一个AI模型聚合平台

AI 模型聚合平台 主打让普通用户方便用用各种大模型。 聊天,写东西,问知识切换模型就能体验不同的AI能力。 不用挨个网站去注册。 头部的AI模型聚合平台, 就比如 POE 官网如下 https://poe.com/ 用户量多, 模型也全, 像…

作者头像 李华
网站建设 2026/9/20 17:20:52

Dockerfile

目录 前言: 一,Dockerfile 核心理论 1.1、Docker 镜像的分层架构:Dockerfile 的设计基石 1.2、Dockerfile 的构建上下文:指令的作用范围 1.3、Dockerfile 指令的深层执行逻辑 1.3.1. 基础镜像指令:FROM 与 ARG 的…

作者头像 李华
网站建设 2026/9/20 17:55:18

18.0环实现线程和进程的监控(ObRegisterCallbacks函数)-Windows驱动

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:17.过保护读内存(通过内核(驱动)apc的方式附…

作者头像 李华