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