在本文中,我們將簡(jiǎn)要介紹NoSQL數(shù)據(jù)庫(kù)的四種類(lèi)型。
什么是NoSQL數(shù)據(jù)庫(kù)?一般而言,以不同于關(guān)系數(shù)據(jù)庫(kù)的格式存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù)被稱(chēng)為NoSQL數(shù)據(jù)庫(kù)。NoSQL代表“不僅是 SQL”,它涉及這樣一個(gè)事實(shí),即數(shù)據(jù)庫(kù)可以完全使用“無(wú)SQL”來(lái)存儲(chǔ)和管理數(shù)據(jù),或者它可以結(jié)合使用新方法(NoSQL)的靈活性和傳統(tǒng)關(guān)系系統(tǒng)(SQL)的強(qiáng)大功能。
NoSQL數(shù)據(jù)存儲(chǔ)有哪些不同類(lèi)型?NoSQL數(shù)據(jù)庫(kù)可以分為四種類(lèi)型:
一、鍵值(KV)商店
這是最簡(jiǎn)單的NoSQL數(shù)據(jù)庫(kù)類(lèi)型。在這種類(lèi)型下,數(shù)據(jù)以鍵/值對(duì)的形式存儲(chǔ)。對(duì)于每個(gè)鍵,都有一個(gè)分配給它的值。每個(gè)Key都是唯一的,只接受字符串,而對(duì)應(yīng)于特定Key的值可以接受String、JSON、XML等。由于這種行為,它能夠處理海量數(shù)據(jù)。
鍵值存儲(chǔ)將數(shù)據(jù)維護(hù)為由索引鍵和值組成的對(duì)。KV使用索引Key存儲(chǔ)查詢(xún)值。數(shù)據(jù)庫(kù)中的每個(gè)項(xiàng)目都存儲(chǔ)在鍵(索引)和值對(duì)中。KV存儲(chǔ)類(lèi)似于關(guān)系數(shù)據(jù)庫(kù),但每個(gè)表只有兩列。
一些KV存儲(chǔ)甚至可能允許基本連接來(lái)幫助我們掃描,如果有復(fù)合連接,它們可能不是合適的選擇。有多個(gè)KV Stores可用,每個(gè)KV Stores的主要區(qū)別在于它們對(duì)CAP定理的適應(yīng)以及它們的內(nèi)存v/s存儲(chǔ)使用配置。KV存儲(chǔ)具有快速查詢(xún)性能,最適合需要內(nèi)容緩存的應(yīng)用程序,例如不斷更新前 10 名得分和玩家的游戲網(wǎng)站。
1、特點(diǎn):一致性;交易;查詢(xún)特征;數(shù)據(jù)結(jié)構(gòu)和縮放。
2、優(yōu)點(diǎn):簡(jiǎn)單數(shù)據(jù)模型;可擴(kuò)展;值可以包括JSON、XML、靈活的模式;;由于它的簡(jiǎn)單性,速度極快;最適合數(shù)據(jù)不高度相關(guān)的情況。
3、缺點(diǎn):沒(méi)有關(guān)系,創(chuàng)建自己的外鍵;不適合復(fù)雜數(shù)據(jù);缺乏掃描功能;不適合操作而不是CRUD(創(chuàng)建、讀取、更新、刪除)
二、文檔存儲(chǔ)
文檔存儲(chǔ)是鍵值存儲(chǔ)簡(jiǎn)單性的擴(kuò)展,其中值存儲(chǔ)在結(jié)構(gòu)化文檔(如 XML或JSON)中。文檔存儲(chǔ)使得在面向?qū)ο筌浖杏成鋵?duì)象變得容易。
文檔數(shù)據(jù)庫(kù)是無(wú)模式的,我們不必事先定義模式并遵守它。它允許我們以文檔格式(JSON、XML等)存儲(chǔ)復(fù)雜數(shù)據(jù)。文檔數(shù)據(jù)庫(kù)不支持關(guān)系。文檔存儲(chǔ)中的每個(gè)文檔都是獨(dú)立的,沒(méi)有關(guān)系完整性。
文檔存儲(chǔ)可以用于KV存儲(chǔ)數(shù)據(jù)庫(kù)的所有用例,但它還有額外的優(yōu)點(diǎn),比如沒(méi)有僅通過(guò)鍵查詢(xún)的限制,甚至可以查詢(xún)文檔中的屬性,而且每個(gè)文檔中的數(shù)據(jù)可以在不同的格式。例如,一個(gè)產(chǎn)品評(píng)論網(wǎng)站,零個(gè)或多個(gè)用戶(hù)可以評(píng)論每個(gè)產(chǎn)品,每個(gè)評(píng)論都可以被其他用戶(hù)評(píng)論,零個(gè)到多個(gè)用戶(hù)可以喜歡或不喜歡。
例如,一個(gè)產(chǎn)品評(píng)論網(wǎng)站,零個(gè)或多個(gè)用戶(hù)可以對(duì)每個(gè)產(chǎn)品進(jìn)行評(píng)論,每個(gè)評(píng)論都可以被其他用戶(hù)評(píng)論,并且可以被零個(gè)或多個(gè)用戶(hù)喜歡或不喜歡。
1、特點(diǎn):更快的查詢(xún);由于其結(jié)構(gòu),可以輕松處理大量數(shù)據(jù);靈活的索引。
2、優(yōu)點(diǎn):簡(jiǎn)單而強(qiáng)大的數(shù)據(jù)模型;可擴(kuò)展;開(kāi)放格式;沒(méi)有外鍵。
3、缺點(diǎn):不適用于關(guān)系數(shù)據(jù);查詢(xún)僅限于鍵和索引;Map Reduce 用于更重要的查詢(xún)
三、列族數(shù)據(jù)存儲(chǔ)或?qū)捔袛?shù)據(jù)存儲(chǔ)
寬列數(shù)據(jù)存儲(chǔ)采用混合方法,將關(guān)系數(shù)據(jù)庫(kù)的聲明性特征游戲與基于鍵值對(duì)且完全可變的鍵值存儲(chǔ)模式相結(jié)合。寬列數(shù)據(jù)庫(kù)將數(shù)據(jù)表存儲(chǔ)為數(shù)據(jù)列的部分而不是數(shù)據(jù)行。列族數(shù)據(jù)庫(kù)將列族中的數(shù)據(jù)存儲(chǔ)為具有許多與行鍵關(guān)聯(lián)的列的行。列族是一組經(jīng)常一起訪問(wèn)的相關(guān)數(shù)據(jù)。
1、特點(diǎn):多維密鑰存儲(chǔ);本質(zhì)上是持久的;分散式;高靈活性。
2、優(yōu)點(diǎn):支持半結(jié)構(gòu)化數(shù)據(jù);自然索引;可擴(kuò)展。
3、缺點(diǎn):不適用于關(guān)系數(shù)據(jù)。
四、圖數(shù)據(jù)庫(kù)
圖數(shù)據(jù)庫(kù)的特定用途是存儲(chǔ)面向圖的數(shù)據(jù)結(jié)構(gòu)。圖數(shù)據(jù)庫(kù)是任何提供無(wú)索引鄰接的存儲(chǔ)系統(tǒng)。這意味著每個(gè)節(jié)點(diǎn)都包含一個(gè)指向其相鄰元素的直接指針,并且不需要進(jìn)行索引查找。隨著節(jié)點(diǎn)數(shù)量的增加,一跳的成本保持不變。
圖數(shù)據(jù)庫(kù)針對(duì)遍歷連接數(shù)據(jù)進(jìn)行了優(yōu)化,例如遍歷社交網(wǎng)絡(luò)上的聯(lián)系人列表以找出連接程度。圖數(shù)據(jù)庫(kù)通常帶有靈活的數(shù)據(jù)模型,這意味著不需要定義邊和頂點(diǎn)的類(lèi)型。
1、特點(diǎn):靈活性;敏捷;提高性能,即使有大量數(shù)據(jù)。
2、優(yōu)點(diǎn):極其強(qiáng)大;連接的數(shù)據(jù)在本地索引;可以提供酸;實(shí)時(shí)結(jié)果;敏捷結(jié)構(gòu)。
3、缺點(diǎn):難以橫向擴(kuò)展,但可以縱向擴(kuò)展。
總結(jié):NoSQL數(shù)據(jù)庫(kù)的四種類(lèi)型分別為鍵值 (KV) 存儲(chǔ)、文檔存儲(chǔ)、列族數(shù)據(jù)存儲(chǔ)和圖形數(shù)據(jù)庫(kù)。
審核編輯:湯梓紅
-
SQL
+關(guān)注
關(guān)注
1文章
774瀏覽量
44251 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3846瀏覽量
64685 -
nosql
+關(guān)注
關(guān)注
0文章
39瀏覽量
10037
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論