學了那么多 NoSQL 數據庫 NoSQL 究竟是啥


NoSQL 簡史

  

  NoSQL 一詞最早出現於 1998 年,是 Carlo Strozzi 開發的一個輕量、開源、不提供 SQL 功能的關系數據庫。

  2009 年,Last.fm 的 Johan Oskarsson 發起了一次關於分布式開源數據庫的討論,來自 Rackspace 的 Eric Evans 再次提出了 NoSQL 的概念,這時的 NoSQL 主要指非關系型、分布式、不提供 ACID 的數據庫設計模式。

  2009 年在亞特蘭大舉行的"no:sql(east)"討論會是一個里程碑,其口號是"select fun, profit from real_world where relational=false"。因此,對 NoSQL 最普遍的解釋是"非關聯型的",強調 Key-Value Stores 和文檔數據庫的優點,而不是單純的反對 RDBMS。

  

什么是 NoSQL

  

  NoSQL(Not Only SQL),意思是"不僅僅是 SQL",指的是非關系型數據庫,是對不同於傳統的關系型數據庫的數據庫管理系統的統稱。

  NoSQL 用於超大規模數據的存儲。這些類型的數據存儲不需要固定的模式,無需多余操作就可以橫向擴展。

  

為什么使用 NoSQL

  

  隨着互聯網的飛速發展與普及,網民上網沖浪時所產生數據也逐日增多,從 GB 到 TB 到 PB。這些數據有很大一部分都是由關系型數據庫管理系統(RDBMS)來進行處理的。

  由於關系型數據庫的范式約束、事務特性、磁盤 IO 等特點,若服務器使用關系型數據庫,當有大量數據產生時,傳統的關系型數據庫已經無法滿足快速查詢與插入數據的需求。NoSQL 的出現解決了這一危機。它通過降低數據的安全性,減少對事務的支持,減少對復雜查詢的支持,獲取性能上的提升。但是,在某些特定場景下 NoSQL 仍然不是最佳人選,比如一些絕對要有事務與安全指標的場景。

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

  

RDBMS vs. NoSQL

  

  

常見的數據庫管理系統

  

  根據 DB-Engineshttps://db-engines.com/en/ranking 的排行,本文截取了排行榜 Top 50 如下圖所示。DB-Engines 排名根據數據庫管理系統的受歡迎程度對其進行排名。該排名每月更新一次。

  

NoSQL 數據庫四大家族

  

鍵值(Key-Value)存儲

  

  特點:鍵值數據庫就像傳統語言中使用的哈希表。通過 Key 添加、查詢或者刪除數據。

  優點:查詢速度快。

  缺點:數據無結構化,通常只被當作字符串或者二進制數據存儲。

  應用場景:內容緩存、用戶信息比如會話、配置信息、購物車等,主要用於處理大量數據的高訪問負載。

  NoSQL 代表:Redis、Memcached...

  

文檔(Document-Oriented)存儲

  

  特點:文檔數據庫將數據以文檔的形式儲存,類似 JSON,是一系列數據項的集合。每個數據項都有一個名稱與對應的值,值既可以是簡單的數據類型,如字符串、數字和日期等;也可以是復雜的類型,如有序列表和關聯對象。

  優點:數據結構要求不嚴格,表結構可變,不需要像關系型數據庫一樣需要預先定義表結構。

  缺點:查詢性能不高,缺乏統一的查詢語法。

  應用場景:日志、 Web 應用等。

  NoSQL 代表:MongoDB、CouchDB...

  

列(Wide Column Store/Column-Family)存儲

  

  特點:列存儲數據庫將數據儲存在列族(Column Family)中,將多個列聚合成一個列族,鍵仍然存在,但是它們的特點是指向了多個列。舉個例子,如果我們有一個 Person 類,我們通常會一起查詢他們的姓名和年齡而不是薪資。這種情況下,姓名和年齡就會被放入一個列族中,而薪資則在另一個列族中。

  優點:列存儲查找速度快,可擴展性強,更容易進行分布式擴展,適用於分布式的文件系統,應對分布式存儲的海量數據。

  缺點:查詢性能不高,缺乏統一的查詢語法。

  應用場景:日志、 分布式的文件系統(對象存儲)、推薦畫像、時空數據、消息/訂單等。

  NoSQL 代表:Cassandra、HBase...

  

圖形(Graph-Oriented)存儲

  

  特點:圖形數據庫允許我們將數據以圖的方式儲存。

  優點:圖形相關算法。比如最短路徑尋址,N 度關系查找等。

  缺點:很多時候需要對整個圖做計算才能得出需要的信息,分布式的集群方案不好做,處理超級節點乏力,沒有分片存儲機制,國內社區不活躍。

  應用場景:社交網絡,推薦系統等。專注於構建關系圖譜。

  NoSQL 代表:Neo4j、Infinite Graph...

  

NoSQL 的優缺點

  

優點

  

  • 高可擴展性
  • 沒有標准化
  • 分布式計算
  • 有限的查詢功能(到目前為止)
  • 低成本

  

缺點

  

  • 最終一致是不直觀的程序
  • 架構的靈活性,半結構化數據
  • 沒有復雜的關系

  

總結

  

  NoSQL 數據庫在以下幾種情況下比較適用:

  • 數據模型比較簡單
  • 需要靈活性更強的 IT 系統
  • 對數據庫性能要求較高
  • 不需要高度的數據一致性
  • 對於給定的 Key,比較容易映射復雜值的環境

本文采用 知識共享「署名-非商業性使用-禁止演繹 4.0 國際」許可協議

大家可以通過 分類 查看更多關於 NoSQL 的文章。

  

🤗 您的點贊轉發是對我最大的支持。

📢 關注公眾號 哈嘍沃德先生「文檔 + 視頻」每篇文章都配有專門視頻講解,學習更輕松噢 ~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM