引言
这十多年大数据技术蓬勃发展,从市场的表现来看基于大数据的数据存储和计算是非常有价值的,其中以云数据仓库为主打业务的公司Snowflake市值最高(截止当前449亿美元),另一家以湖仓一体为方向公司Databricks估值或达380亿美元;各大伺机而动的云厂商也纷纷推出自己的数据湖、云数据仓库、湖仓一体产品。
说明一下,当前主流的数据湖技术对二进制数据(图片、音频等)不友好,文章上下文说的都是分析型(结构化、半结构化)数据。
只要业务场景复杂数据多元化,无论是你基于任何一个存储框架也得存储各种各样的数据,然后你得有计算引擎可以计算这些数据;同时由于业务要求,你需要对数据进行实时分析。数据湖技术把上述的过程集成化、标准化了;在数据入湖一开始就对数据按照指定标准进行组织,支持流批一体,不同框架有不同的组织方式(对特定场景有优化),但是目的都差不多;入湖后,提供标准化的数据读取方式,支持各种MPP引擎的计算;因为数据提前组织过,所以写入性能下降,查询性能提升。所以你可能之前一直在用数据湖,只是没用到数据湖技术。
数据仓库在入库之前,一般需要进行数据建模;接着按照表的格式对数据进行标准化和表指定的存储引擎进行数据组织,此时可能会损失掉一些信息;计算层通常都会对存储引擎的数据结构进行优化,以此来获得极致的查询体验。日常我们在进行大数据架构的设计实现时,一般会做的比数据仓库限定的范围多,但是我们还是称为数据仓库,所以还是再次提一下,不要太追求准确的定义。
(以上图片来自阿里云)
Why:业界为什么要做湖仓一体?
我来形象地描述一下:集合两者的优势,像数据仓库一样管理的数据湖,像数据湖一样开放的数据仓库。
从What描述中数据湖和数据仓库的描述可以看出,业内常用的大数据架构基本上就是湖仓一体,即拓宽的数据仓库的功能,也会主动的规范数据的存储和使用。业内目前分享出来的信息来看,主要还是为了替换掉老的Lambda和Kappa架构,想通过一个相对简单的架构进行降本提效。
(以上图片来自阿里云)
How:业界怎么做湖仓一体?
湖仓一体冷热存储架构
如上图,所有数据异步入湖,数据仓库的元数据会更新,用户查询时会缓存需要扫描的原始数据,通过缓存淘汰机制清理计算频率较低的数据。
真实业务场景可能是同一套架构里面会支持上述两种实现。也有一些湖仓一体的架构中没有数据仓库产品,仅用了Presto作为查询加速(火山引擎、Bilibili),不过整体架构大致也差不多。
以下列举了业界实现的方案:
阿里云 MaxCompute+Hologres
阿里云 EMR+Sarrocks
华为云 湖仓一体
字节跳动 基于Doris的湖仓一体探索
字节跳动-火山引擎 湖仓一体云服务
bilibili 湖仓一体架构
Google BigLake
Amazon Lake House
Azure Lake House
SnowFlake Data Lake
总结
当前湖仓一体主要面向于解决用户数据量特别大且多元化的场景,仓的作用在于提速,湖的作用在支持海量的数据并发写入和海量存储;且设计者希望尽量降低架构的复杂度,提高效率。
以下个人评估,仅供参考:
-
SnowFlake在分析型数据场景下基本上就是天生的湖仓一体,优势巨大。
-
Doris/Starrocks的架构也会往Snowflake方向改进,潜力满满。
-
基于Spark/Presto的湖仓一体,查询的效率会低于上述两种,但是可以作为补足上述的部分场景。
作者简介
叶强盛
腾讯云开发者社区【技思广益·腾讯技术人原创集】作者
推荐阅读
👇点击「阅读原文」,注册成为社区创作者,认识大咖,打造你的技术影响力!
本文来自微信公众号“腾讯云开发者”(ID:QcloudCommunity)。大作社经授权转载,该文观点仅代表作者本人,大作社平台仅提供信息存储空间服务。