首頁技術文章正文

NoSQL的4種存儲數(shù)據(jù)庫【詳解】

更新時間:2022-07-11 來源:黑馬程序員 瀏覽量:

1.鍵值對存儲數(shù)據(jù)庫

鍵值對存儲數(shù)據(jù)庫是NoSQL數(shù)據(jù)庫中的一種類型,也是最簡單的NoSQL數(shù)據(jù)庫。鍵對值對存儲數(shù)據(jù)庫中的數(shù)據(jù)是以鍵值對的形式來存儲的。常見的鍵值對存儲數(shù)據(jù)庫有Redis、Tokyo Cabinet/Tyrant、Voldemort以及Oracle BDB等數(shù)據(jù)庫。鍵值對存儲數(shù)據(jù)庫的結構示意圖如下。
1657527938262_71.png

鍵值對存儲數(shù)據(jù)庫的結構實際上是一個映射,即Key是查找每條數(shù)據(jù)的唯一標識符,Value是該數(shù)據(jù)實際存儲的內容。鍵值對存儲數(shù)據(jù)庫結構是采用哈希函數(shù)來實現(xiàn)鍵到值的映射,當查詢數(shù)據(jù)時,基于Key的哈希值會直接定位到數(shù)據(jù)所在的位置,實現(xiàn)快速查詢,并支持海量數(shù)據(jù)的高并發(fā)查詢。

應用場景1:會話儲存場景

會話存儲指的是一個面向會話的應用程序(如Web應用程序)在用戶登錄時啟動會話,并保持活動狀態(tài)直到用戶注銷或會話超時,在此期間,應用程序將所有與會話相關的數(shù)據(jù)存儲在內存或鍵值對存儲數(shù)據(jù)庫中。會話數(shù)據(jù)包括用戶資料信息、消息、個性化數(shù)據(jù)和主題、建議、有針對性的促銷和折扣。每個用戶會話具有唯一的標識符,除了主鍵之外,任何其他鍵都無法查詢會話數(shù)據(jù),因此鍵值對存儲數(shù)據(jù)庫更適合于存儲會話數(shù)據(jù)。

應用場景2:購物車

購物車指的是電子商務網(wǎng)站中的購物車功能。在假日購物季,電子商務網(wǎng)站可能會在幾秒鐘內收到數(shù)十億的訂單,鍵值對存儲數(shù)據(jù)庫可以處理海量數(shù)據(jù)的擴展和極高的狀態(tài)變化,同時通過分布式處理和存儲為數(shù)百萬并發(fā)用戶提供服務。此外,鍵值對存儲數(shù)據(jù)庫還具有內置冗余的功能,可以處理丟失的存儲節(jié)點。

2.文檔存儲數(shù)據(jù)庫

文檔存儲數(shù)據(jù)庫不是文檔管理系統(tǒng)。文檔存儲數(shù)據(jù)庫是用于存儲和管理文檔,其中文檔是結構化的數(shù)據(jù)(如JSON格式)。常見的文檔存儲數(shù)據(jù)庫有MongoDB、CouchDB以及RavenDB等數(shù)據(jù)庫。文檔存儲數(shù)據(jù)庫的結構示意圖如下。
1657528816211_72.png

文檔存儲數(shù)據(jù)庫存儲的文檔可以是不同結構的,即JSON、XML以及BSON等格式。

應用場景1:內容管理應用程序

內容管理應用程序存儲數(shù)據(jù),首選的就是文檔存儲數(shù)據(jù)庫,例如博客和視頻平臺主要使用的數(shù)據(jù)庫就是文檔存儲數(shù)據(jù)庫。通過文檔存儲數(shù)據(jù)庫,內容管理應用程序所跟蹤的每個實體都可存儲為單個文檔。隨著需求的發(fā)展,對于開發(fā)人員來說,可以使用文檔存儲數(shù)據(jù)庫更直觀地更新應用程序。此外,如果需要更改數(shù)據(jù)模型,則只需要更新受影響的文檔即可,而不需要更新架構,也不需要等到數(shù)據(jù)庫停機時進行更改。

應用場景2:電子商務應用程序

