CGFT大數(shù)據(jù)技術(shù)原理中NoSQL的四大類型是什么?今天跟著小編一起看看。
1、鍵值數(shù)據(jù)庫
鍵值數(shù)據(jù)庫(Key-Value Database)會使用一個(gè)哈希表,這個(gè)表中有一個(gè)特定的Key和一個(gè)指針指向特定的Value。Key可以用來定位Value,即存儲和檢索具體的Value。Value對數(shù)據(jù)庫而言是透明不可見的,不能對Value進(jìn)行索引和查詢,只能通過Key進(jìn)行查詢。
Value可以用來存儲任意類型的數(shù)據(jù),包括整型、字符型、數(shù)組、對象等。在存在大量寫操作的情況下,鍵值數(shù)據(jù)庫可以比關(guān)系數(shù)據(jù)庫取得明顯更好的性能。因?yàn)?,關(guān)系數(shù)據(jù)庫需要建立索引來加速查詢,當(dāng)存在大量寫操作時(shí),索引會發(fā)生頻繁更新,由此會產(chǎn)生高昂的索引維護(hù)代價(jià)。
關(guān)系數(shù)據(jù)庫通常很難水平擴(kuò)展,但是,鍵值數(shù)據(jù)庫天生具有良好的伸縮性,理論上幾乎可以實(shí)現(xiàn)數(shù)據(jù)量的無限擴(kuò)容。鍵值數(shù)據(jù)庫可以進(jìn)一步劃分為內(nèi)存鍵值數(shù)據(jù)庫和持久化(Persistent)鍵值數(shù)據(jù)庫。內(nèi)存鍵值數(shù)據(jù)庫把數(shù)據(jù)保存在內(nèi)存,如Memcached和Redis;持久化鍵值數(shù)據(jù)庫把數(shù)據(jù)保存在磁盤,如BerkeleyDB、Voldmort和Riak。
2、列族數(shù)據(jù)庫
列族數(shù)據(jù)庫一般采用列族數(shù)據(jù)模型,數(shù)據(jù)庫由多個(gè)行構(gòu)成,每行數(shù)據(jù)包含多個(gè)列族,不同的行可以具有不同數(shù)量的列族,屬于同一列族的數(shù)據(jù)會被存放在一起。每行數(shù)據(jù)通過行鍵進(jìn)行定位,與這個(gè)行鍵對應(yīng)的是一個(gè)列族,從這個(gè)角度來說,列族數(shù)據(jù)庫也可以被視為一個(gè)鍵值數(shù)據(jù)庫。列族可以被配置成支持不同類型的訪問模式,一個(gè)列族也可以被設(shè)置成放入內(nèi)存當(dāng)中,以消耗內(nèi)存為代價(jià)來換取更好的響應(yīng)性能。
3、文檔數(shù)據(jù)庫
在文檔數(shù)據(jù)庫中,文檔是數(shù)據(jù)庫的*小單位。雖然每一種文檔數(shù)據(jù)庫的部署都有所不同,但是,大都假定文檔以某種標(biāo)準(zhǔn)化格式封裝并對數(shù)據(jù)進(jìn)行加密,同時(shí)用多種格式進(jìn)行解碼,包括XML、YAML、JSON和BSON等,或者也可以使用二進(jìn)制格式(如PDF、微軟Office文檔等)。
文檔數(shù)據(jù)庫通過鍵來定位一個(gè)文檔,因此可以看成鍵值數(shù)據(jù)庫的一個(gè)衍生品,而且前者比后者具有更高的查詢效率。對于那些可以把輸人數(shù)據(jù)表示成文檔的應(yīng)用而言,文檔數(shù)據(jù)庫是*合適的一個(gè)文檔可以包含*復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如嵌套對象,并且不需要采用特定的數(shù)據(jù)模式,每個(gè)文檔可能具有完全不同的結(jié)構(gòu)。文檔數(shù)據(jù)庫既可以根據(jù)鍵(Key)來構(gòu)建索引,也可以基于文檔內(nèi)容來構(gòu)建索引。
尤其是基于文檔內(nèi)容的索引和查詢這種能力,是文檔數(shù)據(jù)庫不同于鍵值數(shù)據(jù)庫的地方,因?yàn)?,在鍵值數(shù)據(jù)庫中,值(Value)對數(shù)據(jù)庫是透明不可見的,不能根據(jù)值來構(gòu)建索引。文檔數(shù)據(jù)庫主要用于存儲并檢索文檔數(shù)據(jù),當(dāng)需要考慮很多關(guān)系和標(biāo)準(zhǔn)化約束以及需要事務(wù)支持時(shí),傳統(tǒng)的關(guān)系數(shù)據(jù)庫是更好的選擇。
4、圖形數(shù)據(jù)庫
圖形數(shù)據(jù)庫以圖論為基礎(chǔ),一個(gè)圖是一個(gè)數(shù)學(xué)概念,用來表示一個(gè)對象集合,包括頂點(diǎn)以連接頂點(diǎn)的邊。圖形數(shù)據(jù)庫使用圖作為數(shù)據(jù)模型來存儲數(shù)據(jù),完全不同于鍵值、列族和文檔數(shù)據(jù)模型,可以高效地存儲不同頂點(diǎn)之間的關(guān)系。圖形數(shù)據(jù)庫專門用于處理具有高度相互關(guān)聯(lián)關(guān)系的數(shù)據(jù),可以高效地處理實(shí)體之間的關(guān)系,比較適合于社交網(wǎng)絡(luò)、模式識別、依賴分析、推薦系統(tǒng)以及路徑尋找等問題。