讀時模式(schema on read)和寫時模式(schema on write)

一、讀時模式(schema on read)和寫時模式(schema on write)

在傳統的數據庫裡,表的模式是在數據加載時強制確定的。如果在加載時發現數據不符合模式,則拒絕加載數據。因為數據在寫入數據庫時對照模式進行檢查,因此這一設計有時被稱為“寫時模式”。

而在Hive中,對數據的驗證並不在加載數據的時候進行,而是在查詢時進行,這被稱為“讀時模式”。

用戶需要在這兩種方法之間進行權衡。讀時模式可以使數據加載非常迅速,這是因為它不需要讀取數據,進行“解析”,再進行序列化以數據庫內部格式存入磁盤。數據加載操作僅僅是問文件複製或移動。

寫時模式有利於提升查詢性能。因為數據庫可以對列進行索引,並對數據進行壓縮。但作為權衡,此時加載數據會花更多時間。此外,在很多加載時模式未知的情況下,因為查詢尚未確定,因此不能決定使用何種索引。

讀時模式(schema on read)和寫時模式(schema on write)

獲取更多Hadoop、HDFS、HBase、MapReduce、YARN、Hive等等技術內容,可訪問Hadoop大數據技術專欄。


二、Hive是讀時模式

Hive處理的數據是大數據,在保存表數據時不對數據進行校驗,而是在讀數據時校驗,不符合格式的數據設置為NULL。讀時模式的優點是,加載數據庫快。

傳統的數據庫如MySQL、Oracle是寫時模式,不符合格式的數據寫不進去。

讀時模式(schema on read)和寫時模式(schema on write)

訪問Kafka技術專欄,瞭解更多的技術細節和項目代碼。


分享到:


相關文章: