酸保證磚是什麼?

磚使用三角洲湖默認為所有讀寫和建立在酸擔保所提供的開源三角洲湖協議。酸代表原子性、一致性、隔離性和持久性。

  • 原子性意味著所有事務要麼完全成功或失敗。

  • 一致性保證與如何觀察到給定的數據同步操作。

  • 隔離是指如何同時操作潛在衝突。

  • 耐用性意味著承諾改變是永久性的。

雖然許多數據處理和倉儲技術描述ACID事務,具體擔保隨係統,交易數據磚你共事可能不同於其他係統。

請注意

本頁麵描述擔保表由三角洲湖。其他數據格式和集成係統可能不提供交易擔保進行讀寫操作。

所有磚寫入雲對象存儲使用事務提交,開始創建元數據文件_started_ < id >_committed_ < id >與數據文件。你不需要與這些文件交互,如磚經常清理過期提交文件的元數據。

事務作用域在磚怎麼樣?

磚在表級別管理事務。一次交易總是適用於一個表。用於管理並發事務,磚使用開放式並發控製。這意味著沒有閱讀或寫作對一個表的鎖時,和死鎖是不可能。

默認情況下,磚提供快照讀取和隔離write-serializable隔離上寫道。比快照隔離Write-serializable隔離提供了更強的保證,但它適用於強隔離隻是寫道。

讀操作引用多個表返回當前版本的每個表的訪問,但不中斷可能修改引用表的並發事務。

磚沒有開始/結束結構,允許多個操作組合在一起作為一個單獨的事務。應用程序修改多個表提交事務串行的方式每個表。你可以把插入、更新和刪除表到一個寫事務使用合並

磚實現原子性如何?

事務日誌控製原子性。在事務、數據文件寫入到文件目錄表支持。當事務完成時,一個新的條目致力於事務日誌,包括所有文件的路徑在事務期間寫的。每個提交增量表版本,使新數據文件讀取操作可見。表包含所有數據文件的當前狀態顯著有效的事務日誌。

數據文件不跟蹤,除非一個新版本的事務日誌記錄。如果事務失敗後寫入數據文件到一個表,這些表數據文件不會腐敗的狀態,但這些文件不會成為表的一部分。的真空操作表中刪除所有無路徑的數據文件目錄,包括剩餘未提交的文件從失敗的事務。

磚實現的耐用性如何?

磚使用雲對象存儲來存儲所有的數據文件和事務日誌。雲對象存儲高可用性和耐久性。因為交易完全成功或失敗,事務日誌和數據文件生活在雲對象存儲,表在磚繼承雲的耐久性保障他們存儲的對象存儲。

磚是如何實現一致性?

三角洲湖使用開放式並發控製之間提供交易擔保寫道。在這種機製下,寫操作分三個階段:

  1. :讀取(如果需要的話)的最新版本表來確定哪些文件需要修改(重寫)。

    • 寫道,擴展不讀取當前表狀態前寫作。從事務日誌模式驗證利用元數據。

  2. :將數據文件寫入目錄用於定義表。

  3. 驗證並提交:

    • 檢查是否該衝突與其他任何變化可能是同時提交自讀的快照。

    • 如果沒有衝突,所有更改提交新版本快照,和寫操作成功。

    • 如果有衝突,寫操作失敗的並發修改例外。這個失敗阻止腐敗的數據。

樂觀conccurency假定大多數並發事務數據不能相互衝突,但衝突可能發生。看到隔離級別和寫衝突磚

磚是如何實現隔離?

磚使用寫可序列化的默認隔離所有表寫和更新。快照隔離是用於所有表讀取。

寫可串行性和樂觀並發控製共同提供高吞吐量寫道。當前可用的表總是有效的狀態,和可以開始寫一個表。並發讀取隻受限於metastore和雲資源的吞吐量。

看到隔離級別和寫衝突磚

三角洲湖支持多表事務嗎?

三角洲湖不支持多表事務。在三角洲湖支持事務的水平。

這是什麼意思,三角洲湖支持多集群寫嗎?

三角洲湖防止數據損壞當多個集群編寫並發相同的表。一些寫操作可以同時執行過程中衝突,但不要腐敗的桌子上。看到隔離級別和寫衝突磚

請注意

三角洲湖在S3有幾個局限性沒有找到其他存儲係統。看到三角洲湖限製S3

我可以修改從不同的工作區三角洲表嗎?

是的,你可以同時修改同一個三角洲表不同的工作區。此外,如果一個進程從工作區寫,讀者在其他工作區將會看到一個一致的觀點。