區分NoSQL數據庫

NoSQL數據庫都有哪些?在本文中,咱們將介紹不一樣的NoSQL數據庫的種類,並比較不一樣NoSQL數據庫之間的異同。在文末,咱們也將也將分享一些有用的資源,幫助初學者快速開始使用NoSQL。sql


 

NoSQL數據庫之間的異同

市場上有多種不一樣的NoSQL數據庫,他們之間有一些關鍵的區別。數據庫

  • 數據模型

咱們能夠根據NoSQL數據庫所支持的不一樣數據模型對其進行分類。有些NoSQL數據庫支持可擴展的數據存儲,有些則支持面向文件的、鍵值對的或是可存儲圖的數據模型。架構

  • 開發接口APIs

不一樣的NoSQL數據庫的開發接口不盡相同。Cassandra支持Cassandra 查詢語言 (CQL, aka Cassandra Query Language),一種相似SQL的語言。像是REST和GraphQL這樣的接口則正在開發中。less

  • 架構

像是MongoDB一類的NoSQL數據庫使用了和傳統數據庫同樣的主從結構 (primary replica / secondary replica)。nosql

而Cassandra以及一些其餘的NoSQL數據庫則採用了點對點 (peer-to-peer) 的無主 (masterless) 架構,這意味着在一個數據庫集羣中,每個節點都是相同的。分佈式

NoSQL數據庫的架構很大程度上影響了其在持續運行時間、多地域數據複製以及性能的可預測性等方面的表現。ide

  • 數據分佈模型

因爲架構的不一樣,NoSQL數據庫對於數據的讀、寫和分佈都不盡相同。函數

像是Cassandra這樣的NoSQL平臺,在集羣中的每個節點均可以支持數據的讀寫,而且能夠在多個數據中心和多個雲供應商之間進行數據的複製或同步。性能

值得注意的是,一系列被稱爲「NewSQL」的數據庫已經出現,它們採用了NoSQL數據庫的分佈式系統架構原理,同時試圖提供傳統關係型數據庫管理系統 (RDBMS) 所使用的關係型語法。學習

這些數據庫包括Google Cloud Spanner和Cockroach DB,它們有一系列與Cassandra及其它NoSQL數據庫不一樣的權衡取捨 (tradeoffs)。


 

NoSQL數據庫的種類

NoSQL數據庫支持多種不一樣模式的數據存儲和數據獲取,NoSQL數據模型主要包括如下幾類:

鍵值對數據庫 (Key/value databases)

鍵值對數據庫是最簡單的幾種NoSQL數據庫之一,由帶索引的鍵 (indexed key) 和其所對應的值 (value) 組成。

當給出一個鍵時,鍵值對數據庫能夠經過哈希機制快速找到與其相關聯的值。哈希機制的時間複雜度爲常數時間 (constant time),這意味着即便數據規模很大,鍵值對數據庫依然能夠維持高性能。

鍵值對的鍵能夠是任意類別的對象,但一般是一個字符串 (string)。鍵值對的值通常來講是模糊的BLOB類型(即:一串數據庫不解讀的字節)。

鍵值對數據庫包括:Redis, Amazon DynamoDB, Riak以及Oracle NoSQL。一些像是Cassandra同樣的表格式的NoSQL數據庫也能夠知足鍵值對的需求。

文檔型數據庫 (Document databases)

文檔型數據庫由基本的鍵值對存儲模式而來,可是存儲數據的「文檔」則更爲複雜一些。

每個文檔都會被分配一個惟一的鍵 (key),用來調取文檔。這些數據庫是爲了存儲、調取和管理面向文檔的信息(一般以JSON的格式存儲)而設計的。

由於文檔型數據庫能夠檢閱文檔內容,它們能夠實現一些額外的調取處理。與要求靜態模式(schema) 的關係型數據庫管理系統 (RDBMSs) 相比,文檔型數據庫則有着由文檔內容定義的、更爲靈活的模式。

文檔型數據庫的例子包括MongoDB和CouchDB。注意:一些關係型數據庫管理系統和非純存儲文檔的NoSQL數據庫也能夠存儲和查詢JSON文檔,其中包括了Cassandra。

表格型數據庫 (Tabular databases)

表格型數據庫用行和列來存儲數據,可是與傳統的數據庫管理系統略有不一樣。

這種數據庫也被稱爲寬表存儲 (wide-column stores) 或是分區行存儲 (partitioned row stores),他們提供把數據庫中屬於同一個分區的相關行分到同一數據副本的能力,從而達到更快查詢的目的。

與關係型數據庫管理系統不一樣的是,表格的格式並非嚴格固定的。例如Apache Cassandra™並不要求表格中全部的行的每一列都要有值。

與鍵值對和文檔型數據庫同樣,表格型數據庫也使用哈希函數來調取表格中的記錄。

表格型數據庫包括:Cassandra、HBase以及Google Bigtable。

圖數據庫 (Graph databases)

圖數據庫用一種圖化的結構來理解數據間的關係,並依此存儲數據。圖中的一個頂點表明着一個數據項,圖中的邊則表明數據項之間的關係。

圖數據庫是爲高度複雜且相互關聯的數據而設計的,這些數據的複雜度和關聯度超出了關係型數據庫管理系統能夠承載的關係類型和表格鏈接(JOIN)能力。

圖數據庫擅長於在大量數據集合中找出異同性 (commonalities and anomalies) 。

圖數據庫包括:DataStax Graph、Neo4J、JanusGraph以及Amazon Neptune。

多種模型並存的數據庫 (Multi-model databases)

多種模型並存的數據庫是NoSQL數據庫和關係型數據庫市場共同的趨勢。這種數據庫能夠支持多種數據模型而不是單一集成的數據模型。

大多數數據庫管理系統都圍繞着單一數據模型組織、存儲和修改數據。

相對地,多種模型並存的數據庫可讓企業利用不一樣的數據模型存儲系統中不一樣部分的數據,從而簡化應用開發的過程。


 

從何處開始

若是你正打算更多地學習瞭解Apache Cassandra,咱們有不少資源幫助你順利起航。

  • DataStax for Developers:學習如何玩轉Apache Cassandra™
  • DataStax Astra:經過DataStax Astra,一個基於Apache Cassandra的數據庫及服務平臺,可以幫你快速地創建雲原生應用。

 

References:

https://www.datastax.com/nosql

相關文章
相關標籤/搜索