四大非關係型資料庫型別,你知道多少

2021-07-28 10:07:04 字數 3147 閱讀 2833

這篇文章的內容是摘自《introducing data science》,我們在這裡將要想大家介紹四種nosql資料庫的型別,堅持讀下去你會獲得更多有用的資訊。

目前對於非關係型資料庫主要有四種資料儲存型別:鍵值對儲存(key-value),文件儲存(document store),基於列的資料庫(column-oriented),還有就是圖形資料庫(graph database)。每一種都會解決相應的問題,這些問題是關係型資料庫所不能解決的。而在實際應用中都會將這幾種情況結合起來實現相應的功能。例如:orientdb就是一種多型別的資料庫,它整合了nosql的幾種儲存型別。orientdb是乙個圖形資料庫其每個節點都是乙個文字。

在開始介紹nosql資料庫之前,我們先來回顧一下關係型資料庫,這樣我們可以對非關聯式資料庫和關係型資料庫做乙個深入的比較。在資料建模上面,很多方法都是有可能被使用的。關係型資料庫會嚴格的按照標準化去建模(也就是常說的第一正規化、第二正規化、第三正規化等等):確保每一條資料都只被儲存一次。標準化是其結構設定的規範。例如:如果你想儲存乙個人的資訊和這個人的愛好這樣的資料,你可以建立兩個表:乙個用來儲存這個人的資訊,另乙個表用來儲存這個人的愛好。正如你在圖一中看到的,你必須有一張額外的對映表,這張表將人的資訊表和愛好表建立其對應的關係。這是因為他們的關係是多對多的關係,乙個人可以有多個愛好,並且多個人可能會有相同的愛好。

圖一乙個完整的關係型資料庫會由很多的實體表和關係對映表構成,現在你已經有了和nosql資料庫進行比較的東西了,下面讓我們看看這些不同的儲存型別。

基於列的資料庫(column-oriented)

傳統的關係型資料庫時基於行(row-oriented)的,每一行都帶有乙個行id並且行中的每乙個欄位都儲存在一張表中。假如說上面的例子中沒有單獨用一張表來儲存人的愛好,我們僅用一張表來儲存個人資訊和愛好,如圖二所示。這裡你就需要注意了,這種請款下你已經有一點違反關係型資料庫嚴格遵循的標準化了,因為愛好是有重複的。如果愛好是描述乙個人很好的一條額外資訊但是對你的用例沒有什麼重要性,那你可以將其列在hobbies這一列中,這是可以接受的一種方法。但是如果這條資訊對你根本不重要,那這些資料還有沒有必要存呢?

圖二在基於行的資料庫中進行查詢的時候,每次都會對每一行進行遍歷,不管某一列資料是否是你需要的都會進行遍歷。假如你只需要生日是九月的人的資料,基於行的資料庫會對這張表從上到下從左至右遍歷一遍,正像你在圖三中看到的那樣,最後再返回你需要的那些資料。

圖三對特定列的資料進行索引能有效的提高查詢速度,但是索引每一列同樣會帶來額外的負載,並且資料庫同樣也是會遍歷所有的列來取得要查詢的資料。

基於列的資料庫會將每一列分開單獨存放,當查詢乙個數量較小的列的時候其查詢速度是很快的。其結構如圖四所示

圖四這種設計看起來很像基於行的資料庫在每一列上都加了索引一樣。資料庫索引這種資料結構以犧牲儲存空間和更多的寫檔案(索引更新)為代價使查詢速度得到提公升。索引是將行號對映到資料上,而基於列資料庫是將資料對映到行號上面,這樣的方式用於計算是很簡單的。例如上面的例子,查詢有多少人的愛好包含archery(箭術)是很容易計算出來的。除此之外將每一列單獨存放可以優化壓縮因為每張表中只存一類資料。

說了這麼多,那應該在什麼時候使用基於行的資料庫,在什麼時候使用基於列的資料庫呢?在基於列的資料庫中要想增加一列新的資料是很容易的,因為現有的那些列是不會受新增列的影響的。但是要想增加一整條記錄就需要適應所有的表,防止各個表的資料之間對應關係出現錯誤。因此這使得基於行的資料庫在事務處理的時候要優勝於基於列的資料庫,因為它很好的實現了資料的實時更新。

