DBMS(數(shù)據(jù)庫管理系統(tǒng))主要按數(shù)據(jù)存儲(chǔ)格式來分類。現(xiàn)階段主要分為以下幾種。
分層數(shù)據(jù)庫
層次數(shù)據(jù)庫是最早開發(fā)成功的數(shù)據(jù)庫系統(tǒng),它通過層次結(jié)構(gòu)(樹結(jié)構(gòu))來呈現(xiàn)數(shù)據(jù)。層次數(shù)據(jù)庫曾經(jīng)是數(shù)據(jù)庫的主流,但隨著關(guān)系數(shù)據(jù)庫的出現(xiàn)和普及,現(xiàn)在已經(jīng)很少使用了。
比較有代表性的層次數(shù)據(jù)庫是IBM公司開發(fā)成功的IMS(信息管理系統(tǒng))數(shù)據(jù)庫。
關(guān)系型數(shù)據(jù)庫
關(guān)系數(shù)據(jù)庫是當(dāng)今使用最廣泛的數(shù)據(jù)庫。關(guān)系數(shù)據(jù)庫誕生于1969年,有著悠久的歷史。與Excel工作表一樣,關(guān)系數(shù)據(jù)庫也使用由行和列組成的二維表來管理數(shù)據(jù),因此簡(jiǎn)單易懂。同時(shí),它還使用SQL(結(jié)構(gòu)化查詢語言)對(duì)數(shù)據(jù)進(jìn)行操作。
面向文檔數(shù)據(jù)庫
文檔數(shù)據(jù)庫受到Lotus Notes辦公軟件的啟發(fā),與上一個(gè)鍵值存儲(chǔ)數(shù)據(jù)庫類似。文檔數(shù)據(jù)庫可以看作是鍵值數(shù)據(jù)庫的升級(jí)版,允許鍵值嵌套。而且,文檔數(shù)據(jù)庫比鍵值數(shù)據(jù)庫具有更高的查詢效率。面向文檔的數(shù)據(jù)庫以文檔的形式存儲(chǔ)數(shù)據(jù)。每個(gè)文檔都是數(shù)據(jù)項(xiàng)的集合。每個(gè)數(shù)據(jù)項(xiàng)都有一個(gè)名稱和相應(yīng)的值。這些值可以是簡(jiǎn)單數(shù)據(jù)類型,例如字符串、數(shù)字和日期,也可以是復(fù)雜類型,例如有序列表和關(guān)聯(lián)對(duì)象。數(shù)據(jù)存儲(chǔ)的最小單位是文檔。同一個(gè)表中存儲(chǔ)的文檔屬性可以不同。數(shù)據(jù)可以以多種形式存儲(chǔ),例如XML、JSON 或JSONB。
列式存儲(chǔ)數(shù)據(jù)庫
列存儲(chǔ)數(shù)據(jù)庫將數(shù)據(jù)存儲(chǔ)在列族中。列族用于存儲(chǔ)經(jīng)常一起查詢的相關(guān)數(shù)據(jù)。例如,如果有一個(gè)Person 類,我們經(jīng)常會(huì)一起查詢他們的姓名和年齡,而不是他們的工資。在這種情況下,姓名和年齡將放置在一個(gè)列族中,工資放置在另一列族中。列式存儲(chǔ)數(shù)據(jù)庫通常用于處理分布式存儲(chǔ)的海量數(shù)據(jù)。
XML數(shù)據(jù)庫
XML數(shù)據(jù)庫是一種數(shù)據(jù)管理系統(tǒng),支持對(duì)XML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一種應(yīng)用)格式的文檔進(jìn)行存儲(chǔ)和查詢等操作。在系統(tǒng)中,開發(fā)人員可以查詢、導(dǎo)出和序列化指定格式的XML文檔。
鍵值存儲(chǔ)數(shù)據(jù)庫
鍵值存儲(chǔ)數(shù)據(jù)庫是用于存儲(chǔ)查詢中使用的主鍵(Key)和值(Value)組合的數(shù)據(jù)庫。具有編程語言知識(shí)的讀者可以將其視為關(guān)聯(lián)數(shù)組或哈希。
近年來,鍵值存儲(chǔ)數(shù)據(jù)庫隨著應(yīng)用于Google等需要超高速查詢大量數(shù)據(jù)的Web服務(wù)而逐漸受到關(guān)注。