Fivetran:自动化数仓集成服务

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
文件存储 NAS,50GB 3个月
简介: Fivetran提供SaaS服务,它连接到业务关键数据源,提取并处理所有数据,然后将其转储到仓库中,以进行SQL访问和必要的进一步转换。

Fivetran简介

公司发展

Fivetran提供SaaS服务,它连接到业务关键数据源,提取并处理所有数据,然后将其转储到仓库中,以进行SQL访问和必要的进一步转换。
参考今年9月的融资消息,这家公司过去一两年里发展很迅速:

  • 2012年由Y Combinator发起,种子轮融资$4M。
  • 2018年12月,A轮融资额$15M,有80名员工。
  • 2019年9月,B轮融资额$44M,有175名员工。过去12个月收入增长3倍,当前有750多个客户。

核心理念

Fivetran要打造的是基于云的数据分析平台,其设计哲学可以概括为三点:

  1. 选择合适的数据(仓)库:基于云的数据存储,存储与计算分离,例如Snowflak、BigQuery、Redshift。
  2. 将数据源可靠的复制到数据仓库,Ingest阶段尽量少地涉及数据转换。类似思想的还有Kafka Connect等系统,但Fivetran更强调自动化,包括:自动字段映射,数据与schema的同步。
  3. 彻底的践行E-L-T模式,用SQL语言在数据仓库上做业务层分析。

架构

与其核心理念一致,Fivetran是完全构建在云基础设施上的一套服务,使用到虚拟机、函数、对象存储、VPC、日志等服务。
image.png
这张图非常清晰描述了三个阶段:

  1. 获取源数据到工作节点,图例1、2、3。
  2. 准备数据写到临时存储,图例4。
  3. 将临时存储数据加载到目标数据仓库,图例5A、5B。

摄入与准备数据

支持150多种connector,分两大类:

  • pull connector:Fivetran主动发起请求下载数据,以固定时间间隔做周期调度。例如:通过ODBC/JDBC访问数据库,通过API访问web服务。
  • push connector:从源主动写数据到Fivetran,例如Webhook、Snowplow。接收到事件后,Fivetran以JSON格式存储数据到对象服务的文件。

connector获取到数据后,Fivetran会对数据做一些准备工作,包括:简单的过滤、排序和去重。在这个过程中,数据会缓存落盘,使用临时秘钥做加密。

加载数据到临时存储

Fivetran将准备完成的最终数据记录到文件,存储到bucket(可配置云厂商)。bucket归Fivetran所有,存储文件是经过加密的。
值得一提的是加密使用的秘钥是临时的,且秘钥只存放在connector进程内。为什么这么做?

加载数据到数仓

Fivetran将文件拷贝至目标数仓,同时该处理进程将秘钥也传递给数仓用于解密数据。当数据仓库完成对用户表的数据插入或修改后,connector进程运行完成并结束,scheduler在下一次触发时再次启动connector进程。
至此,回答上一节的问题。密钥只存在于connector进程的内存中,即使后台系统的VPC、Bucket、EC2被入侵,用户的数据也能保证不被泄露。

系统生成内容

Fivetran会为用户生成一些系统表格、列。例如fivetran_audit表格记录每次任务的运行概览,包括:任务id、起止时间、状态、唯一的update_id、处理数据行数等。

系统为目标数仓表添加的保留列有:

  • fivetran_synced (UTC TIMESTAMP):数据处理时间。
  • fivetran_deleted (BOOLEAN) :数据在源中是否被删除。
  • fivetran_index (INTEGER):对于无主键表,标识update发生的顺序。
  • fivetran_id (TEXT) :系统分配的唯一ID,用于无主键表的去重。
  • fivetran_id2 (TEXT) :系统分配的唯一ID,在null主键情况下,用于再区分。

这些保留字段的加入,主要用意还是透明化,帮助用户了解数据集成干了哪些事,方便问题追溯。

日志

