隨著Internet上Web 2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫已無法處理Web 2.0網(wǎng)站,尤其是超大型,高并發(fā)SNS型web2.0純動(dòng)態(tài)網(wǎng)站,并且存在許多無法克服的問題。但是,非關(guān)系數(shù)據(jù)庫由于其自身的特性而迅速發(fā)展。創(chuàng)建NoSQL數(shù)據(jù)庫是為了解決大規(guī)模數(shù)據(jù)收集中多種數(shù)據(jù)類型帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用程序的問題。那么,NoSQL是什么?NoSQL數(shù)據(jù)庫有哪些?
NoSQL是什么?
NoSQL 是 Not Only SQL 的縮寫,意思是“不僅僅有 SQL”,而不是大家通常理解的“不使用 SQL”。
NoSQL 數(shù)據(jù)庫也即非關(guān)系型數(shù)據(jù)庫,它是在大數(shù)據(jù)的時(shí)代背景下產(chǎn)生的,它可以處理分布式、規(guī)模龐大、類型不確定、完整性沒有保證的“雜亂”數(shù)據(jù),這是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫遠(yuǎn)遠(yuǎn)不能勝任的。
NoSQL 數(shù)據(jù)庫并沒有一個(gè)統(tǒng)一的模型,兩種不同的 NoSQL 數(shù)據(jù)庫之間的差異程度,遠(yuǎn)遠(yuǎn)超過兩種關(guān)系型數(shù)據(jù)庫之間的不同。可以說,NoSQL 數(shù)據(jù)庫各有所長(zhǎng),一個(gè)優(yōu)秀的 NoSQL 數(shù)據(jù)庫必然特別適用于某些場(chǎng)合,在這些場(chǎng)合中會(huì)遠(yuǎn)遠(yuǎn)勝過關(guān)系型數(shù)據(jù)庫或者其它 NoSQL 數(shù)據(jù)庫。
這套 NoSQL 入門教程除了會(huì)介紹數(shù)據(jù)庫相關(guān)的概念,還會(huì)對(duì)比各種 NoSQL 數(shù)據(jù)庫,以及它們和關(guān)系型數(shù)據(jù)庫之間的區(qū)別。
NoSQL數(shù)據(jù)庫有哪些?
關(guān)系型數(shù)據(jù)庫產(chǎn)品很多,如 MySQL、Oracle、Microsoft SQL Sever 等,但它們的基本模型都是關(guān)系型數(shù)據(jù)模型。NoSQL 并沒有統(tǒng)一的模型,而且是非關(guān)系型的。
常見的 NoSQL 數(shù)據(jù)庫包括鍵值數(shù)據(jù)庫、列族數(shù)據(jù)庫、文檔數(shù)據(jù)庫和圖形數(shù)據(jù)庫。
1.鍵值數(shù)據(jù)庫
這一類數(shù)據(jù)庫主要會(huì)使用到一個(gè)散列表,這個(gè)表中有一個(gè)特定的鍵和一個(gè)指針指向特定的數(shù)據(jù)。
鍵值模型對(duì)于 IT 系統(tǒng)來說,其優(yōu)勢(shì)在于簡(jiǎn)單、易部署。鍵值數(shù)據(jù)庫可以按照鍵對(duì)數(shù)據(jù)進(jìn)行定位,還可以通過對(duì)鍵進(jìn)行排序和分區(qū),以實(shí)現(xiàn)更快速的數(shù)據(jù)定位。
2.列族數(shù)據(jù)庫
列族數(shù)據(jù)庫通常用來應(yīng)對(duì)分布式存儲(chǔ)的海量數(shù)據(jù)。鍵仍然存在,但是它們的特點(diǎn)是指向了多個(gè)列。
此列族數(shù)據(jù)庫表中由兩行組成,每一行都有關(guān)鍵字 Row Key,每一行由多個(gè)列族組成,即 Column-Family-1 和 Column-Family-2,而每個(gè)列族由多個(gè)列組成。
3.文檔數(shù)據(jù)庫
文檔數(shù)據(jù)庫的靈感來自 Lotus Notes 辦公軟件,它與鍵值數(shù)據(jù)庫類似。該類型的數(shù)據(jù)模型是版本化的文檔,文檔以特定的格式存儲(chǔ),如 JSON。
文檔數(shù)據(jù)庫可以看作鍵值數(shù)據(jù)庫的升級(jí)版,允許之間嵌套鍵值。
文檔數(shù)據(jù)庫比鍵值數(shù)據(jù)庫的查詢效率更高, 因?yàn)槲臋n數(shù)據(jù)庫不僅可以根據(jù)鍵創(chuàng)建索引,同時(shí)還可以根據(jù)文檔內(nèi)容創(chuàng)建索引。
4.圖形數(shù)據(jù)庫
圖形數(shù)據(jù)庫來源于圖論中的拓?fù)鋵W(xué),以節(jié)點(diǎn)、邊及節(jié)點(diǎn)之間的關(guān)系來存儲(chǔ)復(fù)雜網(wǎng)絡(luò)中的數(shù)據(jù)。
這種拓?fù)浣Y(jié)構(gòu)類似 E-R 圖,但在圖形模式中,關(guān)系和節(jié)點(diǎn)本身就是數(shù)據(jù),而在 E-R 圖中,關(guān)系描述的是一種結(jié)構(gòu)。
好了,關(guān)于NoSQL是什么,以及NoSQL數(shù)據(jù)庫有哪些相信大家已經(jīng)知曉了吧,想了解更多關(guān)于NoSQL數(shù)據(jù)庫的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。