開放表格式與資料版本控制系統

我經常被問到 LakeFS 和開放式表格式 (OTF)(即 和 Apache Hudi)之間有什麼區別。簡而言之,“這些是解決不同用例的不同技術。”但如果這個答案如此明確,為什麼這個問題會不斷出現呢?

是時候給出詳細的答案了;讓我們從頭開始。

什麼是開放表格式?

將結構化資料從關聯式資料庫移至物件儲存時,許多傳統資料庫保證都會遺失。例如,資料庫提供具有保證事務性的CRUD操作。這與物件儲存不同,物件儲存在設計上是不可變的。

基本上,如果您希望更改或擴展物件儲存中的資料文件,則必須重寫該文件,並且不能保證事務性。當您的表由磁碟上的多個檔案組成(例如分片和分割區)時,這會變得更加困難。

開放表格式 (OTF) 透過提供表

格抽象化來彌補這一差距,使資料從業者能夠建立、追加、更新和刪除記錄。它還有助於管理表模式的演變,並允許並發和一定程度的事務性。

它是如何運作的?

免責聲明:為了論證的目的

下面的描述被高度簡化。

雖然每種格式的工作原理略有不同,但主要概念是相似的。我將使用 Delta Lake 術語進行討論。

雖然表格的資料保存在 沙特阿拉伯 WhatsApp 號碼數據 不可變的Parquet 檔案中,但變更會保存在稱為增量檔案的附加資料檔案中,而告訴我們如何使用這些增量檔案的資訊則保存在稱為增量日誌的日誌文件中。

當我們存取資料時,我們可以透過

讀取資料檔案和增量檔案並計算(使用 Spark)表的版本來獲取其最新狀態。我們可以在增量檔案仍然可用的任何時間視窗內執行此操作。

這引入了一個約束:日誌必須有序,並且該順序必須得到所有人的同意readers,writers以避免損壞或不一致。

WhatsApp數據

副產品:時間旅行

透過迭代上述有序日誌,我們可以查看不同的版本,代表隨時間的變化。

我們可以透過僅讀取給定的日誌位置來在表的不同版本之間進行時間旅行。這可能會導致效能損失,並且可用於此操作的時間範圍可能是有限的,但對於單一 表來說,此功能確實是時間旅行。

開放式表格式提供軟淺拷貝
OTF 允許hard copy和soft copy一個表。硬拷貝是實際的實體副本,而表格的軟拷貝是元資料操作,允許在某個時間點對錶進行唯讀存取。

該術語branch在 Iceberg 中用於

軟拷貝,並且由於它是從版本控制領域借用的術語,因此人們可以推斷它充當 Git 中的一個分支。實際上,它是只讀軟拷貝。

總結一下:
OTF 提供了兩個乍 商業社群媒體行銷 看之下類似於版本控制的功能:

每桌時間旅行
每表分支/軟拷貝
但這些有資格作為版本控制嗎?我不這麼認為。

什麼是資料版本控制以及它的用途是什麼?

LakeFS 是一種資料版本控制系統,允許對從開發到生產的資料進行生命週期管理,就像管理應用程式程式碼生命週期一樣。

資料版本控制的主要用例是:

獨立開發數據管道
隔離測 印度數據 試管道的更改
自動化數據品質測試
資料提升的把關人(也稱為資料的 CI/CD)
資料集的再現性
多個表的事務性
生產中數據品質問題的回滾

以下是lakeFS如何解決上述所有用例的:

LakeFS 對資料集儲存庫執行操作。儲存庫由使用者在邏輯上定義,用於保存參與管道或代表現實的某個方面的資料集的集合。例如,包含有關您的客戶的資訊的所有資料集。
資料集可以是結構化的、非結構化的或透過開放式表格式管理。 LakeFS支援任何格式。
您可以對儲存庫執行類似 Git的操作,例如branching、、 等。
您可以時間旅行到系統記錄的任何活動分支/提交/合併,這些時間點是儲存庫的狀態,而不是單一表格/資料集的狀態。分支是可讀寫的,也可以定義為受限的。
類似Git的概念的實現是透過元資料實現的,因此所有這些功能都是使用元資料完成的,並維護一個重複資料刪除的資料湖。
系統管理的版本由使用者出於應用原因決定的提交或分支操作決定,而不是像 OTF 那樣由為格式設定的參數決定。

返回頂端