我們希望「Git for Data」時,我們已經知道什麼是程式碼版本控制,Git是程式碼版本控制的標準工具。為了那些剛加入我們的人,讓我們定義這些術語。
早在 20 世紀 60 年代,當創建程
式碼的人們想要相互協作時,將包含程式碼的檔案一起管理的需求就迫在眉睫,並且考慮到以下情況,負責程式碼可管理性的系統開始出現:命名「版本控制”工具。為什麼要進行版本控制?因為當嘗試協作處理一組文件註釋程式碼時,每個程式設計師都可以隨時更改任何文件,這是透過對程式碼檔案進行版本控制來完成的,同時還要確保它們彼此一致以創建一個工作應用程序,因此工具實際上是對程式碼檔案儲存庫進行版本控制。
經過多種版本控制工具的嘗試
其中一種贏得了開發人員的青睞,現在它已成為程式碼版本控制的標準工具。它叫做Git。
Git 征服了程式碼世界,因為它最好地支援了開發人員所需的工程最佳實踐,主要是:
在開發過程中進行協作
隔離開發和測試
發生錯誤時將程 新西蘭 WhatsApp 號碼數據 式碼儲存庫還原為可用版本
重現並解決給定版本程式碼的問題
持續整合和部署新程式碼(CI/CD)
來源:lakeFS為什麼要用 Git 來處理資料?
或者,為什麼要版本控制資料?
既然我們對於為什麼要版本控製程式碼達成了共識,我們可以看看這些相同的需求是否適用於資料。
如今,各種類型的資料從業者、分析師、資料工程師、機器學習工程師和研究人員都在處理不斷增長的資料量。數據從業人員的工作包括:
數據,充當:工作的輸入、中間結果和輸出
建立用於分析資料的程式碼,從簡單的 SQL 查詢,透過分散式運算引擎(例如 等)中的複雜 ETL,到建模 ML 或其他類型的演 塔博爾的新住宅區 城市規劃競賽研 算法以解決複雜的預測問題。
基礎設施,用於提取見解的運算引擎,通常是 Spark 或 Presto/Trino 等分散式系統,以及用於保存資料的資料儲存或資料庫。
這些由氣流等編排系
統和 DataHub 或 Alation 等資料目錄進行補充。
原始碼在Git 中得到了很好的管理,並且由於DevOps 的範式轉變,基礎設施現在作為代碼進行管理,其中Terraform 等工具允許對基礎設施世界進行編碼,並且為此創建的代碼在Git 中進行管理。
數據對於數據密集型應用程 台灣新聞 式來說是獨一無二的,將其與其他兩個應用程式一起管理會顯著增加複雜性。為了確保如上所述的工程最佳實踐,我們現在需要經歷與資料營運中的 DevOps 相同的範式轉變,並像管理程式碼一樣管理資料。換句話說,我們需要 Git 來取得數據!
「Git for Data」的好處我們已經確定
在資料中實施工程最佳實踐應該透過類似 Git 的資料操作,就像我們在基礎設施中實施的方式一樣。讓我們深入了解 git-for-data 將允許我們完成的具體細節。公平警告,這個清單對你來說看起來非常熟悉。
1. 開發過程中的協作
為了協作開發數據密集型應用程序,所有參與者都必須查看相同版本的數據。由於資料會隨著時間的推移而累積和更新,因此確保這一點的方法是對資料進行版本控制並使用提交 ID 或分支來同步所有涉及的內容以使用該版本。
來源:lakeFS2. 獨立開發和測試
分支是實現隔離的方式。分支是資料儲存庫建立時的快照。從那時起,對分支資料所做的任何更改僅記錄在該分支中,對資料的其他分支所做的任何更改都不會影響所使用的分支。這為開發和測試提供了一個隔離的工作環境。對於數據,一個常見的用例是創建生產數據的分支,以允許對生產數據進行開發和測試,而無需額外成本,也沒有生產風險。