Fivetran记录connector的操作事件,可以存储到AWS CloudWatch、GCP Stackdriver、Azure Log Analytics。

数据集成

数据源

Fivetran将数据源分为四类:

  • Application:例如Google Ads等软件服务商上记录了一些系统数据,可以通过API获取。
  • Database:RDS、NoSQL。
  • File:包括Azure、AWS、GCP三家的对象存储,DropBox,FTP等数据源。
  • Event:网页、移动App、邮件等数据源,如下图,Fivetran额外构建了网关用于接收数据。

image.png

Function

如果一定要在数据集成阶段就做一些转换操作,支持AWS、Azure、GCP三家函数服务。这与AWS Kinesis Firehose集成Lambda的方式一致。函数的实现要求做到幂等性,系统会重试请求直到成功,再把结果写到bucket。

数仓分析

connector的目标包括单机数据库(MySQL、SQLServer,PostgreSQL)和分布式数仓(推荐)。
connector进程将数据从源复制到base table,base table是数据在用户数仓上的第一站。Fivetran的同步是带状态的,通过和系统内部数据对比可以避免对目标表做全量scan。用户不直接在base table上做修改,因为可能导致后续的sync策略失效。因此,如果有修改base table再读需求,推荐用view来实现。

Schema迁移

在一次数仓update中,比较新读取的源数据与已经投递给数仓的系统内部数据,可以实现schema的同步。

image.png

  • 表改动:新的object会自动创建数仓表。rename解释为一次delete和create组合。
  • 列改动:新加列会触发一次对表中的所有行的全量导入。删除列在数据仓库中保持不变,该列在新增数据行中设为null。但如果伴随着其它改动并触发了表的重新全量导入,那么已删除列中的先前的数据会被清除掉。
  • 列类型改动:如果是宽转换(例如int转bigint)的,那么直接在数仓更新列的类型。而窄转换(例如从varchar(100)转varchar(20))的改变会触发一次全表的重新导入。

Transformation

同样是做数据转换,与Function区别是:Function发生在数据Ingest阶段,Transformation则是E-L-T的T,发生在数据到达目标数仓的分析阶段。
Transformation完全使用SQL,通过触发器(新数据被load到数仓后)或基于时间的调度策略,自动触发表转换。
image.png

观察与总结

云数仓

Fivetran是新派的ETL玩家,不仅自己的服务系统基于云构建,连用户侧分析也是云上的数仓。
Hadoop、AWS Athena走数据湖线路,可以快速完成初期系统的搭建,但可能因为缺乏数据schema规划、缺少计算下推的辅助,牺牲了一定的分析效率。
以AWS Redshift、Hive为代表的数仓,提供高效率的压缩存储以及存储、计算的一体化,提升了分析效率,但系统搭建依赖前期表和schema设计,以及在将来schema变化时伴随着维护成本。
Fivetran选择适配多数仓系统,由用户根据业务场景自主选择用什么做分析。使用SQL(被广泛支持的数仓语言)统一用户的Transform、Analytics使用体验。

E-L-T

这也是云数仓带来的另一个好处,水平扩展的计算和存储。这简化了对数据集成的使用,数据只需要安全达到数仓base table即可。而只要base table数据存在,通过交互式的查询可以动态修正业务分析的策略,并快速拿到结果。

自动化管道

无论是数据的导入还是schema的同步,自动化都在尝试解决ETL pipeline维护复杂的问题,这个功能具有现实意义。Fivetran CEO表示他们在幕后驱动自动化的过程非常复杂,但服务会努力向客户隐藏这种复杂性。

安全很重要

涉及到PII信息或是满足GDPR等合规要求,服务对数据加密访问做了细致的设计,可以看到安全性在这样的第三方厂商摆在了很高的优先级。

参考资料

  1. https://fivetran.com/docs
  2. https://www.youtube.com/watch?v=5-s8NfuPf9s
  3. 图片取自fivetran材料

