NoSQL數據庫是一個不需要模式的非關係數據管理係統。它不需要任何連接,而且易於伸縮。NoSQL數據庫主要用於具有海量數據存儲需求的分布式數據存儲。NoSQL在大數據和實時web應用程序中都有應用。例如,像Twitter、Facebook和穀歌這樣的公司每天都在積累千兆字節的用戶數據。
非SQL數據庫被稱為“not Only SQL”或“not SQL”。NoSQL已經變得流行起來,盡管“NoREL”是一個更好的術語。1998年,Carl Strozz創造了“NoSQL”這個術語。
傳統的RDBMS使用SQL語法來存儲和檢索數據,以便進一步處理。另一方麵,NoSQL數據庫係統指的是可以保存結構化、半結構化、非結構化和多態數據的數據庫係統的集合。在本NoSQL數據庫教程中,我們將使用圖表來學習NoSQL:
在本教程中,您將學習NoSQL的一些基本概念:
為什麼NoSQL ?
NoSQL數據庫已經在諸如穀歌、Facebook、Amazon和其他處理大量數據的互聯網巨頭中獲得了吸引力。當您使用RDBMS處理大量數據時,係統響應時間會變慢。
我們可以通過更新現有硬件來“擴大”我們的係統,以克服這一挑戰。這個過程很昂貴。
當數據庫上的負載增加時,可以選擇將其分散到多個主機上。向外擴展是這個過程的術語。
因為NoSQL數據庫不是關係數據庫,所以它們比關係數據庫更好地向外擴展,因為它們是為在線應用程序構建的。
NoSQL數據庫簡史:
盡管NoSQL最近得到了很多關注和宣傳,但它並不是什麼新事物。我決定研究一下NoSQL的起源,看看能找到什麼。Carlo Strozzi在1998年使用術語“NoSQL”來描述他正在開發的基於文件的數據庫。它是一個關係數據庫,但沒有SQL接口。因此,從技術上講,它不是當前NoSQL趨勢的一部分。Eric Evans在2009年使用這個術語來描述當前非關係數據庫的增長。無論好壞,這個詞似乎一直存在。這篇文章不包括所有的項目。有關更全麵的列表,請參閱評估NoSQL領域的文章。
在1960年的:
- TRW在1965年發明了多值(PICK)數據庫。
- 根據Scott Jones的說法,M[umps]是1966年在麻省總醫院創建的。它是一種具有分層數據庫和內置B+樹存儲的編程語言。
- 1966年,IBM與羅克韋爾(Rockwell)和卡特彼勒(Caterpillar)合作,為阿波羅(Apollo)太空計劃創建了分級數據庫IMS。
1970年:
- InterSystems創建了ISM產品家族,接著是Open M產品,它包含了所有的M[umps]實現。以下是斯科特·瓊斯的聲明。
- 1977年,M[umps]被公認為ANSI標準語言。
- Ken Thompson開發了DBM,並於1979年由AT&T發布。它的核心是基於文件的散列。
1980年:
DBM的後繼者以多種方式煥發生機。
- TDBM支持原子事務。
- 伯克利版本的DBM (NDBM)允許同時開放多個數據庫。
- SDBM是DBM的克隆,創建它主要是為了獲得許可。
- GT.M是專為高速事務處理而設計的鍵值存儲的第一個迭代。在2000年,它變成了開放源碼。
- BerkeleyDB是在Berkeley從4.3BSD向4.4BSD過渡期間建立的。當網景公司要求BerkeleyDB提供新的功能時,Sleepycat軟件公司於1996年成立。BerkeleyDB後來被Oracle收購,後者繼續出售和運營該數據庫。
- Lotus Notes,或者更確切地說,Lotus Domino是一個文檔數據庫,於1989年首次發布,目前由IBM提供。自早期迭代以來,它已經取得了顯著的進展,現在是一個完整的辦公和協作套件。
1990年:
DBM的Gnu項目克隆是GDBM。
- 愛立信創建了Mnesia作為一個用於電信的軟實時數據庫。它是關係型的,但不使用SQL作為查詢語言;而是使用Erlang。
- InterSystems Caché是一個混合型後關係數據庫,首次發布於1997年。它具有對象接口、SQL、PICK/MultiValue和直接的數據結構操作。可以肯定的是,這是一個M[umps]實現。有關InterSystems曆史的更多信息,請參見Scott Jones的評論。
- Metakit成立於1997年,被廣泛認為是第一個麵向文檔的數據庫。支持比現在流行的更小的數據集。
2000 - 2005:
- 這是NoSQL列車真正開始加快速度的時候,許多事情開始發生。
- Neo4j是一個圖形數據庫,成立於2000年。
- 2000年,麵向Java和。net的對象數據庫db4o誕生了。
- Mikio Hirabayashi的QDBM是DBM的重新實現,改進了性能。
- Danga在2003年創建了Memcached來支持Livejournal。Memcached實際上並不是一個數據庫,因為它隻有內存,但是很快就會有一個包含文件存儲的Memcached版本。
- 2005年,封閉源的Infogrid圖表數據庫發布,2008年,它成為開源的。
- CouchDB是一個文檔數據庫,靈感來自於2005年創建的Lotus Notes。2008年,該項目被轉移到Apache基金會。
- 穀歌BigTable項目始於2004年,第一篇研究論文於2006年發表。
2006 - 2010:
- JackRabbit作為JSR 170和283的實現開始於2006年。
- 東京內閣成立於2006年,是(平林三雄的)QDBM的繼任者。
- 2007年,發表了一篇關於亞馬遜發電機的研究論文。
- MongoDB是一個文檔數據庫,在2007年首次作為開源雲計算堆棧的一部分發布,然後在2009年作為獨立版本發布。
- 2008年,卡桑德拉項目啟動。
- 在伏地魔計劃中沒有單點失敗,因為它是一個複製的數據庫。這一切始於2008年。
- Dynomite是一個基於erlang的Dynamo克隆。
- Terrastore成立於2009年,是一個可擴展和彈性的文檔存儲係統。
- Redis是一個持久的鍵值存儲,於2009年首次引入。
- 2009年,另一個受發電機啟發的數據庫啟動了。
- HBase是BigTable的Hadoop克隆版,而Hypertable是2009年推出的另一個類似BigTable的數據庫。
- 2009年,一個新的圖形數據庫Vertexdb誕生了。
- Rackspace的Eric Evans是Cassandra項目的提交者,他創造了“NoSQL”這個短語,意思是“不僅僅是SQL”,用來描述新項目和新產品的爆發。
(其中一些日期應該持懷疑態度,因為精確確定項目的確切開始日期可能很棘手。)此外,並不是所有最近幾年開始的項目都被考慮在內。)
我們還看到了2009年和2010年NoSQL會議的到來,比如2010年的波士頓NoSQL live大會和2010年4月即將在倫敦舉行的NoSQL eu大會。NoSQL東部會議去年也在亞特蘭大舉行。
- Carlo Strozzi在1998年用“NoSQL”這個名字來描述他的開源關係數據庫。
- Neo4j是一個圖形數據庫,於2000年發布。
- 穀歌BigTable於2004年推出。
- CouchDB成立於2005年。
- 關於亞馬遜發電機的研究論文發表於2007年。
- 2008年,Facebook向公眾發布了卡桑德拉項目。
- NoSQL一詞在2009年被重新引入。