Snowflake 集成模式:Apache Kafka 与零 ETL 和反向 ETL

Snowflake 是领先的云原生数据仓库。集成模式包括批量数据集成、零 ETL 和使用 Apache Kafka 的近乎实时的数据摄取。这篇博文探讨了不同的方法,并发现了它们的利弊。根据行业建议,建议避免使用反向 ETL 等反模式,而是使用数据流来增强企业架构的灵活性、可扩展性和可维护性。

edde2962eb42769cba0195207e531547.png

博客系列:Snowflake 和 Apache Kafka

Snowflake 是领先的云原生数据仓库。它的可用性和可扩展性使其成为数千家公司普遍使用的数据平台。本博客系列探讨了不同的数据集成和引入选项,包括传统的 ETL/iPaaS 和使用 Apache Kafka 的数据流。讨论内容包括为什么点对点零 ETL 只是短期的胜利,为什么反向 ETL 是实时用例的反模式,以及 Kappa 架构和将数据处理“向左”转移到流层有助于以可靠且经济高效的方式构建事务和分析实时和批量用例。

Snowflake:从云原生数据仓库过渡到万物数据云

Snowflake 是领先的基于云的数据仓库平台 (CDW),使组织能够以可扩展且高效的方式存储和分析大量数据。它与 Amazon Web Services (AWS)、Microsoft Azure 和 Google Cloud Platform (GCP) 等云提供商合作。Snowflake 提供完全托管的多集群、多租户架构,使用户能够轻松扩展和管理其数据存储和处理需求。

起源:云数据仓库

Snowflake 提供了一种灵活且可扩展的解决方案,用于在云环境中管理和分析大型数据集。它因其易用性、性能以及通过计算和存储分离处理各种工作负载的能力而广受欢迎。

547d9b3f025ca3b13a29f25757d799d0.png

来源:雪花

报告和分析是主要的用例。

Snowflake 以其简单性和易用性而享有盛誉。它使用 SQL 进行查询,使具有 SQL 技能的用户熟悉它。该平台抽象了传统数据仓库的许多复杂性,从而缩短了学习曲线。

未来:一个“数据云”覆盖一切?

Snowflake 不仅仅是一个数据仓库。产品创新和几次收购加强了产品组合。几家被收购的公司专注于与数据管理领域相关的不同主题,包括搜索、隐私、数据工程、生成式人工智能等。该公司过渡到“数据云”(这是 Snowflake 当前的营销术语)。

引用Snowflake的网站:“数据云是一个全球网络,它将组织连接到对其业务最关键的数据和应用程序。数据云实现了广泛的可能性,从打破组织内部的孤岛到与合作伙伴和客户就内容进行协作,甚至集成外部数据和应用程序以获得新的见解。为数据云提供支持的是 Snowflake 的单一平台。其独特的架构将全球企业连接起来,几乎以任何规模将数据和工作负载整合在一起。

4220e0eee2b593bfb2e2ffcb95be8e8e.png

来源:雪花

好吧,我们将看到未来会带来什么。如今,Snowflake的主要用例是云数据仓库,类似于SAP专注于ERP或数据湖和ML/AI上的Databricks。当一家公司试图在单一平台内解决每个问题和用例时,我总是持怀疑态度。从技术和成本的角度来看,一项技术在某些用例中具有最佳优势,但从技术和成本角度来看,会给其他用例带来权衡。

Snowflake 权衡:仅限云、成本等