在電子商務應用程序中,文檔存儲數(shù)據(jù)庫可以高效且有效的存儲商品的信息。例如,在電子商務應用程序中,不同的產(chǎn)品具有不同數(shù)量的屬性。若是在關系型數(shù)據(jù)庫中管理數(shù)干個屬性,則效率比較低,并且閱讀的性能會受到影響;若是使用文檔存儲數(shù)據(jù)庫的話,可以在單個文檔中描述每個產(chǎn)品的屬性,既可以方便管理,又可以加快閱讀產(chǎn)品的速度,并且更改一個產(chǎn)品的屬性不會影響其他的產(chǎn)品。

3.列式存儲數(shù)據(jù)庫

列式存儲數(shù)據(jù)庫是以列為單位存儲數(shù)據(jù),然后將列值順序地存入數(shù)據(jù)庫中,這種數(shù)據(jù)存儲法不同于基于行式存儲的傳統(tǒng)關系型數(shù)據(jù)庫。列式存儲數(shù)據(jù)庫可以高效地存儲數(shù)據(jù),也可以快速地處理批量數(shù)據(jù)實時查詢數(shù)據(jù)。常見的列式存儲數(shù)據(jù)庫有HBase、Cassandra、Riak以及HyperTable等數(shù)據(jù)庫。列式存儲數(shù)據(jù)庫的結構示意圖如下。

1657528998876_73.png

在列式存儲數(shù)據(jù)庫中,如果列值不存在,則不需要存儲(陰影部分為列值不存在),這樣的話,遇到Nul值,就不需要存儲,可以減少I/O操作和避免內存空間的浪費。

應用場景1:事件記錄

在事件記錄中,使用列式存儲數(shù)據(jù)庫來存儲應用程序的狀態(tài)以及應用程序遇到錯誤等事件信息。由于列式存儲數(shù)據(jù)庫具有高擴展性,因此可高效地存儲應用程序源源不斷產(chǎn)生的事件記錄。

應用場景2:博客網(wǎng)站

在博客網(wǎng)站中,列式存儲數(shù)據(jù)庫可以將博客的“標簽”、“類別”“連接”及“引用通告”等內容存放在不同的列中,便于進行數(shù)據(jù)分析。

4.圖形存儲數(shù)據(jù)庫

圖形存儲數(shù)據(jù)庫不是網(wǎng)絡數(shù)據(jù)庫,它是NoSQL數(shù)據(jù)庫的一種類型,其主要是應用圖形理論來存儲實體之間的關系信息,其中,實體被視為圖形的“節(jié)點”,關系被視為圖形的“邊”,“邊”按照關系將“節(jié)點”按進行連接。常見的圖形存儲數(shù)據(jù)庫有Neo4j、FlockDB、AllegroGrap以及GraphDB等數(shù)據(jù)庫。圖形存儲數(shù)據(jù)庫的結構示意圖如下。

1657529200376_74.png

利用圖形存儲數(shù)據(jù)庫存儲的數(shù)據(jù),可以很清晰知道兩個實體之間的關系,即A和D是朋友,C是A朋友的朋友。

應用場景1:欺詐檢測

在欺詐檢測中,圖形存儲數(shù)據(jù)庫能夠有效地防范復雜的欺詐行為。在現(xiàn)代欺詐及各種類型的金融犯罪中,例如銀行欺詐、信用卡欺詐、電子商務欺詐以及保險欺詐等,欺詐者通過使用改變自己身份等的手段逃避風控規(guī)則,從而達到欺詐目的。盡管欺詐者是可以改變所有涉及網(wǎng)絡的關聯(lián)關系,也可以在所有涉及網(wǎng)絡的群體中同步執(zhí)行相同操作來躲避風控,但我們可以通過圖形存儲數(shù)據(jù)庫建立跟蹤全局用戶的跟蹤視角,實時利用圖形存儲數(shù)據(jù)庫來分析具有欺詐行為的離散數(shù)據(jù),從而識別欺詐環(huán)節(jié),這樣的話,最大程度上快速有效地防范和解決欺詐行為。

應用場景2:推薦應用

在推薦應用中,我們可以借助圖形存儲數(shù)據(jù)庫存儲購物網(wǎng)站中客戶的購買記錄、客戶興趣等信息,然后根據(jù)客戶當前瀏覽的商品結合已存儲的購物信息,從而推薦相關的商品。




猜你喜歡:

使用MySQL數(shù)據(jù)庫,實現(xiàn)你的第一個JDBC程序

MySQL的隔離級別指的是什么?

SQL語言由哪幾部分組成?

黑馬程序員Python+大數(shù)據(jù)開發(fā)培訓

分享到:
在線咨詢 我要報名
和我們在線交談!