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