虽然 Snowflake 是一个功能强大且广泛使用的数据云原生平台,但重要的是要考虑一些潜在的缺点:

  • 成本:虽然 Snowflake 的架构允许可扩展性和灵活性,但它也可能导致成本可能高于预期。用户应仔细管理和监控其资源消耗,以避免意外开支。一次又一次地“DBT”所有处于静止状态的数据集会显著增加 TCO。

  • 仅限云: 本地和混合架构是不可能的。作为一项基于云的服务,Snowflake 依赖于稳定快速的互联网连接。在互联网连接不可靠或速度缓慢的情况下,用户在访问和处理其数据时可能会遇到困难。

  • 静态数据:移动大量数据并重复处理这些数据非常耗时、占用大量带宽且成本高昂。这有时被称为“数据引力”问题,由于物理限制,快速移动大型数据集变得具有挑战性。

  • 分析:Snowflake 最初是作为云数据仓库开始的。它从来都不是为运营用例而构建的。为有关 SLA、延迟、可扩展性和功能的工作选择正确的工具。没有一个多面手。

  • 定制限制:虽然 Snowflake 提供了广泛的功能,但在某些情况下,用户可能需要高度专业化或自定义配置,而这些配置在平台内不容易实现。

  • 第三方工具集成:尽管 Snowflake 支持各种数据集成工具并提供自己的市场,但在某些情况下,特定的第三方工具或应用程序可能未完全集成,或者至少未针对 Snowflake 进行优化。

这些权衡表明了为什么许多企业(必须)将 Snowflake 与其他技术和 SaaS 相结合,以构建可扩展但具有成本效益的企业架构。虽然上述所有权衡都是显而易见的,但随着数据集和分析查询的增长,成本问题是我最近从客户那里听到的明显头号问题。

Snowflake 集成模式

如今,每个中间件都提供了一个 Snowflake 连接器,因为它在市场上占有一席之地。让我们来探讨一下不同的集成选项:

  1. 与 ETL、ESB 或 iPaaS 的传统数据集成

  2. 数据仓库中的 ELT

  3. 使用专用产品进行反向 ETL

  4. 数据流(通常通过行业标准的 Apache Kafka)

  5. 通过直接可配置的点对点连接实现零 ETL

1. 传统数据集成:ETL、ESB、iPaaS

ETL 是大多数人考虑与数据仓库集成的方式。企业在几十年前就开始采用 Informatica 和 Teradata。方法今天仍然是一样的:

27ad08814913b4cc2a56b12e28a0f86d.png

ETL 在过去意味着批处理。ESB(企业服务总线)通常允许近乎实时的集成(如果数据仓库能够做到这一点),但由于底层 API(= HTTP/REST)或消息代理基础设施,存在可扩展性问题。

iPaaS(集成平台即服务)与 ESB 非常相似,通常来自相同的供应商,但在公共云中提供完全托管的服务。通常不是云原生的,而是刚刚部署在 Amazon EC2 实例中(所谓的传统中间件的云清洗)。

2. ELT:数据仓库内的数据处理

许多 Snowflake 用户实际上只摄取原始数据集,并在数据仓库中进行所有转换和处理。

58a496c24d17c36eb01984cacb6b333b.png

DBT 是大多数数据工程师最喜欢的工具。这个简单的工具使简单的 SQL 查询能够直接执行,从而一次又一次地重新处理静态数据。虽然 ELT 方法对于数据工程师来说非常直观,但对于支付 Snowflake 账单的业务部门来说,它的成本非常高。

3. 反向 ETL:“实时批处理”——什么?!

顾名思义,反向 ETL 将 ETL 的故事发生了逆转。这意味着将数据从云数据仓库移动到第三方系统中,以“使数据具有可操作性”,正如这些解决方案的营销所说:

499ff16b4b788019bae0148bf05d1da6.png

不幸的是,反向 ETL 是一个巨大的 ANTI-PATTERN 来构建实时用例。而且它不具有成本效益。

如果将数据存储在数据仓库或数据湖中,则无法再实时处理数据,因为它已经是静态存储的。这些数据存储是为索引、搜索、批处理、报告、模型训练以及在存储系统中有意义的其他用例而构建的。但是,您无法从静态存储中实时使用动态数据:

f14939d0e4688821b888826b88831b14.png

相反,请考虑仅将(正确的)数据输入数据仓库以进行报告和分析。实时用例只能在实时平台(如 ESB 或数据流平台)中运行。

4. 数据流:Apache Kafka 实现实时和批量,数据一致性

数据流是一个相对较新的软件类别。它结合了:

  • 针对分析和运营工作负载的大规模实时消息传递。

  • 一个事件存储,用于长期持久化,真正实现生产者和消费者的解耦,以及历史数据在保证顺序上的可重放性。

  • 大规模实时数据集成。

  • 用于实时和历史数据的无状态或有状态数据关联的流处理。

  • 数据治理,实现整个数据流的端到端可见性和可观察性

