Avro

Avro

數據序列化的系統。

簡介

它可以提供:

1 豐富的數據結構類型

2 快速可壓縮的二進制數據形式

3 存儲持久數據的檔案容器

4 遠程過程調用RPC

5 簡單的動態語言結合功能,Avro和動態語言結合後,讀寫數據檔案和使用RPC協定都不需要生成代碼,而代碼生成作為一種可選的最佳化只值得在靜態類型語言中實現。

Avro依賴於模式(Schema)。Avro數據的讀寫操作是很頻繁的,而這些操作都需要使用模式,這樣就減少寫入每個數據資料的開銷,使得序列化快速而又輕巧。這種數據及其模式的自我描述方便於動態腳本語言的使用。

當Avro數據存儲到檔案中時,它的模式也隨之存儲,這樣任何程式都可以對檔案進行處理。如果需要以不同的模式讀取數據,這也很容易解決,因為兩個模式都是已知的。

當在RPC中使用Avro時,伺服器和客戶端可以在握手連線時交換模式。伺服器和客戶端有著彼此全部的模式,因此相同命名欄位、缺失欄位和多餘欄位等信息之間通信中需要解決的一致性問題就可以容易解決

還有,Avro模式是用JSON(一種輕量級的數據交換模式)定義的,這樣對於已經擁有JSON庫的語言可以容易實現。

Avro提供著如Thrift和Protocol Buffers等系統相似的功能,但是在一些基礎方面還是有區別的,主要是:

1 動態類型:Avro並不需要生成代碼,模式和數據存放在一起,而模式使得整個數據的處理過程並不生成代碼、靜態數據類型等等。這方便了數據處理系統和語言的構造。

2 未標記的數據:由於讀取數據的時候模式是已知的,那么需要和數據一起編碼的類型信息就很少了,這樣序列化的規模也就小了。

3 不需要用戶指定欄位號:即使模式改變,處理數據時新舊模式都是已知的,所以通過使用欄位名稱可以解決差異問題。

相關詞條

相關搜尋

熱門詞條

聯絡我們