溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

五大主流數(shù)據(jù)庫(kù)模型分別是什么

發(fā)布時(shí)間:2022-01-14 16:36:52 來(lái)源:億速云 閱讀:128 作者:柒染 欄目:云計(jì)算

小編今天帶大家了解五大主流數(shù)據(jù)庫(kù)模型分別是什么,文中知識(shí)點(diǎn)介紹的非常詳細(xì)。覺(jué)得有幫助的朋友可以跟著小編一起瀏覽文章的內(nèi)容,希望能夠幫助更多想解決這個(gè)問(wèn)題的朋友找到問(wèn)題的答案,下面跟著小編一起深入學(xué)習(xí)“五大主流數(shù)據(jù)庫(kù)模型分別是什么”的知識(shí)吧。

什么是數(shù)據(jù)模型?

訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)取決于數(shù)據(jù)庫(kù)實(shí)現(xiàn)的數(shù)據(jù)模型。數(shù)據(jù)模型會(huì)影響客戶(hù)端通過(guò)API對(duì)數(shù)據(jù)的操作。不同的數(shù)據(jù)模型可能會(huì)提供或多或少的功能。一般而言,數(shù)據(jù)模型不會(huì)直接提供過(guò)多的功能,許多功能必須由客戶(hù)端自行實(shí)現(xiàn)。

數(shù)據(jù)模型決定了客戶(hù)端如何對(duì)數(shù)據(jù)進(jìn)行編碼存儲(chǔ)。應(yīng)用程序需要某種域模型與存儲(chǔ)技術(shù)支持的特性進(jìn)行映射。

迄今為止,主導(dǎo)的數(shù)據(jù)模型仍然是關(guān)系模型。在這里,我們主要想為大家介紹一下非關(guān)系模型,作為對(duì)比,本文也會(huì)簡(jiǎn)要介紹一下關(guān)系模型。

數(shù)據(jù)模型概述

1.關(guān)系模型

關(guān)系模型使用記錄(由元組組成)進(jìn)行存儲(chǔ),記錄存儲(chǔ)在表中,表由架構(gòu)界定。表中的每個(gè)列都有名稱(chēng)和類(lèi)型,表中的所有記錄都要符合表的定義。SQL是專(zhuān)門(mén)的查詢(xún)語(yǔ)言,提供相應(yīng)的語(yǔ)法查找符合條件的記錄,如表聯(lián)接(Join)。表聯(lián)接可以基于表之間的關(guān)系在多表之間查詢(xún)記錄。

表中的記錄可以被創(chuàng)建和刪除,記錄中的字段也可以單獨(dú)更新。

關(guān)系模型數(shù)據(jù)庫(kù)通常提供事務(wù)處理機(jī)制,這為涉及多條記錄的自動(dòng)化處理提供了解決方案。

對(duì)不同的編程語(yǔ)言而言,表可以被看成數(shù)組、記錄列表或者結(jié)構(gòu)。表可以使用B樹(shù)和哈希表進(jìn)行索引,以應(yīng)對(duì)高性能訪問(wèn)。

2.鍵值存儲(chǔ)

鍵值存儲(chǔ)提供了基于鍵對(duì)值的訪問(wèn)方式。

鍵值對(duì)可以被創(chuàng)建或刪除,與鍵相關(guān)聯(lián)的值可以被更新。

鍵值存儲(chǔ)一般不提供事務(wù)處理機(jī)制。

對(duì)不同的編程語(yǔ)言而言,鍵值存儲(chǔ)類(lèi)似于哈希表。對(duì)此,不同的編程語(yǔ)言有不同的名字(如,Java稱(chēng)之為“HashMap”,Perl稱(chēng)之為“hash”,Python稱(chēng)之為“dict”,PHP稱(chēng)之為“associative array”),C++則稱(chēng)之為“boost::unordered_map<...>”。

鍵值存儲(chǔ)支持鍵上自有的隱式索引。

鍵值存儲(chǔ)看起來(lái)好像不太有用,但卻可以在“值”上存儲(chǔ)大量信息。“值”可以是一個(gè)XML文檔,一個(gè)JSON對(duì)象,或者其它任何序列化形式。

重要的是,鍵值存儲(chǔ)引擎并不在意“值”的內(nèi)部結(jié)構(gòu),它依賴(lài)客戶(hù)端對(duì)“值”進(jìn)行解釋和管理。

3.文檔存儲(chǔ)

文檔存儲(chǔ)支持對(duì)結(jié)構(gòu)化數(shù)據(jù)的訪問(wèn),不同于關(guān)系模型的是,文檔存儲(chǔ)沒(méi)有強(qiáng)制的架構(gòu)。

