大數據相關數據庫技術概覽

大數據相關數據庫技術概覽

大數據技術棧裡的數據庫種類繁多,在海量數據存儲方面各有各的優勢。各種大數據數據庫需要根據特定的應用場景來具體分析使用哪一種,本文將系統的整理一下各種NoSQL數據庫的功能區別、使用場景以及企業應用情況,希望能給該領域的開發者提供一定的參考。

數據庫種類

目前市場上主要有以下NoSQL數據庫:

MongoDB、HBase、Redis、Cassandra、Neo4J、Riak、Memcached、Amazon’s Dynamo、Project Voldemort、CouchDB、RavenDB、Infinite Graph、OrientDB等。

鍵值(Key-Value)數據庫

鍵值數據庫就像在傳統語言中使用的哈希表。你可以通過 key 來添加、查詢或者刪除數據,鑑於使用主鍵訪問,所以會獲得不錯的性能及擴展性。

1、主流產品

Riak、Redis、Memcached、Amazon’s Dynamo、Project Voldemort。

2、使用場景

儲存用戶信息,比如會話、配置文件、參數、購物車等等。這些信息一般都和 ID(鍵)掛鉤,這種情景下鍵值數據庫是個很好的選擇。

3、不適合使用場景

1)取代通過鍵查詢,而是通過值來查詢。Key-Value 數據庫中根本沒有通過值查詢的途徑。

2)需要儲存數據之間的關係。在 Key-Value 數據庫中不能通過兩個或以上的鍵來關聯數據。

3)事務的支持。在 Key-Value 數據庫中故障產生時不可以進行回滾。

4、應用公司

GitHub (Riak)、BestBuy (Riak)、Twitter (Redis和Memcached)、StackOverFlow (Redis)、 Instagram (Redis)、Youtube (Memcached)、Wikipedia(Memcached)。

面向文檔(Document-Oriented)數據庫

面向文檔數據庫會將數據以文檔的形式儲存。每個文檔都是自包含的數據單元,是一系列數據項的集合。每個數據項都有一個名稱與對應的值,值既可以是簡單的數據類型,如字符串、數字和日期等;也可以是複雜的類型,如有序列表和關聯對象。數據存儲的最小單位是文檔,同一個表中存儲的文檔屬性可以是不同的,數據可以使用 XML、JSON 或者 JSONB 等多種形式存儲。

1、主流產品

MongoDB、CouchDB、RavenDB。

2、使用場景

1)日誌。企業環境下,每個應用程序都有不同的日誌信息。Document-Oriented 數據庫並沒有固定的模式,所以我們可以使用它儲存不同的信息。

2)分析。鑑於它的弱模式結構,不改變模式下就可以儲存不同的度量方法及添加新的度量。

3、不適合使用場景

在不同的文檔上添加事務。Document-Oriented 數據庫並不支持文檔間的事務,如果對這方面有需求則不應該選用這個解決方案。

4、應用公司

SAP (MongoDB)、Codecademy (MongoDB)、Foursquare (MongoDB)、NBC News (RavenDB)。

列存儲(Wide Column Store/Column-Family)數據庫

列存儲數據庫將數據儲存在列族(column family)中,一個列族存儲經常被一起查詢的相關數據。舉個例子,如果我們有一個 Person 類,我們通常會一起查詢他們的姓名和年齡而不是薪資。這種情況下,姓名和年齡就會被放入一個列族中,而薪資則在另一個列族中。

1、主流產品

Cassandra、HBase。

2、使用場景

1)日誌。因為我們可以將數據儲存在不同的列中,每個應用程序可以將信息寫入自己的列族中。

2)博客平臺。我們儲存每個信息到不同的列族中。舉個例子,標籤可以儲存在一個,類別可以在一個,而文章則在另一個。

3、不適合使用場景

1)如果我們需要 ACID 事務。Vassandra 就不支持事務。

2)原型設計。如果我們分析Cassandra 的數據結構,我們就會發現結構是基於我們期望的數據查詢方式而定。在模型設計之初,我們根本不可能去預測它的查詢方式,而一旦查詢方式改變,我們就必須重新設計列族。

4、應用公司

Ebay (Cassandra)、Instagram (Cassandra)、NASA (Cassandra)、Twitter (Cassandra and HBase)、Facebook (HBase)、Yahoo!(HBase)。

圖(Graph-Oriented)數據庫

圖數據庫允許我們將數據以圖的方式儲存。實體會被作為頂點,而實體之間的關係則會被作為邊。比如我們有三個實體,Steve Jobs、Apple 和 Next,則會有兩個“Founded by”的邊將 Apple 和 Next 連接到 Steve Jobs。

1、主流產品

Neo4J、Infinite Graph、OrientDB。

2、使用場景

1)在一些關係性強的數據中。

2)推薦引擎。如果我們將數據以圖的形式表現,那麼將會非常有益於推薦的制定。

3、不適合使用場景

不適合的數據模型。圖數據庫的適用範圍很小,因為很少有操作涉及到整個圖。

4、應用公司

Adobe (Neo4J)、Cisco (Neo4J)、T-Mobile (Neo4J)。


分享到:


相關文章: