在本周二于拉斯维加斯召开的年度峰会上,云数据领域的巨星厂商Snowflake发布一系列公告,宣布将超越传统的数据仓库业务,全面进军数据和分析领域的诸多细分方向,具体包括数据湖、操作型数据库、流式数据以及数据科学用例等。该公司甚至也开始将目光投向应用平台。很明显,Snowflake正在用实际行动把Data Cloud数据云的发展愿景变成现实。
在本文中,我们将具体聊聊Snowflake此番野心勃勃的发展计划。让我们先从最具变革性的三大要点入手:用于本地存储的外部表(目前为内部预览阶段)、对基于Apache Iceberg的表的支持(正在开发中),以及面向行的存储(同样为内部预览阶段)。此外,我们还将剖析Snowflake发布的开发者公告和部分合作伙伴公告内容。闲言少叙,话入正题。
第一项公告就是本地数据的外部表,也就是允许Snowflake查看和查询位于其权限范围之外的对象存储数据。一切与Amazon S3相兼容的对象存储,都可以与Snowflake顺畅对接,包括本地存储。大家可别一提到S3就想起AWS或者公有云,目前S3 API已经成为数据中心内的企业级对象存储平台标准,存储在其中的任何数据现在都可由Snowflake灵活访问。而且除了数据查询,Snowflake也将提供数据管理能力。
当然,此类功能并非Snowflake所独有。大多数操作型数据库已经提供类似的外部表工具。微软甚至在自家旗舰数据库的下个版本——SQL Server 2022——中,专门为外部表工具添加了S3 API兼容性。无一例外,这些支持外部表的平台都将其宣传为通往客户数据湖的查询桥梁。但Snowflake绝不满足于此,他们计划通过另外一项新功能把这条桥梁提升到新的水平——支持Apache Iceberg表。
Snowflake公司产品高级副总裁Christian Kleinerman在上周的分析师简报会上预告称,“本次会议上最重要的公告之一,就是Iceberg表的引入。”虽然这项功能仍在开发,但Snowflake表示将很快以内部预览版的形式亮相。
Iceberg是一种开源技术,能够将事务/ACID(原子性、一致性、隔离性、持久性)逻辑添加到Apache Parquet等开放文件格式的存储数据当中。Iceberg还提供时间旅行功能,用户可以在执行增/删/改/查之前先确认数据的先前状态。Iceberg也是目前能够支持这类功能的三大主要方案之一,另外两种分别是Delta Lake和Apache Hudi。
事实证明,Snowflake将把Iceberg作为数据库中的优先表存储选项,直接让它成为Snowflake查询引擎中的原生附加存储格式。简单来说,客户能够把各个表存储成Iceberg格式,同时保留几乎所有传统表操作,包括标准DML(数据操作语言)和CRUD(创建、读取、更新、删除)操作,以及加密、复制、治理、压缩、市场兼容和聚类。Snowflake表示,这些功能的性能都将与传统表基本相当(差异不会超过10%)。
另外,由于Iceberg是一种开放格式,其中的数据也可以通过多种开源数据湖技术进行查询,包括Apache Spark、Hive、Flink、Presto以及Trino。更重要的是,Iceberg也支持在数据科学环境中使用。对Iceberg的支持,本质上属于Snowflake自有平台上的数据湖仓范式实现,而且与部分面向开发人员的Snowflake增强功能相关联。关于更多细节,我们将在后文中具体讨论。
在讨论新的开发功能之前,我们再来看看Snowflake发布的另一个重要公告:Unistore和Hybrid Tables。这些技术共同带来了面向行的存储选项,允许Snowflake首次获得了处理操作型数据库工作负载的能力。
将给定行中的所有值存储在一起,用户就能高效添加新数据行,或者查找特定数据并执行更新/删除操作。但在分析场景下,大家往往需要把一、两个列中的值聚合到多个列中,把这些行值集中存储起来以便快速计算。
正因为如此,操作型数据库才原生使用行存储技术,而大多数数据仓库则原生使用列存储技术。于是近年来,越来越多的操作型数据库开始添加列存储技术,希望承载起这部分操作分析工作负载。
但在Snowflake的Unistore和Hybrid Tables当中,我们恰好反其道而行之:在列式数据仓库平台中引入行存储技术,用以承载操作型工作负载。顾名思义,Hybrid Table混合表允许用户以两种格式存储数据库中的表,这样就能对其使用所有工作负载。Hybrid Table还能在查询中与常规表对接,由Snowflake完成其中的必要调整。
Snowflake之所以决心分担一部分操作工作负载,最大的原因就是相当一部分业务应用程序都运行在操作型环境当中。Snowflake希望开发者能在Data Cloud当中直接运行这些应用程序。
开发这边也有不少公告内容,而且大部分集中在Python社区上。其中最重要的一点,就是Snowflake公布的原生应用程序框架(Native Application Framework),目前处于内部预览阶段。
虽然目前的预览版还没有实现原生应用的全部愿景,但Snowflake的态度已经非常明确。原生应用程序框架终将促进全功能应用程序开发,供开发者自主构建并销售这些成果,Snowflake的客户也可以根据需求购买、并在自己的Snowflake环境中运行这些应用程序。
如此一来,应用程序所创建与维护的数据都将始终保持本地化,由此提供稳定的性能表现。这也能减轻开发者在应用程序部署方面的工作强度,同时保证开发者无法直接访问客户数据。总而言之,原生应用程序框架将一举为客户解决性能、安全性和合规性几大难题,而且任何小型开发商、甚至是个人开发者都能获得平等的业务起点。
目前的原生应用其实只是一种用来打包和部署Snowflake资产的机制,适用于存储过程、用户定义函数和外部函数等。到底要不要把这些资产集合转化成真正的应用程序,仍是个值得讨论的问题。
但这种可能性已经越来越大,毕竟Snowflake今年早些时候已经收购了Web应用程序开发平台Streamlit。Snowflake表示,他们正努力将Stremlit集成到自家平台当中,进而服务于原生应用程序框架。
除了之前提到的Snowflake服务器端资产之外,Python前端开发方法也将被纳入支持。另外,Hybrid Tables和Unistore的公布,意味着这些应用程序已经不再局限于提供分析功能、开始获得独立运行的能力。
Snowflake表示,之所以选择这条路线,是因为他们注意到客户在单一SaaS应用程序中容纳了太多数据,将这些数据引入仓库已经成为令人头痛的难题。无论是数据管道还是数据虚拟化,都无法很好地解决这个问题。
Snowflake认为,基于云的应用程序在全面普及的同时,实际上又导致了数据的“重新孤立”。因此,原生应用程序框架希望把应用程序及其数据直接放置在客户的Snowflake环境之内,借此打通各个数据孤岛。
Snowflake还公布一项Snowpipe Streaming的功能,借此支持对流式数据的无服务器摄取。目前此功能处于内部预览阶段。Snowflake还为此着手开发一项附加功能,名为Materialized Tables,可用于对流传输数据进行声明式转换。
在另一项相关公告中,Snowflake表示正在增加对网络安全工作负载的支持,帮助用户对大量结构化、半结构化和非结构化日志数据开展深入分析。
在开发方面,Snowflake打算全力推动Python技术的应用。除了之前提到将使用Python的Streamlit平台直接集成过Snowflake之外,该公司还宣布与Anaconda合作,将Python作为Snowpark开发者框架中的正式支持语言,且目前支持功能已经开放预览。Snowflake还将面向Snowpark for Python环境提供一系列精选开源Python工具包和库。
不止如此,新功能Snowflake Worksheets for Python(现为内部预览阶段)允许开发者使用Python编写管道、机器学习模型和应用程序,并直接在Snowflake用户界面Snowsight内完成开发。
此外,Snowflake还在积极开发大型内存数据仓库,专为内存密集型任务提供支撑。例如,数据科学类工作负载——例如特征工程或模型训练——就能直接在Snowflake的庞大数据集之上执行,并获得必要的内存资源支持。换言之,数据无需被提取到其他环境当中,因此性能和效率也将获得相应提升。
在模型训练完成之后,非数据科学家还可以对成果进行验证,且无需任何Python知识。这里对应的,就是Snowflake添加的SQL机器学习(目前为内部预览版)功能,允许具备SQL技能的开发者通过查询获取机器学习模型预测结果。
除了Snowflake自己发布的公告,本届峰会上也不乏其他合作伙伴带来的亮点。下面来看部分摘要:
Informatica公布了新的Enterprise Data Integrator,将在Snowflake Data Cloud中集成多个来源的数据;该公司还为Snowflake发布了新的无成本数据加载器,并在Informatica云数据治理与目录服务中引入新的Snowflake数据治理功能(内部预览版)。
Fivetran公布一种新的大容量连接器,可在Snowflake集成范围内提供多种新功能。
ALTR公布新的策略自动化引擎,用于管理Snowflake及其他平台中的数据访问控制。
StreamSets宣布最新引擎StreamSets Transformer for Snowflake正式上市,此引擎基于Snowpark构建而成。
Master Data Management厂商Semarchy上周公布了xDI for Snowflake,引入了多项Snowflake专有功能。
数据可观察性/数据质量供应商Acceldata上周宣布将与Snowflake集成,以实现“Snowflake环境下的洞察、控制与支付智能”,主要围绕数据、处理和管道编排开展设计。
Rockset宣布与Snowflake集成,允许开发者访问来自Apache Kafka、AWS DynamoDB和MongoDB等来源的数据,并将其与Snowflake中的数据相结合。
精彩内容很多,但目前公布的大多数技术尚处于预览或者开发阶段。不过新消息就是好消息,在未来正式推出之后,这些功能将大大增加Snowflake的市场竞争力。毕竟虽然Snowflake一直否认自己的纯数据仓库身份,但事实上大家就是把他们当作数据仓库,所以要想冲击竞争早已白热化的分析领域,其实难度一直很大。
但本届Snowflake峰会再次强调了这家公司的勃勃野心。尽管具体业务方向仍然对手密布、竞争激烈,特别是操作型数据库和应用程序开发这两个版块,但Snowflake毫不畏惧,我们也期待看到其良好表现。而且之前盘踞在这些市场上的老牌厂商也要小心了,Snowflake高管团队的从业经验相当深厚,你们未来的日子可能会更不好过。
推荐阅读:
点击下方卡片关注分布式实验室,和我们一起
关注分布式最佳实践

▲ 点击上方卡片关注分布式实验室,掌握前沿分布式技术
还有一个好消息告诉你~
分布式实验室读者群成立了!
如果你想和志同道合的小伙伴一起进步
探讨技术,交流心得
请你一定要来
扫码添好友拉群,备注:读者群