事实上的数据流标准是 Apache Kafka。

Apache Flink 正在成为流处理的事实标准,但 Kafka Streams 是另一个优秀且被广泛采用的 Kafka 原生库。

0ec9cca3306e8f45465a1d853c99df48.png

2023 年 12 月,研究公司 Forrester 发布了《The Forrester Wave™: Streaming Data Platforms, Q4 2023》。在此处免费获取报告。该报告探讨了 Confluent 和 AWS、Microsoft、Google、Oracle 和 Cloudera 等其他供应商提供的功能。同样,2024 年 4 月,IDC 发布了 IDC MarketScape for Worldwide Analytic Stream Processing 2024。

与批处理相比,数据流在从技术角度来看合适的地方或增加业务价值的地方支持实时数据处理。但数据流也连接到非实时系统,如Snowflake,用于报告和批量分析。

e7320ff2b4152c58dfc0ab51629db1b0.png

Kafka Connect 是开源 Kafka 的一部分。它无需额外的 ETL 工具即可大规模实时提供数据集成功能。流式处理系统(如 IoT 或其他消息代理)的本机连接器和从 Oracle 或 Salesforce CRM 等数据库使用的变更数据捕获 (CDC) 连接器将更改作为事件实时推送到 Kafka 中。

5. 零 ETL:点对点集成和意大利面条架构

零 ETL 是指一种数据处理方法。ETL 过程被最小化或消除。如上文所述,传统的 ETL 过程涉及从各种来源提取数据,将其转换为可用格式,并将其加载到数据仓库或数据湖中。

在零 ETL 方法中,数据以原始形式直接从数据源引入到数据湖中,而无需预先进行大量转换。然后,这些原始数据以其原生格式可用于分析和处理,使组织能够根据需要或实时执行转换和分析。通过消除或最小化传统的 ETL 管道,组织可以减少数据处理延迟,简化数据集成,并更快地获得见解和做出决策。

从 Salesforce CRM 到 Snowflake 的零 ETL

一个具体的 Snowflake 示例是与 Salesforce 的双向集成和数据共享。GA'ed 的功能最近实现了“零 ETL 数据共享创新,可减少摩擦并使组织能够在销售、服务、营销和商务应用程序中快速呈现强大的洞察力”。

到目前为止,理论。如果这个集成模式听起来很神奇,为什么我把这个集成模式放在最后而不是放在我的列表中的第一位?

7e8ce35b9d1a9ff7ab6e4eabd8cd3cec.png

意大利面条架构:集成和数据混乱

几十年来,您可以使用 CORBA、SOAP、REST/HTTP 和许多其他技术进行点对点集成。结果是意大利面条式建筑:

488c4379d67be7a215da74d739006894.png

来源:Confluent

在意大利面式架构中,代码依赖项通常以一种方式纠缠在一起并相互连接,这使得在不产生意外后果的情况下进行更改或添加新功能变得具有挑战性。这可能是由于糟糕的设计实践、缺乏文档或技术债务的逐渐积累造成的。

意大利面条建筑的后果包括:

  1. 维护挑战:开发人员很难在不引入错误或意外副作用的情况下理解和修改代码库。

  2. 可扩展性问题:架构可能难以适应需求的增长或变化,从而导致性能瓶颈或不稳定。

  3. 缺乏敏捷性:对系统的更改变得缓慢而繁琐,从而抑制了组织对不断变化的业务需求或市场需求做出快速响应的能力。

  4. 更高的风险:架构的复杂性和脆弱性增加了软件错误、系统故障和安全漏洞的风险。

因此,如果您关心公司在数据一致性、上市时间和成本效益方面的中期和长期成功,请不要构建零代码点对点意大利面条架构。

Snowflake 和 Kafka 集成模式的短期和长期影响

