天天看點

資料庫必知詞彙:NoSQL

NoSQL,泛指非關系型的資料庫。随着網際網路web2.0網站的興起,傳統的關系資料庫在處理web2.0網站,特别是超大規模和高并發的SNS類型的web2.0純動态網站已經顯得力不從心,出現了很多難以克服的問題,而非關系型的資料庫則由于其本身的特點得到了非常迅速的發展。NoSQL資料庫的産生就是為了解決大規模資料集合多重資料種類帶來的挑戰,尤其是大資料應用難題。

NoSQL最常見的解釋是“non-relational”,“Not Only SQL”也被很多人接受。NoSQL僅僅是一個概念,泛指非關系型的資料庫,差別于關系資料庫,它們不保證關系資料的ACID特性。

NoSQL 是一項全新的資料庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關系型的資料存儲,相對于鋪天蓋地的關系型資料庫運用,這一概念無疑是一種全新的思維的注入。

NoSQL并沒有一個明确的範圍和定義,但是他們都普遍存在下面一些共同特征:

  • 易擴充:NoSQL資料庫種類繁多,但是一個共同的特點都是去掉關系資料庫的關系型特性。資料之間無關系,這樣就非常容易擴充。無形之間,在架構的層面上帶來了可擴充的能力。
  • 大資料量,高性能:NoSQL資料庫都具有非常高的讀寫性能,尤其在大資料量下,同樣表現優秀。這得益于它的無關系性,資料庫的結構簡單。一般MySQL使用Query Cache。NoSQL的Cache是記錄級的,是一種細粒度的Cache,是以NoSQL在這個層面上來說性能就要高很多。
  • 靈活的資料模型:NoSQL無須事先為要存儲的資料建立字段,随時可以存儲自定義的資料格式。而在關系資料庫裡,增删字段是一件非常麻煩的事情。如果是非常大資料量的表,增加字段簡直就是——個噩夢。這點在大資料量的Web 2.0時代尤其明顯。
  • 高可用:NoSQL在不太影響性能的情況,就可以友善地實作高可用的架構。比如Cassandra、HBase模型,通過複制模型也能實作高可用。

NoSQL資料庫常見分類:

  • 鍵值(Key-Value)存儲資料庫:這一類資料庫主要會使用到一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的資料。Key/value模型對于IT系統來說的優勢在于簡單、易部署。但是如果DBA隻對部分值進行查詢或更新的時候,Key/value就顯得效率低下了。舉例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB。
  • 列存儲資料庫:這部分資料庫通常是用來應對分布式存儲的海量資料。鍵仍然存在,但是它們的特點是指向了多個列。這些列是由列家族來安排的。如:Cassandra, HBase, Riak。
  • 文檔型資料庫:文檔型資料庫的靈感是來自于Lotus Notes辦公軟體的,而且它同第一種鍵值存儲相類似。該類型的資料模型是版本化的文檔,半結構化的文檔以特定的格式存儲,比如JSON。文檔型資料庫可以看作是鍵值資料庫的更新版,允許之間嵌套鍵值。而且文檔型資料庫比鍵值資料庫的查詢效率更高。如:CouchDB, MongoDb. 國内也有文檔型資料庫SequoiaDB,已經開源。
  • 圖形(Graph)資料庫:圖形結構的資料庫同其他行列以及剛性結構的SQL資料庫不同,它是使用靈活的圖形模型,并且能夠擴充到多個伺服器上。NoSQL資料庫沒有标準的查詢語言(SQL),是以進行資料庫查詢需要制定資料模型。許多NoSQL資料庫都有REST式的資料接口或者查詢API。如:Neo4J, InfoGrid, Infinite Graph。

資料來源:

羅瓊主編;楊微副主編;盧青華,張莉娜,袁麗娜,陳孝如參編.計算機科學導論:北京郵電大學出版社,2016.08

樊重俊,劉臣,霍良安編著.大資料分析與應用:立信會計出版社,2016.01

楊旭,湯海京,丁剛毅主編.資料科學導論:北京理工大學出版社,2014.03

NoSQL 簡介

https://www.runoob.com/mongodb/nosql.html

NoSQL 還是 SQL ?這一篇講清楚

https://www.jianshu.com/p/296bacba3510