NoSQL數據庫概述

首字母縮寫NoSQL是在1998年創造的。許多人認為NoSQL是一個詆毀SQL的貶義詞。 實際上,這個術語不僅意味著SQL。 這個想法是兩種技術都可以共存,並且每種技術都有自己的位置。 由於許多Web 2.0領導者採用了NoSQL技術,因此NoSQL運動在過去幾年一直是新聞。 Facebook,Twitter,Digg,亞馬遜,LinkedIn和谷歌等公司都以某種方式使用NoSQL。

讓我們分解一下NoSQL,這樣你就可以向你的CIO甚至你的同事解釋它。

NoSQL從需求中湧現出來

數據存儲:世界上存儲的數字數據以兆字節為單位進行測量。 exabyte等於十億千兆字節(GB)的數據。 根據Internet.com的統計,2006年存儲的數據量為161艾字節。 僅在2010年的4年後,存儲的數據量將接近1000 ExaBytes,增幅超過500%。 換句話說,世界上存儲著大量的數據,並且它會持續增長。

相互關聯的數據:數據繼續變得更加連接。 在超鏈接中創建了網絡,博客有pingbacks,每個主要的社交網絡系統都有標籤,可以將事情聯繫在一起。 主要係統的構建是相互關聯的。

複雜的數據結構: NoSQL可以輕鬆處理層次化的嵌套數據結構。 為了在SQL中完成同樣的事情,你需要多個關係表和各種關鍵字。

另外,性能和數據複雜性之間也有關係。 由於我們存儲社交網絡應用程序和語義網所需的大量數據,因此傳統RDBMS中的性能可能會下降。

什麼是NoSQL?

我猜想定義NoSQL的一種方法是考慮它不是什麼。

這不是SQL,它不是關係型的。 就像名稱所暗示的那樣,它不是RDBMS的替代品,而是對它的讚揚。 NoSQL專為分佈式數據存儲而設計,可滿足大規模數據需求。 用它的5億用戶或Twitter來思考Facebook,這些用戶或Twitter每天都會收集Terabits的數據。

在NoSQL數據庫中,沒有固定的模式,也沒有連接。 RDBMS通過獲得更快更快的硬件和增加內存來“擴展”。 另一方面,NoSQL可以利用“擴展”。 擴大指的是分散許多商品系統的負載。 這是NoSQL的組件,使其成為大數據集的廉價解決方案。

NoSQL類別

目前的NoSQL世界適合4個基本類別。

  1. 鍵值存儲主要基於2007年編寫的亞馬遜Dynamo Paper 。主要思想是存在一個哈希表,其中存在唯一鍵和指向特定數據項的指針。 這些映射通常伴隨著緩存機制以最大限度地提高性能。
    Column Family Stores創建用於存儲和處理分佈在許多機器上的大量數據。 仍然有鍵,但它們指向多列。 在BigTable(谷歌的Column Family NoSQL模型)的情況下,行由行鍵標識,數據通過該鍵排序和存儲。 這些列按列族排列。
  1. 文檔數據庫的靈感來自Lotus Notes ,並且與鍵值存儲類似。 該模型基本上是版本化的文檔,它們是其他鍵值集合的集合。 半結構化文檔以JSON等格式存儲。
  2. 圖數據庫用節點,筆記之間的關係和節點的屬性構建。 除了行和列的表格以及SQL的嚴格結構之外,還可以使用靈活的圖表模型,這種模型可以跨越多台機器進行擴展。

主要的NoSQL玩家

NoSQL的主要參與者主要是因為已經採用它們的組織而出現的。 一些最大的NoSQL技術包括:

查詢NoSQL

如何查詢NoSQL數據庫是大多數開發人員感興趣的問題。畢竟,如果無法檢索並向最終用戶或Web服務展示數據,存儲在龐大數據庫中的數據對任何人都沒有任何好處。 NoSQL數據庫不提供像SQL這樣的高級聲明式查詢語言。 相反,查詢這些數據庫是特定於數據模型的。

許多NoSQL平台都支持RESTful接口。 其他報價查詢API。 有幾種查詢工具已經開發,可以查詢多個NoSQL數據庫。 這些工具通常適用於單個NoSQL類別。 一個例子是SPARQL。 SPARQL是為圖數據庫設計的聲明性查詢規範。 以下是一個SPARQL查詢的示例,用於檢索特定博客的URL(由IBM提供):

PREFIX foaf:
SELECT?url
FROM
WHERE {
?貢獻者foaf:名稱“Jon Foobar”。
?貢獻者foaf:weblog?url。
}

NoSQL的未來

有大量數據存儲需求的組織正在認真對待NoSQL。 顯然,這個概念在小型組織中沒有得到太多的牽引力。 在Information Week進行的一項調查中,44%的商業IT專業人士還沒有聽說過NoSQL。 此外,只有1%的受訪者表示NoSQL是他們戰略方向的一部分。 顯然,NoSQL在我們的互聯世界中佔有一席之地,但需要繼續發展以獲得許多人認為它可能具有的大眾吸引力。