使用 Snowflake 的零 ETL 听起来很有吸引力。但前提是您需要点对点连接。大多数信息在许多应用程序中都与此相关。使用 Apache Kafka 的数据流可实现真正的解耦。仅引入一次事件,并独立地从具有不同通信模式(实时、批处理、请求-响应)的多个下游应用程序使用。多年来,这在遗留集成中一直是一种常见的模式,例如,大型机卸载。Snowflake 很少是数据的唯一端点。

仅当您使用哑管道(Kafka、ETL 工具、零 ETL 或任何其他代码)将数据引入到单个数据仓库或数据湖(如 Snowflake)时,才需要反向 ETL 模式。Apache Kafka 允许您避免 Revere ETL。它使架构更具性能、可扩展性和灵活性。有时,由于组织或历史原因,反向 ETL 是无法避免的。没关系。但是,不要设计一个企业架构,在其中摄取数据只是为了以后逆转它。大多数时候,反向 ETL 是一种反模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/387200.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL基础练习题12-使用唯一标识码替换员工ID

题目:展示每位用户的 唯一标识码(unique ID );如果某位员工没有唯一标识码,使用 null 填充即可。 准备数据 分析数据 题目:展示每位用户的 唯一标识码(unique ID );如果…

Vue2从基础到实战(指令篇)

案例&#xff1a;动态切换图片 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Vue.js 示例</ti…

划重点!「2024观测云发布会」亮点速览

在刚刚落幕的「2024观测云发布会」上&#xff0c;CEO蒋烁淼及其团队以「ENDLESS EVOLUTION」为主题&#xff0c;向大家展示了观测云近两年的革新之旅。不仅深入回顾了观测云在产品创新、技术突破上的持续追求&#xff0c;更以远见卓识&#xff0c;描绘了一幅充满潜力与创新的未…

ChatGPT小狐狸AI付费创作系统v3.0.3+前端

小狐狸GPT付费体验系统的开发基于国外很火的ChatGPT&#xff0c;这是一种基于人工智能技术的问答系统&#xff0c;可以实现智能回答用户提出的问题。相比传统的问答系统&#xff0c;ChatGPT可以更加准确地理解用户的意图&#xff0c;提供更加精准的答案。同时&#xff0c;小狐狸…

【C语言】整数类型及其数值范围(截断+数据)

&#x1f984;个人主页:小米里的大麦-CSDN博客 &#x1f38f;所属专栏:https://blog.csdn.net/huangcancan666/category_12718530.html ⚙️操作环境:Visual Studio 2022 目录 一、介绍 二、整数类型表 1.分析 2.小结 三、截断 1.什么是截断&#xff1f; 2.为什么需要截断…

为什么要做边界值测试?

边界值测试的理解 边界值测试&#xff08;Boundary Value Testing&#xff09;是一种常用的软件测试方法&#xff0c;它侧重于测试输入值的边缘或临界条件。这些边缘条件通常包括最小值、最大值以及接近这些最小值和最大值的值。边界值测试的基本思想是&#xff0c;许多软件错…

WEB前端开发中如何实现大文件上传?

大文件上传是个非常普遍的场景&#xff0c;在面试中也会经常被问到&#xff0c;大文件上传的实现思路和流程。在日常开发中&#xff0c;无论是云存储、视频分享平台还是企业级应用&#xff0c;大文件上传都是用户与服务器之间交互的重要环节。随着现代网络应用的日益复杂化&…

贪心算法-买卖股票问题

贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是全局最好或最优的算法。贪心算法并不保证总是能得到全局最优解&#xff0c;但它通常能得到不错的解…

【排序算法(二)】——冒泡排序、快速排序和归并排序—>深层解析

前言&#xff1a; 接上篇&#xff0c;排序算法除了选择排序&#xff08;希尔排序&#xff09;和插入排序&#xff08;堆排序&#xff09;之外&#xff0c;还用交换排序&#xff08;冒泡排序、快速排序&#xff09;和归并排序已经非比较排序&#xff0c;本篇来深层解析这些排序算…

Java 基础 and 进阶面试知识点(超详细)