基於列的資料庫的優勢在於分析資料和對資料形成乙個報告方面,例如對值求和、計算整條記錄等。基於行的資料庫經常被應用於實際交易中(例如銷售業務)。夜間批處理作業就可以使基於列資料庫更新,並且還支援快速查詢還有使用mapreduce技術聚合資料形成報告。現在使用基於列的資料庫儲存資料的有apache hbase,facebook』s cassandra,hypertable和grandfather of wide-column stores,google bigtable。

鍵值對儲存(key-value stores)

鍵值對的儲存方式在nosql資料庫中是最簡單的一種,其結構就像其名字所示,是乙個key-value的集合。如圖五所示的那樣。這種方式在nosql資料庫型別中是最可擴充套件的一種型別,並且可以儲存大量的資料。

圖五鍵值對中儲存的資料的型別是不受限制的,可以是乙個字串,也可以是乙個數字,甚至是由一系列的鍵值對封裝成的物件等。圖六向我們展示了乙個比較複雜的鍵值對結構。使用價值對儲存的資料庫有redis,voldemort,riak,和amazon』s dynamo。

圖六文件儲存(document stores)

文件儲存是基於鍵值對儲存的,其結構較之於鍵值對儲存更為複雜,可以說在鍵值對的基礎上更深入了一步。文件儲存是假定乙個特定文件的結構可以使用一種特定的模式來說明,它的出現較之於其他的nosql資料庫型別來說是最自然的,因為設計這種方式的最初的目的就是用來儲存日常文件的,並且這種方式支援對於那些通常已經聚合的資料進行複雜的查詢和計算。使用關係型資料庫儲存資料的方式在標準化的角度看是很有意義的:每條資料只被儲存一次並且通過外來鍵來進行聯絡。文件儲存不會去關心那些所謂的標準化,只要資料在該結構下是有意義的就可以。所以說關係型資料庫不能很好的適應特定企業的案例,只能用來做那些比較通用的案例。

圖七圖形資料庫(graph database)

現在剩下的是最後乙個nosql資料庫儲存型別,也是最複雜的乙個,主要使用一種高效的方式來儲存各個實體之間的關係。當資料之間是緊密聯絡的,例如社會關係、科學**的引文抑或是資本資產定價模型等等,使用圖形資料庫時最好的選擇。圖形或者網路資料有兩部分組成:

node-:實體本身,在乙個社會關係中可以認為是乙個人。

edge-:實體之間的關係。這個關係可以用一條線來表示,這條線有它自己的屬性。這條線可以有方向,箭頭可以表明誰是誰的上級。

如果給予足夠的關係和實體型別,圖形會變得非常的複雜,其發雜程度簡直難以置信。圖八已經展示了僅有有限幾個實體的複雜圖形。像neo4j圖形資料庫聲稱支援acid,然而文件儲存資料庫和鍵值對資料庫堅持base。

圖八非關係型資料庫的潛力是無限的,當今世界關係正變得越來越緊密,圖形儲存型別很可能會在地理上勝過其他的儲存型別資料庫,包括現在仍然佔絕對優勢的關係型資料庫。當今最流行的資料庫的排名和他們是如何發展的在中都可以找到。

圖九圖九列出了在九條記錄中,關係型資料庫在寫這本書的時候在前15中仍然佔主導地位。並且隨著newsql的出現,我們還沒有重新計算排名。neo4j——當下最流行的圖形儲存資料庫,在寫本書的時候可以發現其處在23名的位置上,而titan在53的位置上。

四大非關係型資料庫型別,你知道多少

這裡將要想大家介紹四種nosql資料庫的型別。目前對於非關係型資料庫主要有四種資料儲存型別 鍵值對儲存 key value 文件儲存 document store 基於列的資料庫 column oriented 還有就是圖形資料庫 graph database 每一種都會解決相應的問題,這些問題是關...

關係型資料庫 非關係型資料庫

關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...

關係型資料庫 非關係型資料庫

2019 02 25 20 38 36 關係型資料庫和非關係型資料的比較 一 關係型資料庫 關係型資料庫最典型的資料結構是表,由二維表及其之間的聯絡所組成的乙個資料組織 優點 1 易於維護 都是使用表結構,格式一致 2 使用方便 sql語言通用,可用於複雜查詢 3 複雜操作 支援sql,可用於乙個表...