簡(jiǎn)而言之,數(shù)據(jù)庫(kù)是用于存儲(chǔ)數(shù)據(jù)的倉(cāng)庫(kù),該倉(cāng)庫(kù)根據(jù)特定規(guī)則將數(shù)據(jù)存儲(chǔ)在磁盤上。為了方便用戶組織和管理數(shù)據(jù),它提供了一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)。通過數(shù)據(jù)庫(kù)管理系統(tǒng),用戶可以有效地組織和管理存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)。那么數(shù)據(jù)庫(kù)系統(tǒng)又是什么呢?數(shù)據(jù)庫(kù)的種類又有哪些呢?在了解這兩個(gè)問題之前,先來看看數(shù)據(jù)庫(kù)是什么吧。
數(shù)據(jù)庫(kù)系統(tǒng)是什么?
數(shù)據(jù)庫(kù)(DataBase,DB)提供了一個(gè)存儲(chǔ)空間來存儲(chǔ)各種數(shù)據(jù),可以將數(shù)據(jù)庫(kù)視為一個(gè)存儲(chǔ)數(shù)據(jù)的容器。一個(gè)數(shù)據(jù)庫(kù)可能包含許多文件,一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)中通常包含許多數(shù)據(jù)庫(kù)。
數(shù)據(jù)庫(kù)管理系統(tǒng)(DatabaseManagementSystem,DBMS)是用戶創(chuàng)建、管理和維護(hù)數(shù)據(jù)庫(kù)時(shí)所使用的軟件,位于用戶和操作系統(tǒng)之間,對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一管理。DBMS能定義數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),提供數(shù)據(jù)的操作機(jī)制,維護(hù)數(shù)據(jù)庫(kù)的安全性、完整性和可靠性。
數(shù)據(jù)庫(kù)系統(tǒng)(DatabaseSystem,DBS)由硬件和軟件共同構(gòu)成。硬件主要用于存儲(chǔ)數(shù)據(jù)庫(kù)中的數(shù)據(jù),包括計(jì)算機(jī)、存儲(chǔ)設(shè)備等。軟件部分主要包括數(shù)據(jù)庫(kù)管理系統(tǒng)、支持?jǐn)?shù)據(jù)庫(kù)管理系統(tǒng)運(yùn)行的操作系統(tǒng),以及支持多種語言進(jìn)行應(yīng)用開發(fā)的訪問技術(shù)等。
DBMS(數(shù)據(jù)庫(kù)管理系統(tǒng))主要通過數(shù)據(jù)的保存格式進(jìn)行分類,現(xiàn)階段主要分為以下幾種類型。
層次數(shù)據(jù)庫(kù)(Hierarchical?Database,HDB)
層次數(shù)據(jù)庫(kù)是最早研制成功的數(shù)據(jù)庫(kù)系統(tǒng),它把數(shù)據(jù)通過層次結(jié)構(gòu)(樹形結(jié)構(gòu))的方式表現(xiàn)出來。層次數(shù)據(jù)庫(kù)曾經(jīng)是數(shù)據(jù)庫(kù)的主流,但隨著關(guān)系數(shù)據(jù)庫(kù)的出現(xiàn)和普及,現(xiàn)在已經(jīng)很少使用了。
比較具有代表性的層次數(shù)據(jù)庫(kù)是IMS(InformationManagementSystem)數(shù)據(jù)庫(kù),由IBM公司研制成功。
關(guān)系型數(shù)據(jù)庫(kù)(Relational?Database,RDB)
關(guān)系型數(shù)據(jù)庫(kù)是現(xiàn)在應(yīng)用最廣泛的數(shù)據(jù)庫(kù)。關(guān)系型數(shù)據(jù)庫(kù)在1969年誕生,可謂歷史悠久。和Excel工作表一樣,關(guān)系型數(shù)據(jù)庫(kù)也采用由行和列組成的二維表來管理數(shù)據(jù),所以簡(jiǎn)單易懂。同時(shí),它還使用SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語言)對(duì)數(shù)據(jù)進(jìn)行操作。
面向文檔(Document-Oriented)數(shù)據(jù)庫(kù)
文檔型數(shù)據(jù)庫(kù)的靈感來自于LotusNotes辦公軟件,和最后一種鍵值存儲(chǔ)數(shù)據(jù)庫(kù)類似。文檔型數(shù)據(jù)庫(kù)可以看作是鍵值數(shù)據(jù)庫(kù)的升級(jí)版,允許之間嵌套鍵值。而且文檔型數(shù)據(jù)庫(kù)比鍵值數(shù)據(jù)庫(kù)的查詢效率更高。
面向文檔數(shù)據(jù)庫(kù)會(huì)將數(shù)據(jù)以文檔的形式存儲(chǔ)。每個(gè)文檔都是一系列數(shù)據(jù)項(xiàng)的集合。每個(gè)數(shù)據(jù)項(xiàng)都有一個(gè)名稱與對(duì)應(yīng)的值,值既可以是簡(jiǎn)單的數(shù)據(jù)類型,如字符串、數(shù)字和日期等;也可以是復(fù)雜的類型,如有序列表和關(guān)聯(lián)對(duì)象。
數(shù)據(jù)存儲(chǔ)的最小單位是文檔,同一個(gè)表中存儲(chǔ)的文檔屬性可以是不同的,數(shù)據(jù)可以使用XML、JSON或者JSONB等多種形式存儲(chǔ)。
具有代表性的面向文檔數(shù)據(jù)庫(kù)有MongDB和CouchDB。
列存儲(chǔ)(Column-oriented)數(shù)據(jù)庫(kù)
列存儲(chǔ)數(shù)據(jù)庫(kù)將數(shù)據(jù)存儲(chǔ)存在列族(columnfamily)中,一個(gè)列族用來存儲(chǔ)經(jīng)常被一起查詢的相關(guān)數(shù)據(jù)。例如,如果有一個(gè)Person類,我們經(jīng)常會(huì)一起查詢他們的姓名和年齡而不是薪資。這種情況下,姓名和年齡就會(huì)被放入一個(gè)列族中,而薪資則在另一個(gè)列族中。
列存儲(chǔ)數(shù)據(jù)庫(kù)通常用來應(yīng)對(duì)分布式存儲(chǔ)的海量數(shù)據(jù)。具有代表性的列存儲(chǔ)數(shù)據(jù)庫(kù)有Cassandra和HBase。
XML數(shù)據(jù)庫(kù)(XML?Database,XMLDB)
XML數(shù)據(jù)庫(kù)是一種支持對(duì)XML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)應(yīng)用)格式文檔進(jìn)行存儲(chǔ)和查詢等操作的數(shù)據(jù)管理系統(tǒng)。在系統(tǒng)中,開發(fā)人員可以對(duì)數(shù)據(jù)庫(kù)中的XML文檔進(jìn)行查詢、導(dǎo)出和指定格式的序列化。
鍵值存儲(chǔ)數(shù)據(jù)庫(kù)(Key-Value?Store,KVS)
鍵值存儲(chǔ)數(shù)據(jù)庫(kù)是用來保存查詢所使用的主鍵(Key)和值(Value)的組合的數(shù)據(jù)庫(kù)。具有編程語言知識(shí)的讀者可以把它想象成關(guān)聯(lián)數(shù)組或者散列(hash)。
以上就是關(guān)于數(shù)據(jù)庫(kù)系統(tǒng)是什么,以及數(shù)據(jù)庫(kù)的種類有哪些的全部?jī)?nèi)容,想了解更多關(guān)于數(shù)據(jù)庫(kù)的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。