十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
如果說數(shù)據(jù)是科技領(lǐng)域的“石油”,那么數(shù)據(jù)庫就是油井。無論你用哪一個程序,使用哪一個平臺,都必須要有一個數(shù)據(jù)庫。 數(shù)據(jù)庫如此重要,以至于各大巨頭企業(yè)都在搶奪數(shù)據(jù)庫市場。在開源技術(shù)領(lǐng)域,數(shù)據(jù)庫已呈瘋長之勢,我們幾乎每周都能看到有一個新的數(shù)據(jù)庫入場。在這種情況下,你有沒有想過哪一個數(shù)據(jù)庫會主導(dǎo)這個行業(yè)?
數(shù)據(jù)庫發(fā)展趨勢分析
我們先來看下數(shù)據(jù)庫發(fā)展現(xiàn)狀。從整個數(shù)據(jù)庫環(huán)境來看,專業(yè)化是大多數(shù)企業(yè)的發(fā)展方向。我們的數(shù)據(jù)庫要能解決特定的問題,比如可以按照時間序列提供原始數(shù)據(jù)查詢,以及一種基于Lucene的實時搜索方案 。但是對于一些初創(chuàng)企業(yè)來說,他們的系統(tǒng)架構(gòu)可能不適用于這種模式。于是,原生多模型數(shù)據(jù)庫產(chǎn)生。以ArangoDB和Cosmos DB為代表的多模型數(shù)據(jù)庫,得到很多中小企業(yè)的熱捧。
多模型數(shù)據(jù)庫兼有key/value鍵/值對、graph圖和document文檔數(shù)據(jù)模型,提供了涵蓋三種數(shù)據(jù)模型的統(tǒng)一的數(shù)據(jù)庫查詢語言,并允許在單個查詢中混合使用三種模型。這種數(shù)據(jù)庫夠適用于許多不同的用例,能夠最小化后臺部件,可支持不同數(shù)據(jù)建模技術(shù)(如文檔、圖表等),有助于企業(yè)降低總擁有成本,增加靈活性,進(jìn)而滿足整體技術(shù)堆棧需求。
表面看來,多模型數(shù)據(jù)庫幾乎是最完美的數(shù)據(jù)庫,但是其實這種數(shù)據(jù)庫也有弊端,數(shù)據(jù)庫結(jié)構(gòu)體系更加封閉,不能針對特定的用例進(jìn)行個性化升級,通用性非常差。由于工作負(fù)載的類型不同,我們需要專業(yè)的數(shù)據(jù)庫。例如,大多數(shù)物聯(lián)網(wǎng)用例都屬于編寫密集型。寫入時必須具有低延遲能力,讀取時要能分離,所以按照時間順序存儲數(shù)據(jù)并提高查詢的性能,是非常有必要的。
所以,到底如何選擇一個數(shù)據(jù)庫,誰會統(tǒng)領(lǐng)整個數(shù)據(jù)庫市場,其實很難找到標(biāo)準(zhǔn)答案。但如果我們非要構(gòu)建一個數(shù)據(jù)庫,那么相對來說,時間序列數(shù)據(jù)庫會是一個最佳選擇,因為從長遠(yuǎn)來看,使用多模型數(shù)據(jù)庫最終會導(dǎo)致數(shù)據(jù)遷移出現(xiàn)問題。
關(guān)于鍵值數(shù)據(jù)庫
那么,我們?yōu)槭裁葱枰I值數(shù)據(jù)庫?這可能是大家都會關(guān)心的問題。
大多數(shù)數(shù)據(jù)庫基本上都是在鍵值數(shù)據(jù)庫的基礎(chǔ)上建模的。因為鍵值存儲更具靈活性。無論是像MySQL這樣的關(guān)系數(shù)據(jù)庫,還是像Dgraph這樣的圖形數(shù)據(jù)庫,都不具備這樣的能力。
鍵值數(shù)據(jù)庫是一種非關(guān)系數(shù)據(jù)庫,通過簡單的鍵值方法來存儲數(shù)據(jù)。鍵值數(shù)據(jù)庫將數(shù)據(jù)存儲為鍵值對集合,其中鍵作為唯一標(biāo)識符。鍵和值都可以是從簡單對象到復(fù)雜復(fù)合對象的任何內(nèi)容。鍵值數(shù)據(jù)庫是高度可分區(qū)的,并且允許以其他類型的數(shù)據(jù)庫無法實現(xiàn)的規(guī)模進(jìn)行水平擴(kuò)展。比如:用戶可以輕松地在鍵值數(shù)據(jù)庫上創(chuàng)建一個像MongoDB這樣的文檔數(shù)據(jù)庫,文檔的每個字段將映射到惟一一個鍵。
鍵值數(shù)據(jù)庫來滿足了企業(yè)的建模需求。由于它只是在底層設(shè)置和操作,因此可以進(jìn)行大化的性能調(diào)優(yōu)。所以,鍵值數(shù)據(jù)庫成為體驗最好的可伸縮數(shù)據(jù)庫之一,一個數(shù)據(jù)庫幾乎可以解決所有專業(yè)化數(shù)據(jù)庫需求。
但是問題是,為什么鍵值數(shù)據(jù)庫最終沒有一統(tǒng)天下?那是因為,對比分布式數(shù)據(jù)庫以及事務(wù)型數(shù)據(jù)庫,鍵值數(shù)據(jù)庫還有很多不具備的功能。
FoundationDB成為后起之秀
FoundationDB,于2009年開發(fā),是一個能在多集群服務(wù)器上存放大規(guī)模結(jié)構(gòu)化數(shù)據(jù)的分布式數(shù)據(jù)庫。該數(shù)據(jù)庫系統(tǒng)專注于高性能、高可擴(kuò)展性、和不錯的容錯能力。同時,F(xiàn)oundationDB也是一個按詞法順序排列的事務(wù)性鍵值數(shù)據(jù)庫。它完全與ACID兼容,這意味著我們的數(shù)據(jù)庫(數(shù)據(jù)和索引)將始終處于一致的狀態(tài)。
2018年4月20日,蘋果公司宣布將旗下數(shù)據(jù)庫產(chǎn)品FoundationDB核心開源,這意味著將有越來越多的企業(yè)可以按照自己的方式實現(xiàn)更高級別的數(shù)據(jù)庫建模。但是,不是每個人都有時間或有意愿為數(shù)據(jù)庫建模,這就是FoundationDB具有革命性的地方。
FoundationDB 的做法是將數(shù)據(jù)模型與存儲分離。例如,數(shù)據(jù)存儲并沒有內(nèi)建索引。上一層會提供相應(yīng)的功能,它通過創(chuàng)建和存儲兩個鍵值對來實現(xiàn)索引,一個用于數(shù)據(jù),一個用于索引。
小結(jié)
FoundationDB將數(shù)據(jù)庫競爭提到一個新水平。我不能說它是完美的數(shù)據(jù)庫,因為它的底層架構(gòu)還不為人所知。但FoundationDB的確給更多用戶多了一層選擇,可以在兼具靈活性和更高性能的基礎(chǔ)上,讓操作變得更加簡單。