概念 - 并發(fā)控制

Paimon 支持針對多個并發(fā)寫入任務的樂觀并發(fā)控制。

每個作業(yè)都會按照自身的節(jié)奏寫入數(shù)據(jù),并在提交時基于當前的快照應用增量文件(刪除或添加文件)來生成新的快照。

這里可能會出現(xiàn)兩種類型的提交失敗情況:

  1. 快照沖突:快照 ID 已被搶占,該表已由另一項作業(yè)生成了新的快照。好的,讓我們再次提交。
  2. 文件沖突:此作業(yè)想要刪除的文件已被其他作業(yè)刪除。此時,該作業(yè)只能失敗。(對于流式作業(yè),它會失敗并重新啟動,還會有意地進行一次故障轉移)

快照沖突

Paimon的快照 ID 是唯一的,因此只要作業(yè)將快照文件寫入文件系統(tǒng),就視為作業(yè)成功完成。

image.png

Paimon 利用文件系統(tǒng)的重命名機制來提交快照,這對于 HDFS 來說是很安全的,因為它能確保重命名操作具有事務性和原子性。

但對于諸如 OSS 和 S3 這樣的對象存儲而言,它們的“RENAME”操作并不具備原子性語義。我們需要配置 Hive 或者 JDBC 元數(shù)據(jù)存儲,并為Catelog啟用“l(fā)ock.enabled”選項。否則,可能會有丟失快照的風險。

文件沖突

當 Paimon 執(zhí)行文件刪除操作(這僅是邏輯刪除操作)時,它會檢查與最新快照是否存在沖突。如果存在沖突(意味著該文件已被邏輯刪除),那么它就無法繼續(xù)在當前提交節(jié)點上進行操作,因此只能有意觸發(fā)故障轉移以重新啟動,并且該作業(yè)會從文件系統(tǒng)中獲取最新狀態(tài),以期解決此沖突。


image.png

Paimon會確保這里不會出現(xiàn)數(shù)據(jù)丟失或重復的情況,但如果兩個流式傳輸任務同時進行寫入操作,并且出現(xiàn)了沖突,您就會發(fā)現(xiàn)它們會不斷地重新啟動,這可不是什么好事。

沖突的本質(zhì)在于刪除文件(從邏輯上講),而刪除文件源于壓縮操作,所以只要我們關閉寫入任務的壓縮操作(將“只寫”設置為“真”),然后啟動一個單獨的任務來進行壓縮工作,一切就都很好了。

See dedicated compaction job for more info.

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 基本概念 文件布局 一個表的所有文件都存儲在一個基礎目錄下。Paimon 文件采用分層方式組織。以下圖片展示了文件...
    qing_feng閱讀 100評論 0 0
  • 協(xié)調(diào)多用戶數(shù)據(jù)庫系統(tǒng)中事務的同時執(zhí)行被稱為并發(fā)控制。并發(fā)控制的目的是確保多用戶數(shù)據(jù)庫環(huán)境中事務的可序列化性。為了實...
    ebook_sea閱讀 1,162評論 0 0
  • 并發(fā)控制 了解事務ID和元組結構 元組增刪改 提交日志 事務快照 可見性檢查及相應的規(guī)則參考文檔:http://w...
    消想閱讀 1,245評論 0 0
  • 1. 并發(fā)控制概述 本文是《PostgreSQL指南--內(nèi)幕探索》(鈴木啟修著 馮若航 劉陽明 張文升譯)的讀書筆...
    Kop李小陽閱讀 2,437評論 0 0
  • 深入解析 PostgreSQL 系列整理自 The Internals of PostgreSQL 等系列文章,從...
    王下邀月熊閱讀 924評論 0 2

友情鏈接更多精彩內(nèi)容