Snowflake:資料倉庫的終極形態
在本週二於拉斯維加斯召開的年度峰會上,雲資料領域的巨星廠商Snowflake釋出一系列公告,宣佈將超越傳統的資料倉庫業務,全面進軍資料和分析領域的諸多細分方向,具體包括資料湖、操作型資料庫、流式資料以及資料科學用例等。該公司甚至也開始將目光投向應用平臺。很明顯,Snowflake正在用實際行動把 Data Cloud資料雲的發展願景變成現實 。
在本文中,我們將具體聊聊Snowflake此番野心勃勃的發展計劃。讓我們先從最具變革性的三大要點入手:用於本地儲存的外部表(目前為內部預覽階段)、對基於Apache Iceberg的表的支援(正在開發中),以及面向行的儲存(同樣為內部預覽階段)。此外,我們還將剖析Snowflake釋出的開發者公告和部分合作夥伴公告內容。閒言少敘,話入正題。
— 1 —
Data Cloud的“上門服務”
第一項公告就是本地資料的外部表,也就是允許Snowflake檢視和查詢位於其許可權範圍之外的物件儲存資料。一切與Amazon S3相相容的物件儲存,都可以與Snowflake順暢對接,包括本地儲存。大家可別一提到S3就想起AWS或者公有云, 目前S3 API已經成為資料中心內的企業級物件儲存平臺標準 ,儲存在其中的任何資料現在都可由Snowflake靈活訪問。而且除了資料查詢,Snowflake也將提供資料管理能力。
當然,此類功能並非Snowflake所獨有。大多數操作型資料庫已經提供類似的外部表工具。微軟甚至在自家旗艦資料庫的下個版本——SQL Server 2022——中,專門為外部表工具添加了S3 API相容性。無一例外,這些支援外部表的平臺都將其宣傳為通往客戶資料湖的查詢橋樑。但Snowflake絕不滿足於此,他們計劃通過另外一項新功能把這條橋樑提升到新的水平——支援Apache Iceberg表。
— 2 —
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增強功能相關聯。關於更多細節,我們將在後文中具體討論。
— 3 —
Unistore
在討論新的開發功能之前,我們再來看看Snowflake釋出的另一個重要公告:Unistore和Hybrid Tables。這些技術共同帶來了面向行的儲存選項,允許Snowflake首次獲得了處理操作型資料庫工作負載的能力。
將給定行中的所有值儲存在一起,使用者就能高效新增新資料行,或者查詢特定資料並執行更新/刪除操作。但在分析場景下,大家往往需要把一、兩個列中的值聚合到多個列中,把這些行值集中儲存起來以便快速計算。
正因為如此, 操作型資料庫才原生使用行儲存技術 ,而大多數資料倉庫則原生使用列儲存技術。於是近年來,越來越多的操作型資料庫開始新增列儲存技術,希望承載起這部分操作分析工作負載。
但在Snowflake的Unistore和Hybrid Tables當中,我們恰好反其道而行之:在列式資料倉庫平臺中引入行儲存技術,用以承載操作型工作負載。顧名思義,Hybrid Table混合表允許使用者以兩種格式儲存資料庫中的表,這樣就能對其使用所有工作負載。Hybrid Table還能在查詢中與常規表對接,由Snowflake完成其中的必要調整。
Snowflake之所以決心分擔一部分操作工作負載,最大的原因就是相當一部分業務應用程式都執行在操作型環境當中。Snowflake希望開發者能在Data Cloud當中直接執行這些應用程式。
— 4 —
別忘了討好開發者
開發這邊也有不少公告內容,而且大部分集中在Python社群上。其中最重要的一點,就是Snowflake公佈的原生應用程式框架(Native Application Framework),目前處於內部預覽階段。
雖然目前的預覽版還沒有實現原生應用的全部願景,但Snowflake的態度已經非常明確。原生應用程式框架終將促進全功能應用程式開發,供開發者自主構建並銷售這些成果,Snowflake的客戶也可以根據需求購買、並在自己的Snowflake環境中執行這些應用程式。
如此一來, 應用程式所建立與維護的資料都將始終保持本地化 ,由此提供穩定的效能表現。這也能減輕開發者在應用程式部署方面的工作強度,同時保證開發者無法直接訪問客戶資料。總而言之,原生應用程式框架將一舉為客戶解決效能、安全性和合規性幾大難題,而且任何小型開發商、甚至是個人開發者都能獲得平等的業務起點。
目前的原生應用其實只是一種用來打包和部署Snowflake資產的機制,適用於儲存過程、使用者定義函式和外部函式等。到底要不要把這些資產集合轉化成真正的應用程式,仍是個值得討論的問題。
但這種可能性已經越來越大,畢竟Snowflake今年早些時候已經收購了Web應用程式開發平臺Streamlit。Snowflake表示,他們正努力將Stremlit整合到自家平臺當中,進而服務於原生應用程式框架。
除了之前提到的Snowflake伺服器端資產之外,Python前端開發方法也將被納入支援。另外,Hybrid Tables和Unistore的公佈,意味著這些應用程式已經不再侷限於提供分析功能、 開始獲得獨立執行的能力 。
Snowflake表示,之所以選擇這條路線,是因為他們注意到客戶在單一SaaS應用程式中容納了太多資料,將這些資料引入倉庫已經成為令人頭痛的難題。無論是資料管道還是資料虛擬化,都無法很好地解決這個問題。
Snowflake認為,基於雲的應用程式在全面普及的同時,實際上又導致了資料的“重新孤立”。因此,原生應用程式框架希望把應用程式及其資料直接放置在客戶的Snowflake環境之內,藉此打通各個資料孤島。
— 5 —
增強流傳輸與安全性
Snowflake還公佈一項Snowpipe Streaming的功能,藉此支援對流式資料的無伺服器攝取。目前此功能處於內部預覽階段。Snowflake還為此著手開發一項附加功能,名為Materialized Tables,可用於對流傳輸資料進行宣告式轉換。
在另一項相關公告中,Snowflake表示正在增加對網路安全工作負載的支援,幫助使用者對大量結構化、半結構化和非結構化日誌資料開展深入分析。
— 6 —
Python無處不在
在開發方面, 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技能的開發者通過查詢獲取機器學習模型預測結果。
— 7 —
資料業務合作伙伴
除了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中的資料相結合。
— 8 —
總結
精彩內容很多,但目前公佈的大多數技術尚處於預覽或者開發階段。不過新訊息就是好訊息,在未來正式推出之後,這些功能將大大增加Snowflake的市場競爭力。畢竟雖然Snowflake一直否認自己的純資料倉庫身份,但事實上大家就是把他們當作資料倉庫,所以要想衝擊競爭早已白熱化的分析領域,其實難度一直很大。
但本屆Snowflake峰會再次強調了這家公司的勃勃野心。儘管具體業務方向仍然對手密佈、競爭激烈,特別是操作型資料庫和應用程式開發這兩個版塊,但Snowflake毫不畏懼,我們也期待看到其良好表現。而且之前盤踞在這些市場上的老牌廠商也要小心了,Snowflake高管團隊的從業經驗相當深厚,你們未來的日子可能會更不好過。
推薦閱讀:
-
《 聊聊大廠晉升制度的問題 》
點選下方卡片關注 分散式實驗室 ,和 我們 一起
關注分散式最佳實踐
▲ 點選上方卡片關注分散式實驗室,掌握前沿分散式技術
還有一個好訊息告訴你~
分散式實驗室讀者群成立了!
如果你想和志同道合的小夥伴一起進步
探討技術,交流心得
請你一定要來
掃碼新增微信好友拉群,備註: 讀者群
- Serverless是簡化的Kubernetes
- 聊聊我的學習方法
- Google開源Carbon語言,旨在成為C 的繼任者
- 如何選擇分散式資料庫的接入方式?
- Kafka怎麼做負載均衡?
- Databricks決定開源其Delta Lake資料湖
- SFC宣佈退出GitHub
- 技術負責人要有哲學思維
- Snowflake:資料倉庫的終極形態
- Web3,路在何方?
- DockerCon 2022上的三個重磅訊息
- Uber工程師對真實世界併發問題的研究
- 深入剖析對 Go 的成功作出巨大貢獻的設計決策(深度好文)
- Kubernetes 1.24新特性解讀
- 測試金字塔(深度好文)
- 剛剛,Google宣佈把Istio捐贈給CNCF
- 百度主任架構師吳多益:從實現原理看低程式碼
- 你可能並未真正瞭解大資料
- eBPF入門與實踐指南(萬字長文)
- 怎麼做驗收測試?