什么是NoSQL 隨著用戶內容的增長,所生成、處理、分析和歸檔的數(shù)據(jù)的規(guī)模快速增大,類型也快速增多。此外,一些新數(shù)據(jù)源也在生成大量數(shù)據(jù),比如傳感器、全球定位系統(tǒng)(GPS)、自動追蹤器和監(jiān)控系統(tǒng)。這些大數(shù)據(jù)集通常被稱為大數(shù)據(jù)。數(shù)據(jù)不僅僅快速增長,而且
什么是NoSQL
隨著用戶內容的增長,所生成、處理、分析和歸檔的數(shù)據(jù)的規(guī)模快速增大,類型也快速增多。此外,一些新數(shù)據(jù)源也在生成大量數(shù)據(jù),比如傳感器、全球定位系統(tǒng)(GPS)、自動追蹤器和監(jiān)控系統(tǒng)。這些大數(shù)據(jù)集通常被稱為大數(shù)據(jù)。數(shù)據(jù)不僅僅快速增長,免備案空間,而且半結構化和稀疏的趨勢也很明顯。這樣一來,預定義好schema和利用關系型引用的傳統(tǒng)數(shù)據(jù)管理技術就受到了挑戰(zhàn)。
在探索海量數(shù)據(jù)和半結構化數(shù)據(jù)相關問題的過程中,誕生了一系列新型數(shù)據(jù)庫產(chǎn)品,其中包括列族數(shù)據(jù)庫(column-oriented data store)、鍵/值數(shù)據(jù)庫和文檔數(shù)據(jù)庫,這些數(shù)據(jù)庫統(tǒng)稱NoSQL。
今天NoSQL泛指這樣一類數(shù)據(jù)庫和數(shù)據(jù)存儲,它們不遵循經(jīng)典RDBMS原理,且常與Web規(guī)模的大型數(shù)據(jù)集有關。換句話說,NoSQL并不單指一個產(chǎn)品或一種技術,它代表一族產(chǎn)品,以及一系列不同的、有時相互關聯(lián)的、有關數(shù)據(jù)存儲及處理的概念。
RDBMS假定數(shù)據(jù)的結構已明確定義,數(shù)據(jù)是致密的,并且很大程度上是一致的。RDBMS構建在這樣的先決條件上,即數(shù)據(jù)的屬性可以預先定義好,它們之間的相互關系非常穩(wěn)固且被系統(tǒng)地引用(systematically referenced)。它還假定定義在數(shù)據(jù)上的索引能保持一致性,能統(tǒng)一應用以提高查詢的速度。RDBMS可以容忍一定程度的不規(guī)律和結構缺乏,但在松散結構的海量稀疏數(shù)據(jù)面前,傳統(tǒng)存儲機制和訪問方法捉襟見肘。
NoSQL緩解了RDBMS引發(fā)的問題并降低了處理海量稀疏數(shù)據(jù)的難度,但是反過來也被奪去了事務完整性的力量和靈活的索引及查詢能力。
總之,NoSQL數(shù)據(jù)庫是非常高效、強大的海量數(shù)據(jù)存儲與處理工具。大部分NoSQL數(shù)據(jù)庫都能很好地適應數(shù)據(jù)增長,并且能靈活適應半結構化數(shù)據(jù)和稀疏數(shù)據(jù)集。
背景和歷史Google建造了大規(guī)模可擴展的基礎設施,用于支撐Google的搜索引擎和其他應用。其策略是在應用程序棧的每個層面上分別解決問題,旨在建立一套可伸縮的基礎設施來并行處理海量數(shù)據(jù)。為此Google創(chuàng)建了一整套完備的機制,包括分布式文件系統(tǒng)、面向列族的數(shù)據(jù)存儲、分布式協(xié)調系統(tǒng)和基于MapReduce的并行算法執(zhí)行環(huán)境。
Google公開發(fā)布了一系列論文來解釋其基礎設施中一些關鍵的組成部分:
Sanjay Ghemawat、Howard Gobioff和Shun-Tak Leung,“The Google File System”; pub.19th ACM Symposium on Operating Systems Principles, Lake George, NY, October 2003
Jeffrey Dean和Sanjay Ghemawat,“MapReduce: Simplified Data Processing on Large Clusters”; pub. OSDI’04: Sixth Symposium on Operating System Design and Implementation, San Francisco, CA, December 2004。
Fay Chang、Jeffrey Dean、Sanjay Ghemawat、Wilson C. Hsieh、Deborah A. Wallach、Mike Burrows、Tushar Chandra、Andrew Fikes和Robert E. Gruber,“Bigtable: A Distributed Storage System for Structured Data”; pub. OSDI’06: Seventh Symposium on Operating System Design and Implementation, Seattle, WA, November 2006。
Mike Burrows,“The Chubby Lock Service for Loosely-Coupled Distributed Systems”; pub.OSDI’06: Seventh Symposium on Operating System Design and Implementation, Seattle, WA, November 2006。
Google 云端三大天王分別是: The Google File System, MapReduce, Bigtable
下面是中文翻譯版
GFS:
MapReduce:
BigTale:
Google公布設計理念引起了開源開發(fā)者的廣泛關注和濃厚興趣。很快,虛擬主機,第一個模仿Google基礎設施部分特性的開源軟件就開發(fā)出來了,它的創(chuàng)建者正是開源搜索引擎Lucene的發(fā)明人。緊接著,Lucene的核心開發(fā)者們加入了Yahoo!,在那里,依靠眾多開源貢獻者的支持,參照Google的分布式計算架構,開發(fā)者們創(chuàng)建出了一個能夠替代Google基礎設施所有部分的開源產(chǎn)品,這就是Hadoop及其子項目和相關項目。
Google的論文激發(fā)了人們對并行大規(guī)模處理和分布式非關系型數(shù)據(jù)存儲的興趣,一年后,Amazon分享了他們的成功經(jīng)驗。2007年Amazon對外展示了它的分布式高可用、最終一致性數(shù)據(jù)存儲,其名曰Dynamo。
有關Amazon Dynamo的內容可以參考如下論文:
Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swami Sivasubramanian, Peter Vosshall, and Werner Vogels,“Dynamo: Amazon’s Highly Available Key/value Store,”in the Proceedings of the 21st ACM Symposium on Operating Systems Principles, Stevenson, WA, October 2007。(中文版:點擊下載)
此外,Amazon的CTO Werner Vogels在一篇博文中解釋了Amazon Dynamo背后的關鍵思想,博文地址為:
大數(shù)據(jù)就現(xiàn)在而言,任何超過幾個TB大小的數(shù)據(jù)集都可以歸為大數(shù)據(jù)。這是數(shù)據(jù)集大到開始跨越多個存儲單元的典型尺寸,也是傳統(tǒng)RDBMS技術開始表現(xiàn)出吃力的尺寸。
隨著數(shù)據(jù)規(guī)模的增長和數(shù)據(jù)創(chuàng)建來源的日趨多元化,以下挑戰(zhàn)將日益嚴峻。
·高效存儲和訪問大量數(shù)據(jù)很難。額外要求的容錯和備份使事情變得更加復雜。
·操作大數(shù)據(jù)集涉及大量并行進程。運行過程中要從任何故障中平穩(wěn)恢復過來,同時還要在合理的時間范圍內返回結果,這非常復雜。
·各種不同數(shù)據(jù)源生成的半結構化和無結構數(shù)據(jù)的schema和元數(shù)據(jù)持續(xù)不斷變化,對它們的管理是一個令人頭疼的問題。
可擴展性是一種能力,有了它系統(tǒng)能通過增加資源提高吞吐量進而解決增加的負荷。可擴展性可以通過兩種方式實現(xiàn),一是配置一個大而強的資源來滿足額外的需求,二是依靠由普通機器組成的集群。使用大而強的機器通常屬于垂直可擴展性。典型的垂直擴展方案是使用配有大量CPU內核且直接掛載大量存儲的超級計算機。這類超級計算機通常極其昂貴,屬于專有設備。替代垂直擴展的是水平擴展。水平擴展使用商業(yè)系統(tǒng)集群,集群隨負載的增加而擴展。水平擴展通常需要添加額外的節(jié)點來應付額外的負載。大數(shù)據(jù)以及大規(guī)模并行處理數(shù)據(jù)的需要促使水平擴展得到了廣泛的采納。在Google、Amazon、Facebook、eBay和Yahoo!,水平擴展的基礎設施包含數(shù)量巨大的服務器,其中一些包含幾千甚至幾十萬臺服務器。
對水平擴展集群上分布的數(shù)據(jù)進行處理是非常復雜的事情。在水平集群上處理大規(guī)模數(shù)據(jù)的方法里,MapReduce模型可能要算是最好的。
聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com