首頁技術(shù)文章正文

NoSQL是什么?NoSQL的特點有哪些?

更新時間:2023-06-09 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

NoSQL一詞最早出現(xiàn)于1998年,它是Carlo Strozzi開發(fā)的一個輕量、開源、不提供SQL功能的關(guān)系數(shù)據(jù)庫。CarloStrozzi認(rèn)為,由于NoSQL.悖離傳統(tǒng)關(guān)系數(shù)據(jù)庫模型,因此,NoSQL應(yīng)該有一個全新的名字,例如NoREL或與之類似的名字。

2009年,Last.fm的Johan Oskarsson(約翰·奧斯卡森)發(fā)起了一次關(guān)于分布式開源數(shù)據(jù)庫的討論,來自Rackspace的Eric Evans(埃里克·埃文斯)再次提出了NoSQL的概念,這時的NoSQL主要指非關(guān)系型、分布式、不提供ACID的數(shù)據(jù)庫設(shè)計模式。

2009年在亞特蘭大舉行的“no:sql(east)”討論會是一個里程碑,該討論會的口號是“select fun,profit from real world where relational=false:”。因此,對NoSQL最普遍的解釋是“非關(guān)系型的”,主要是強(qiáng)調(diào)鍵值存儲和文檔存儲數(shù)據(jù)庫的優(yōu)點,而不是單純地反對關(guān)系數(shù)據(jù)庫。

現(xiàn)如今,大家看到NoSQL這個詞,可能會誤以為是“No!SQL”的縮寫,并深感詫異:“SQL怎么會沒有必要了呢?”,實際上,NoSQL是Not OnlySQL的縮寫,它的含義為“不僅僅是SQL”。NoSQL是一種非關(guān)系型、分布式、無須遵循ACID原則、不提供SQL功能的數(shù)據(jù)庫,是對關(guān)系型數(shù)據(jù)庫在靈活性和擴(kuò)展性上的補(bǔ)充。NoSQL.的出現(xiàn)主要是解決大規(guī)模數(shù)據(jù)集合下數(shù)據(jù)種類多樣性帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。

NoSQL具有“易擴(kuò)展”“高性能”“靈活的數(shù)據(jù)模型”以及“高可用”等顯著特點,這些特點的具體介紹如下。

1.易擴(kuò)展

雖然NoSQL數(shù)據(jù)庫的種類繁多,但是它們都擁有一個共同的特點,即去掉關(guān)系數(shù)據(jù)庫的關(guān)系型特性。數(shù)據(jù)之間均無關(guān)系,這就使得數(shù)據(jù)庫可以非常容易地擴(kuò)展,這是完全區(qū)別于傳統(tǒng)關(guān)系型數(shù)據(jù)庫的一大特性。

2.高性能

NoSQL.數(shù)據(jù)庫具有高并發(fā)讀寫性能,這一點在海量數(shù)據(jù)的處理上表現(xiàn)得尤其明顯。這一點是得益于NoSQL.數(shù)據(jù)庫的無關(guān)系性,NoSQL.數(shù)據(jù)庫的結(jié)構(gòu)比較簡單。我們都知道,傳統(tǒng)的關(guān)系數(shù)據(jù)庫MySQL.使用QueryCache,每更新一次數(shù)據(jù)表,cache就會失效,在Web2.0時代,短時間內(nèi)會有大量數(shù)據(jù)進(jìn)行頻繁的交互應(yīng)用,這樣一來,cache性能和效率就會不高。而NoSQL.的cache是記錄級的,是一種細(xì)粒度的cache,所以與傳統(tǒng)關(guān)系數(shù)據(jù)庫相比較而言,NoSQL在這個層面上來說性能就要高很多。

3.靈活的數(shù)據(jù)模型

NoSQL數(shù)據(jù)庫不需要事先為存儲的數(shù)據(jù)建立相應(yīng)的字段,用戶可以隨時存儲自定義的各種數(shù)據(jù)格式。而在關(guān)系數(shù)據(jù)庫里,需要在數(shù)據(jù)表里增加或者刪除字段是一件非常麻煩的事情,尤其是在非常大的數(shù)據(jù)表里,增加字段簡直就是一個蛋夢,這點在大數(shù)據(jù)量的Web2.0時代尤其明顯。

4.高可用

NoSQL.在不太影響性能的情況下,可以方便地實現(xiàn)高可用的架構(gòu)。例如,Cassandra、HBase模型,我們甚至可以通過復(fù)制模型來實現(xiàn)NoSQL.的高可用。


分享到:
在線咨詢 我要報名
和我們在線交談!