糾刪碼資料增量更新方法實現

2021-09-04 20:55:34 字數 1087 閱讀 8445

當對糾刪碼乙個條帶內的資料進行更新時,還需要更新校驗塊,一般有兩種方法:

重新編碼:這種方法導致更新開銷過大

增量更新:利用新資料相對於舊資料的增量來更新校驗塊,相比於重新編碼,這種方法減少了更新過程中涉及到的網路io、硬碟io、計算開銷。原理可以參考該篇**

在intel提供的isa-l庫中,包含了糾刪碼相關操作的**實現,其中有乙個函式為ec_encode_data_update()方法,對於該函式的具體實現可以查閱原始碼,通過該函式我們可以實現增量更新。

/**

* len: the length of data block

* vec_i: the vector index corresponding to the updated data block

* data: single pointer to the updated data block increment

* coding: coding array of pointers to coded output buffers

**/void

updatetest

(int len, int vec_i, uint8_t *data, uint8_t **coding)

如何表示資料增量: 將更新後的資料和元資料進行異或操作得到的資料就表示資料增量

完整測試**放在了這裡

對於rs(k, m)編碼(k個資料塊,m個編碼塊),更新乙個資料塊的開銷包括讀出源資料塊的一次io,iodisk,將增量資訊發往校驗塊的m個網路io,ionet,m個校驗塊資料寫入的iodisk,在加上計算開銷 θ

\theta

θ,所以總共需要 :(m+1)×

\times

×iodisk + m×

\times

×ionet + θ

\theta

θ

如有錯誤,歡迎指正!

參考

BW BW增量更新方法(假增量)

1 說說假增量 我們都知道,對於bw來說,很多ecc的標準資料來源自帶了增量更新功能,每天各種憑證產生的增量資料會自動堆積到增量佇列裡,然後bw端做乙個增量資訊包按天把這些增量抽取到資料倉儲裡,非常輕鬆自然,對於客戶和顧問,都是透明的自動的容易實施的,這也是上過ecc的企業資料倉儲採用sap bw的...

資料庫字典簡易更新方法

公司現在使用的資料庫都是 sql,軟體在開發的過程中的資料庫的設計會有著很多的變化 這就帶來了很多的更新繁瑣的工作 以至公司的軟體的資料庫的文件得到不及時的更新 勢必影響著相關的一系列的工作的執行。在這邊結合了去年工作的實踐,提出一種比較方便的資料庫更新與資料庫文件同步的方法,這個方法的原理也很簡單...

資料庫中計算值的更新方法

在做專案時,經常在專案中會遇到有些值是通過其他表經過計算得來的,然後將計算結果儲存到資料庫中。比如在乙個休假系統中,乙個員工每年已休天數就是乙個計算值,通過sum員工的所有有效休假申請單可獲得。再比如交易系統中的餘額字段,對乙個賬號的所有流水進行sum,所有收入減去所有支出就是餘額。再比訂單系統中,...