个人学习总结,理解不到位处请斧正。

相关实践学习
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
6月前
|
存储 文字识别 自然语言处理
通义大模型在文档自动化处理中的高效部署指南(OCR集成与批量处理优化)
本文深入探讨了通义大模型在文档自动化处理中的应用,重点解决传统OCR识别精度低、效率瓶颈等问题。通过多模态编码与跨模态融合技术,通义大模型实现了高精度的文本检测与版面分析。文章详细介绍了OCR集成流程、批量处理优化策略及实战案例,展示了动态批处理和分布式架构带来的性能提升。实验结果表明,优化后系统处理速度可达210页/分钟,准确率达96.8%,单文档延迟降至0.3秒,为文档处理领域提供了高效解决方案。
687 1
|
5月前
|
XML jenkins 机器人
JMeter+Ant+Jenkins实现接口自动化测试持续集成
本文介绍了如何使用Ant生成JMeter接口测试报告,并集成到Jenkins中实现自动化测试。内容涵盖Ant与JMeter环境配置、build.xml文件设置、测试执行及报告生成,同时包括Jenkins插件安装、项目配置和钉钉消息通知的集成,帮助实现持续测试与结果可视化。
663 0
|
3月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
149 6
|
10月前
|
人工智能 Kubernetes jenkins
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
|
5月前
|
Web App开发 开发框架 .NET
Playwright 自动化测试系列(6)| 第三阶段:测试框架集成​指南:参数化测试 + 多浏览器并行执行
Pytest 与 Playwright 集成可提升自动化测试效率,支持参数化测试、多浏览器并行执行及统一报告生成。通过数据驱动、Fixture 管理和并行优化,显著增强测试覆盖率与执行速度,适用于复杂 Web 应用测试场景。
|
5月前
|
测试技术 API C++
Playwright 自动化测试系列(7)| 第三阶段:测试框架集成​​Page Object 模式
本课程详解Playwright测试框架中的Page Object模式,通过电商登录-下单实战演示PO架构设计与高级技巧,结合Pytest实现多用户测试。重点解析PO模式提升代码复用性、降低维护成本的核心价值,并提供常见问题解决方案,助力构建高可维护性的自动化测试体系。
|
8月前
|
人工智能 API 开发工具
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
GitHub MCP Server是基于Model Context Protocol的服务器工具,提供与GitHub API的无缝集成,支持自动化处理问题、Pull Request和仓库管理等功能。
1558 2
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
|
6月前
|
测试技术 Python
Python接口自动化测试中Mock服务的实施。
总结一下,Mock服务在接口自动化测试中的应用,可以让我们拥有更高的灵活度。而Python的 `unittest.mock`库为我们提供强大的支持。只要我们正确使用Mock服务,那么在任何情况下,无论是接口是否可用,都可以进行准确有效的测试。这样,就大大提高了自动化测试的稳定性和可靠性。
265 0
|
8月前
|
数据挖掘 OLAP OLTP
体验AnalyticDB无感集成(Zero-ETL)下的一站式数据分析,完成任务可领取300社区积分兑换各种商城好礼!
瑶池数据库的无感数据集成实现秒级同步,性能提升15%。借助AnalyticDB的Zero-ETL功能,快速搭建OLTP与OLAP同步链路,一站式管理数据分析。参与活动完成任务即可领取300社区积分,还有机会抽取红酒收纳箱、键盘鼠标垫、福禄寿淘公仔等好礼!
|
12月前
|
jenkins 测试技术 持续交付
软件测试中的自动化与持续集成
在现代软件开发过程中,自动化测试和持续集成已成为不可或缺的组成部分。本文将深入探讨自动化测试和持续集成的重要性、优势以及如何有效实施它们以提升软件质量和开发效率。通过具体案例分析,我们将展示这些技术如何在实际项目中发挥作用,并讨论其面临的挑战及应对策略。
302 60