一个 Java 文件中是否可以存在多个类&#xff08;修饰类除外&#xff09;&#xff1f; 一个 Java 文件中是可以存在多个类的&#xff0c;但是一个 Java 文件中只能存在一个 public 所修饰的类&#xff0c;而且这个 Java 文件的文件名还必须和 public 所修饰类的类名保持一致&a…

轻松入门Linux—CentOS,直接拿捏 —/— <1>

一、什么是Linux Linux是一个开源的操作系统&#xff0c;目前是市面上占有率极高的服务器操作系统&#xff0c;目前其分支有很多。是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统 Linux能运行主要的UNIX工具软件、应用程序和网络协议 Linux支持 32…

C++入门基础:C++中的循环语句

循环语句是编程语言中用来重复执行一段代码直到满足特定条件的一种控制结构。它们对于处理需要重复任务的场景非常有用&#xff0c;比如遍历数组、累加数值、重复执行某项操作直到满足条件等。 但是在使用循环语句的时候需要注意下哈&#xff0c;有时候一不小心会构成死循环或者…

centos安装kubernetes

本章程安装k8s 1.30版本为例。 1、环境配置 k8s 自1.24版本起&#xff0c;移除了dockershim了&#xff0c;1.30使用了containerd运行部署&#xff0c;containerd部署文档参考centos安装containerd-CSDN博客 k8s部署环境可参考容器运行时 | Kubernetes 1.1、修改主机名称 #…

【Django5】模型定义与使用

系列文章目录 第一章 Django使用的基础知识 第二章 setting.py文件的配置 第三章 路由的定义与使用 第四章 视图的定义与使用 第五章 二进制文件下载响应 第六章 Http请求&HttpRequest请求类 第七章 会话管理&#xff08;Cookies&Session&#xff09; 第八章 文件上传…

MacOS 使用DBeaver连接MySQL数据库 以及常见的问题

文章目录 1 DBeaver介绍2 下载安装3 连接MySQL4 DBeaver使用中的常见问题1 DBeaver驱动无法下载2 连接mysql时报错 Public Key Retrieval is not allowed3 mysql出现错误提示&#xff1a;connection refused: Communications link failure The last packet sent successfully t…

【JavaScript】详解Day.js:轻量级日期处理库的全面指南

文章目录 一、Day.js简介1. 什么是Day.js&#xff1f;2. 安装Day.js 二、Day.js的基本用法1. 创建日期对象2. 格式化日期3. 解析日期字符串4. 操作日期5. 比较日期 三、Day.js的高级功能1. 插件机制2. 国际化支持 四、实际应用案例1. 事件倒计时2. 日历应用 在JavaScript开发中…

界面控件Telerik UI for WPF 2024 Q2亮点 - 全新的AIPrompt组件

Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序&#xff0c;同时还能快速构建企业级办公WPF应用程序。UI for WPF支持MVVM、触摸等&#xff0c;创建的应用程序可靠且结构良好&#xff0c;非常容易维护&#xff0c;其直观的API将无缝地集成Visual Studio…

vite tsx项目的element plus集成 - 按需引入踩坑

前面我们进行了开源组件的自研&#xff0c;很多组件可直接用现成的开源组件库&#xff0c;并不需要自己重复造轮子&#xff0c;为此我们讲如何在当前vite vitepress tsx技术整合的项目中实现element plus组件的按需引入&#xff0c;同时解决遇到的一些坑。 安装Element Plus…

Codeforces Round #956 (Div. 2) and ByteRace 2024

A.思维&#xff1a;https://codeforces.com/contest/1983/problem/A AC代码&#xff1a; #include<bits/stdc.h> using namespace std; int t; int n; int main(){cin>>t;while(t--){cin>>n;for(int i1;i<n;i) cout<<i<<" ";cout…

《浅谈如何培养树立正确的人工智能伦理观念》

目录 摘要&#xff1a; 一、引言 二、《机械公敌》的情节与主题概述 三、人工智能伦理与法律问题分析 1.伦理挑战 2.法律问题 四、培养正确的人工智能伦理观念的重要性 五、培养正确的人工智能伦理观念的途径与方法 1.加强教育与宣传 2.制定明确的伦理准则和规范 3.…