事實(shí)上,文檔存儲(chǔ)以封包鍵值對(duì)的方式進(jìn)行存儲(chǔ)。在這種情況下,應(yīng)用對(duì)要檢索的封包采取一些約定,或者利用存儲(chǔ)引擎的能力將不同的文檔劃分成不同的集合,以管理數(shù)據(jù)。

與關(guān)系模型不同的是,文檔存儲(chǔ)模型支持嵌套結(jié)構(gòu)。例如,文檔存儲(chǔ)模型支持XML和JSON文檔,字段的“值”又可以嵌套存儲(chǔ)其它文檔。文檔存儲(chǔ)模型也支持?jǐn)?shù)組和列值鍵。

與鍵值存儲(chǔ)不同的是,文檔存儲(chǔ)關(guān)心文檔的內(nèi)部結(jié)構(gòu)。這使得存儲(chǔ)引擎可以直接支持二級(jí)索引,從而允許對(duì)任意字段進(jìn)行高效查詢(xún)。支持文檔嵌套存儲(chǔ)的能力,使得查詢(xún)語(yǔ)言具有搜索嵌套對(duì)象的能力,XQuery就是一個(gè)例子。MongoDB通過(guò)支持在查詢(xún)中指定JSON字段路徑實(shí)現(xiàn)類(lèi)似的功能。

4.列式存儲(chǔ)

如果翻轉(zhuǎn)數(shù)據(jù),列式存儲(chǔ)與關(guān)系存儲(chǔ)將會(huì)非常相似。與關(guān)系模型存儲(chǔ)記錄不同,列式存儲(chǔ)以流的方式在列中存儲(chǔ)所有的數(shù)據(jù)。對(duì)于任何記錄,索引都可以快速地獲取列上的數(shù)據(jù)。

Map-reduce的實(shí)現(xiàn)Hadoop的流數(shù)據(jù)處理效率非常高,列式存儲(chǔ)的優(yōu)點(diǎn)體現(xiàn)的淋漓極致。因此,HBase和Hypertable通常作為非關(guān)系型數(shù)據(jù)倉(cāng)庫(kù),為Map-reduce進(jìn)行數(shù)據(jù)分析提供支持。

關(guān)系類(lèi)型的列標(biāo)對(duì)數(shù)據(jù)分析效果不好,因此,用戶(hù)經(jīng)常將更復(fù)雜的數(shù)據(jù)存儲(chǔ)在列式數(shù)據(jù)庫(kù)中。這直接體現(xiàn)在Cassandra中,它引入的“column family”可以被認(rèn)為是一個(gè)“super-column”。

列式存儲(chǔ)支持行檢索,但這需要從每個(gè)列獲取匹配的列值,并重新組成行。

5.圖形數(shù)據(jù)庫(kù)

圖形數(shù)據(jù)庫(kù)存儲(chǔ)頂點(diǎn)和邊的信息,有的支持添加注釋。

圖形數(shù)據(jù)庫(kù)可用于對(duì)事物建模,如社交圖譜、真實(shí)世界的各種對(duì)象。IMDB(Internet Movie Database)站點(diǎn)的內(nèi)容就組成了一幅復(fù)雜的圖像,演員與電影彼此交織在一起。

圖形數(shù)據(jù)庫(kù)的查詢(xún)語(yǔ)言一般用于查找圖形中斷點(diǎn)的路徑,或端點(diǎn)之間路徑的屬性。Neo4j是一個(gè)典型的圖形數(shù)據(jù)庫(kù)。

選擇哪一種數(shù)據(jù)模型?

數(shù)據(jù)模型有著各自的優(yōu)缺點(diǎn),它們適用于不同的領(lǐng)域。不管是選擇關(guān)系模型,還是非關(guān)系模型,都要根據(jù)實(shí)際應(yīng)用的場(chǎng)景做出選擇。也許你會(huì)發(fā)現(xiàn)單一的數(shù)據(jù)模型不能滿(mǎn)足你的解決方案,許多大型應(yīng)用可能需要集成多種數(shù)據(jù)模型。(張志平/編譯)

感謝大家的閱讀,以上就是“五大主流數(shù)據(jù)庫(kù)模型分別是什么”的全部?jī)?nèi)容了,學(xué)會(huì)的朋友趕緊操作起來(lái)吧。相信億速云小編一定會(huì)給大家?guī)?lái)更優(yōu)質(zhì)的文章。謝謝大家對(duì)億速云網(wǎng)站的支持!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI