在大數據相關行業的面試中,經常會被問到這個問題:redis、傳統數據庫、HBase以及Hive的區別。
本文將針對這個面試問題,做以下分析:
1.問題分析
面試官考核的是你對不同數據存儲技術的理解和應用,概念和特性都需要回答。同時可以延伸到業務場景,考察面試者在項目實戰中不同服務如何區分配合使用。
2.核心問題回答
Redis
分布式緩存,基于內存,強調緩存,支持數據持久化,支持事務操作,NoSQL 類型的Key/vale數據庫,同時支持List、Set等更豐富的類型。
HBase
HBase是建立在HDFS之上,提供高可靠性的列存儲,實時讀寫的數據庫系統。它介于Nosql和關系型數據庫之間,僅通過主鍵和主鍵的range來檢索數據,僅支持單行事務。主要用來存儲非結構化和半結構化的松散數據。
關系數據庫
有MySQL、Oracle、SqlServer等,支持事務性操作,屬于寫模式,即寫入數據時進行檢查。它是針對具體業務在數據庫聯機的日常操作,通常對少數記錄進行查詢、修改。支持完善的sql功能,可以對少量數據進行統計分析。
Hive
Hive是基于Hadoop的數據倉庫工具,可以將結構化數據文件映射為數據庫表。并提供簡單的sql功能,可以將sql轉化為mr任務運行。因為sql學習成本低,不必專門開發mr應用,十分適合數據倉庫的統計分析。
3.區別
這里可以分為兩大類:關系型數據和Hive都是支持SQL引擎的數據庫;Redis和Hbase都是NoSQL 類型的Key/vale數據庫,支持簡單的行列操作,不支持SQL引擎。
SQL類數據庫中,關系型數據庫更側重于事務性操作,屬于寫模式,支持的數據量較小,支持索引延遲低;而Hive更側重于查詢分析操作,屬于讀模式,不支持索引延遲高,支持的數據量大,為數據倉庫而設計。
K/V數據庫中,Redis的讀寫性能更高,通常是幾十微秒,而Hbase是幾毫秒;Redis不僅支持K/V操作,也支持List、Set等更豐富的類型;Redis因為存儲在內存中所以數據量較小,而Hbase的存儲遠遠超出內存的大小。HBase適合做大數據的持久存儲,而Redis比較適合做緩存。
4.問題擴展
類似的存儲服務特別多,除此之外還有es和solr等等。需要先答出兩種存儲服務的概念,再根據核心功能,特性的不同答出兩者區別。
5.結合項目中的使用
在哪種場景下,使用哪種技術。傳統數據庫用來進行實時業務的事務處理,Redis用來做性能要求很高的實時緩存,Hive可以用來進行離線統計查詢,HBase可以用來做歷史數據的固化和快速查詢。當然,他們是可以配合使用的。