什麼是不可變資料?

不可變資料是資料庫中不能(或不應該)刪除或修改的資訊片段,大多數傳統資料庫是以可變格式來儲存資料,這意味著當有新資料可用時,資料庫會覆寫舊資料。例如,在員工資料庫中,當員工搬家時,原來的地址資訊就會被覆喜。

不可變資料圖

相反的,儲存不可變資料的資料庫不會在出現新資訊時覆寫舊項目,而是使用各種技術來保存資料的歷史記錄和目前值。不可變資料對於稽核和除錯非常有用。

不可變資料的一個真實例子是某人的醫療記錄。多年來,有一個人可能針對不同的疾病尋求治療,其病歷中含有各種處方、醫療程序和檢驗報告,這些資料檔案應該是不可變的。例如,當一個人收到新的醫療處方時,不應覆寫原來的舊處方,而是將新資料附加到資料庫的現有資料中。歷史醫療資料是不可變資料的典型例子。

為什麼組織需要不可變資料?

隨著雲端資料和物聯網 (IoT) 的出現,組織會收到大量的交易資料,這些資料需要快速儲存到資料庫中,此時不可變檔案就是儲存高速交易日誌的適當解決方案。組織還需要考慮對歷史資料的需求,隨著資料隱私法規越來越嚴格,許多組織選擇保留其歷史資料,如果客戶或政府要求過去的資料,這樣做將有助於他們順利符合法規要求,以不可變格式儲存資料的資料庫最適合此使用案例。

組織通常需要將其目前資料與歷史資料進行比較,以瞭解使用者趨勢或衡量成長率,在這種情況下,覆寫歷史資料就不是一個好主意。不可變資料還可以幫助組織追蹤他們多年來所經歷的變化,這在軟體系統中特別有用。

O'Reilly 報告:建立整合的數據基礎設施
O'Reilly 報告:建立整合的數據基礎設施
只有三分之一的企業已發展成為數據驅動的機構。解決辦法是什麼?在這電子書尋找答案!

不可變資料庫有什麼用途?

儲存串流資料

隨著資訊爆炸和物聯網出現,組織每秒都會收到大量資料。他們無法承受儲存資料的延遲,但大多數使用可變檔案的傳統資料庫都有一定的延遲,因為它們需要抹除以前的資料、寫入新資料並檢查完整性。但面對串流資料時,例如來自物聯網感應器的資料,資料庫應該要能快速儲存資料,如果資料庫使用的是不可變資料檔案,它只是簡單地附加新資料,使得不可變資料庫儲存資料的速度更快,因此更適合儲存串流資料。

保留歷史記錄

個人資料,例如一個人的病史,需要永久儲存,以便為新資料提供情境脈絡。例如,當一個人因病接受治療時,他們所有的舊藥物和治療方案都需要納入考量。雖然傳統資料庫可以提供歷史記錄,但它們不能保證資料也保存下來。不可變資料庫,就其本質而言,則確保不會刪除任何資料。

稽核和除錯

經常變化的系統,例如網站或軟體,需要保留系統的主要快照以追蹤變化。大多數版本控制系統將資料儲存在不可變檔案中,因此沒有覆寫它們的風險。金融機構還需要一個不可變的資料庫來保存他們所有的歷史交易。其他需要提供資料以進行頻繁稽核的組織也可以從不可變資料庫中受益。

不可變資料庫的工作原理

傳統關聯式資料庫(可變資料庫)是以記錄為基礎,相較之下,不可變資料庫則是以日誌為基礎。當有新資料項可用時,可變資料庫會重寫資料表中的特定儲存格。不可變資料庫則是將資料儲存在日誌中,並為每個新資料片段建立一個新日誌。

若要瞭解不可變資料庫的工作方式,請看看用來儲存部落格文章詳細資訊的簡單資料庫。經典的關聯式資料庫是以可變格式來儲存這些資料,並將部落格文章的詳細資訊儲存在表格中。假設固定連結、標題和內容是此表格的三列,則在可變資料庫中,當標題或內容發生變化時,資料庫會執行更新作業,以新資料覆寫先前的輸入項,因此舊的標題和內容將永遠消失,但標準的不可變資料庫則是將這些資訊儲存為日誌。

可變資料庫只會儲存部落格的目前狀態,不可變資料庫卻是同時儲存部落格的歷史和目前狀態。不可變資料庫只執行插入操作,從不更新現有的資料欄位。

不可變資料庫如何儲存資料?

繼續以部落格文章為例,不可變資料庫使用與可變資料庫不同的表格結構,每個部落格文章修訂都做為表格的一行新資料插入到資料庫中。表格的欄位如下:

  • 修訂版號:這是表格的主鍵,每個部落格修訂版都應該有一個唯一的修訂版號。
  • 時間戳記:修訂的發生時間,它應該是一個唯一值。
  • 固定連結、標題和內容

在可變資料庫中,每個部落格文章修訂版都會覆寫原來的部落格資料,而不可變資料庫則是為部落格文章的每次更改建立一個新的修訂輸入項。以這種方式,部落格文章先前的每次編輯資訊都被保留下來,並且可以根據時間戳記或修訂版號隨時檢索。

不可變資料的優勢是什麼?

加速作業

當資料儲存為不可變資料時,新資料會附加到先前的資料並加上時間戳記。這意味著資料庫可以簡單插入資料,不會阻礙系統執行完整性檢查。對於串流資料和感應器資料,這種不可變資料的品質至關重要,在這些情況下,資料會不斷抵達,因此需要以最短延遲進行儲存。

歷史記錄

許多組織需要將歷史資料與最新版本進行比較,以獲得更好、更符合情境脈絡的分析結果。不可變資料庫會保留所有歷史資料,有助於建立可供還原系統的過去檢查點。

可稽核性

許多行業,尤其是醫療保健和金融行業,可能會面臨隨機稽核要求。保留所有資料對他們來說至關重要,如此才能在需要稽核時保證手邊留有歷史資料。

合規性

全球各地的資料隱私法規都非常嚴格,使用者有權要求取得組織從他們那裡收集的所有資料的副本。將資料儲存為不可變格式有助於組織遵守此類請求。

不可變資料資源
有效管理參考數據可以為業務增加哪些價值?
立即了解參考數據管理的四個 R,並開始建立您的業務案例。

不可變資料的缺點是什麼?

更高的儲存要求

與傳統的可變資料庫相比,儲存不可變資料具有更高的儲存要求。每次更新都被儲存為不同的日誌,這會增加資料庫的大小。

複雜性

不可變資料庫較複雜,因為它們也儲存了歷史記錄,資料庫需要處理儲存每筆交易的複雜性。

資料合規性

按照設計,不可變資料庫永遠不會刪除任何資料。但是,大多數資料法規要求系統應在使用者請求時刪除資料。這對於建立在不刪除任何資料的假設上的不可變資料庫來說,會是一個重大挑戰。

不可變資料庫如何提供刪除功能?

不可變資料庫本質上並不提供刪除功能,因為資料庫本身是按照資料永不刪除的原則進行設計。然而,正如我們在上一節中提到的,資料隱私法規賦予使用者「被遺忘」的權利,而這需要對資料進行刪除/覆寫。

加密粉碎是一種用於「覆寫」不可變資料的解決方案。在具有加密粉碎機制的資料庫中,不可變資料是以加密格式儲存,資料庫所儲存的個人資料都需要加密金鑰才能解密。所有這些金鑰被儲存在一個可變資料庫中,當有覆寫資料的請求時,資料本身不會被刪除,而是改為覆寫與其相關的加密金鑰。隨著加密金鑰的消失,資料便不再可用。這種做法跟直接刪除與加密金鑰相關的資料本身一樣好,是歐盟資料隱私法規可以接受的一種解決方案。