一、分布式存儲里的文件存儲和數據庫存儲的區別
首先你要區分使用方式不同,對于文件存儲,往往調用的接口就是打開文件,讀寫文件和關閉文件。對于數據庫,操作的對象就是表格,通過SQL語句實現表格的定義、插入刪除和屬性修改,所以數據庫往往更加的靈活,也更加的復雜。分布式存儲中,常見的接口一般就是文件、對象和表格等。這是從使用者角度來說。
我們再說一下存儲的實現,我們可以通過文件存儲的方式實現數據庫存儲的部分功能。為什么這么說呢,因為數據庫存儲不僅要存儲數據,還要涉及到索引和事務的ACID。對于數據庫中的數據,可以通過文件的形式保存,同時還要實現索引更新、事務保證等等,所以數據庫存儲更加的復雜。
那我們最后說說分布式的區別,分布式系統中,一份文件可能對應一份物理文件,一份文件也可能被切割打散到不同的機器上,這是不同的實現方式,可以參考下GFS和Haystack的設計。對于文件存儲,最主要的是一致性問題處理,有強一致同步方法,亞馬遜提出的nwr模型,還有paxos/raft等多數派協議。這些方法也可以用來存儲數據庫的數據,但是分布式數據庫還要在這之上實現分布式事務等復雜技術,可以看一下目前流行的數據庫論文spanner和Aurora。
延伸閱讀:
二、Vertica是什么
Vertica是一款基于列存儲的MPP(massively parallel processing)架構的數據庫。
它可以支持存放多至PB(Petabyte)級別的結構化數據。Vertica是由關系數據庫大師Michael Stonebraker(2014 年圖靈獎獲得者)所創建,于2011年被惠普收購并成為其核心大數據平臺軟件。Vertica 采用無共享的MPP 架構,基于工業標準的x86 服務器,擁有高可擴展性。Vertica 集群中的所有節點100%對等,集群中沒有主節點或其他共享資源。通過增加節點,就可以線性地擴展集群的計算能力和數據處理容量。Vertica 是真正的純列式數據庫,優化器和執行引擎可以忽略表中與查詢無關的列。Vertica 不僅僅按列式存儲數據,還主動地根據列數據的特點和查詢的要求選用優異的算法對數據進行排序和編碼壓縮,這就極大地降低磁盤I/O 消耗。同時,Vertica 的執行引擎和優化器也是基于列式數據庫設計的,編碼壓縮過的列數據在Vertica 的執行引擎中進行過濾、關聯、分組等操作時不需要解反編碼,從而大大降低了CPU 和內存消耗。