十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
一般將NoSQL數(shù)據(jù)庫分為四大類:鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫、列存儲(chǔ)數(shù)據(jù)庫、文檔型數(shù)據(jù)庫和圖形(Graph)數(shù)據(jù)庫。它們的數(shù)據(jù)模型、優(yōu)缺點(diǎn)、典型應(yīng)用場景。
創(chuàng)新互聯(lián)建站是一家專業(yè)提供永靖企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、H5頁面制作、小程序制作等業(yè)務(wù)。10年已為永靖眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫Key指向Value的鍵值對(duì),通常用hash表來實(shí)現(xiàn)查找速度快數(shù)據(jù)無結(jié)構(gòu)化(通常只被當(dāng)作字符串或者二進(jìn)制數(shù)據(jù))內(nèi)容緩存,主要用于處理大量數(shù)據(jù)的高訪問負(fù)載,也用于一些日志系統(tǒng)等。
列存儲(chǔ)數(shù)據(jù)庫,以列簇式存儲(chǔ),將同一列數(shù)據(jù)存在一起查找速度快,可擴(kuò)展性強(qiáng),更容易進(jìn)行分布式擴(kuò)展功能相對(duì)局限分布式的文件系統(tǒng)。
文檔型數(shù)據(jù)庫,Key-Value對(duì)應(yīng)的鍵值對(duì),Value為結(jié)構(gòu)化數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)要求不嚴(yán)格,表結(jié)構(gòu)可變(不需要像關(guān)系型數(shù)據(jù)庫一樣需預(yù)先定義表結(jié)構(gòu)),查詢性能不高,而且缺乏統(tǒng)一的查詢語法,Web應(yīng)用。
圖形(Graph)數(shù)據(jù)庫,圖結(jié)構(gòu),利用圖結(jié)構(gòu)相關(guān)算法(如最短路徑尋址,N度關(guān)系查找等),很多時(shí)候需要對(duì)整個(gè)圖做計(jì)算才能得出需要的信息,而且這種結(jié)構(gòu)不太好做分布式的集群方案,社交網(wǎng)絡(luò),推薦系統(tǒng)等。
NoSQL,泛指非關(guān)系型的數(shù)據(jù)庫。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在處理web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,出現(xiàn)了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。
常見的Nosql數(shù)據(jù)庫有:
一、Redis數(shù)據(jù)庫
Redis(RemoteDictionaryServer),即遠(yuǎn)程字典服務(wù),是一個(gè)開源的使用ANSIC語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。從2010年3月15日起,Redis的開發(fā)工作由VMware主持。從2013年5月開始,Redis的開發(fā)由Pivotal贊助。
二、MongoDB數(shù)據(jù)庫
MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。
Mongo最大的特點(diǎn)是它支持的查詢語言非常強(qiáng)大,其語法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。
擴(kuò)展資料:
對(duì)于NoSQL并沒有一個(gè)明確的范圍和定義,但是他們都普遍存在下面一些共同特征:
一、易擴(kuò)展
NoSQL數(shù)據(jù)庫種類繁多,但是一個(gè)共同的特點(diǎn)都是去掉關(guān)系數(shù)據(jù)庫的關(guān)系型特性。數(shù)據(jù)之間無關(guān)系,這樣就非常容易擴(kuò)展。無形之間,在架構(gòu)的層面上帶來了可擴(kuò)展的能力。
二、大數(shù)據(jù)量,高性能
NoSQL數(shù)據(jù)庫都具有非常高的讀寫性能,尤其在大數(shù)據(jù)量下,同樣表現(xiàn)優(yōu)秀。這得益于它的無關(guān)系性,數(shù)據(jù)庫的結(jié)構(gòu)簡單。一般MySQL使用Query Cache。NoSQL的Cache是記錄級(jí)的,是一種細(xì)粒度的Cache,所以NoSQL在這個(gè)層面上來說性能就要高很多。
三、靈活的數(shù)據(jù)模型
NoSQL無須事先為要存儲(chǔ)的數(shù)據(jù)建立字段,隨時(shí)可以存儲(chǔ)自定義的數(shù)據(jù)格式。而在關(guān)系數(shù)據(jù)庫里,增刪字段是一件非常麻煩的事情。如果是非常大數(shù)據(jù)量的表,增加字段簡直就是——個(gè)噩夢。這點(diǎn)在大數(shù)據(jù)量的Web2.0時(shí)代尤其明顯。
四、高可用
NoSQL在不太影響性能的情況,就可以方便地實(shí)現(xiàn)高可用的架構(gòu)。比如Cassandra、HBase模型,通過復(fù)制模型也能實(shí)現(xiàn)高可用。
參考資料來源:百度百科-NoSQL
1. 鍵值數(shù)據(jù)庫
相關(guān)產(chǎn)品:Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached
應(yīng)用:內(nèi)容緩存
優(yōu)點(diǎn):擴(kuò)展性好、靈活性好、大量寫操作時(shí)性能高
缺點(diǎn):無法存儲(chǔ)結(jié)構(gòu)化信息、條件查詢效率較低
使用者:百度云(Redis)、GitHub(Riak)、BestBuy(Riak)、Twitter(Ridis和Memcached)
2. 列族數(shù)據(jù)庫
相關(guān)產(chǎn)品:BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS
應(yīng)用:分布式數(shù)據(jù)存儲(chǔ)與管理
優(yōu)點(diǎn):查找速度快、可擴(kuò)展性強(qiáng)、容易進(jìn)行分布式擴(kuò)展、復(fù)雜性低
使用者:Ebay(Cassandra)、Instagram(Cassandra)、NASA(Cassandra)、Facebook(HBase)
3. 文檔數(shù)據(jù)庫
相關(guān)產(chǎn)品:MongoDB、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit
應(yīng)用:存儲(chǔ)、索引并管理面向文檔的數(shù)據(jù)或者類似的半結(jié)構(gòu)化數(shù)據(jù)
優(yōu)點(diǎn):性能好、靈活性高、復(fù)雜性低、數(shù)據(jù)結(jié)構(gòu)靈活
缺點(diǎn):缺乏統(tǒng)一的查詢語言
使用者:百度云數(shù)據(jù)庫(MongoDB)、SAP(MongoDB)
4. 圖形數(shù)據(jù)庫
圖形數(shù)據(jù)庫-使用圖作為數(shù)據(jù)模型來存儲(chǔ)數(shù)據(jù)。
相關(guān)產(chǎn)品:Neo4J、OrientDB、InfoGrid、GraphDB
應(yīng)用:大量復(fù)雜、互連接、低結(jié)構(gòu)化的圖結(jié)構(gòu)場合,如社交網(wǎng)絡(luò)、推薦系統(tǒng)等
優(yōu)點(diǎn):靈活性高、支持復(fù)雜的圖形算法、可用于構(gòu)建復(fù)雜的關(guān)系圖譜
缺點(diǎn):復(fù)雜性高、只能支持一定的數(shù)據(jù)規(guī)模
使用者:Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)
數(shù)據(jù)庫可以按照內(nèi)容類型分類:書目、全文、數(shù)字和圖像。在計(jì)算中,數(shù)據(jù)庫有時(shí)根據(jù)其組織方法進(jìn)行分類。有許多不同類型的數(shù)據(jù)庫,從最流行的方法關(guān)系數(shù)據(jù)庫到分布式數(shù)據(jù)庫、云數(shù)據(jù)庫或NoSQL數(shù)據(jù)庫。
常用數(shù)據(jù)庫:
1、關(guān)系型數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫是由IBM的E.F. Codd于1970年發(fā)明的,它是一個(gè)表格數(shù)據(jù)庫,其中定義了數(shù)據(jù),因此可以以多種不同的方式對(duì)其進(jìn)行重組和訪問。
關(guān)系數(shù)據(jù)庫由一組表組成,其中的數(shù)據(jù)屬于預(yù)定義的類別。每個(gè)表在一個(gè)列中至少有一個(gè)數(shù)據(jù)類別,并且每一行對(duì)于列中定義的類別都有一個(gè)特定的數(shù)據(jù)實(shí)例。
結(jié)構(gòu)化查詢語言(SQL)是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)用戶和應(yīng)用程序接口。關(guān)系數(shù)據(jù)庫易于擴(kuò)展,并且可以在原始數(shù)據(jù)庫創(chuàng)建之后添加新的數(shù)據(jù)類別,而不需要修改所有現(xiàn)有應(yīng)用程序。
2、分布式數(shù)據(jù)庫
分布式數(shù)據(jù)庫是一種數(shù)據(jù)庫,其中部分?jǐn)?shù)據(jù)庫存儲(chǔ)在多個(gè)物理位置,處理在網(wǎng)絡(luò)中的不同點(diǎn)之間分散或復(fù)制。
分布式數(shù)據(jù)庫可以是同構(gòu)的,也可以是異構(gòu)的。同構(gòu)分布式數(shù)據(jù)庫系統(tǒng)中的所有物理位置都具有相同的底層硬件,并運(yùn)行相同的操作系統(tǒng)和數(shù)據(jù)庫應(yīng)用程序。異構(gòu)分布式數(shù)據(jù)庫中的硬件、操作系統(tǒng)或數(shù)據(jù)庫應(yīng)用程序在每個(gè)位置上可能是不同的。
3、云數(shù)據(jù)庫
云數(shù)據(jù)庫是針對(duì)虛擬化環(huán)境(混合云、公共云或私有云)優(yōu)化或構(gòu)建的數(shù)據(jù)庫。云數(shù)據(jù)庫提供了一些好處,比如可以按每次使用支付存儲(chǔ)容量和帶寬的費(fèi)用,還可以根據(jù)需要提供可伸縮性和高可用性。
云數(shù)據(jù)庫還為企業(yè)提供了在軟件即服務(wù)部署中支持業(yè)務(wù)應(yīng)用程序的機(jī)會(huì)。
4、NoSQL數(shù)據(jù)庫
NoSQL數(shù)據(jù)庫對(duì)于大型分布式數(shù)據(jù)集非常有用。
NoSQL數(shù)據(jù)庫對(duì)于關(guān)系數(shù)據(jù)庫無法解決的大數(shù)據(jù)性能問題非常有效。當(dāng)組織必須分析大量非結(jié)構(gòu)化數(shù)據(jù)或存儲(chǔ)在云中多個(gè)虛擬服務(wù)器上的數(shù)據(jù)時(shí),它們是最有效的。
5、面向?qū)ο蟮臄?shù)據(jù)庫
使用面向?qū)ο缶幊陶Z言創(chuàng)建的項(xiàng)通常存儲(chǔ)在關(guān)系數(shù)據(jù)庫中,但是面向?qū)ο髷?shù)據(jù)庫非常適合于這些項(xiàng)。
面向?qū)ο蟮臄?shù)據(jù)庫是圍繞對(duì)象(而不是操作)和數(shù)據(jù)(而不是邏輯)組織的。例如,關(guān)系數(shù)據(jù)庫中的多媒體記錄可以是可定義的數(shù)據(jù)對(duì)象,而不是字母數(shù)字值。
6、圖形數(shù)據(jù)庫
面向圖形的數(shù)據(jù)庫是一種NoSQL數(shù)據(jù)庫,它使用圖形理論存儲(chǔ)、映射和查詢關(guān)系。圖數(shù)據(jù)庫基本上是節(jié)點(diǎn)和邊的集合,其中每個(gè)節(jié)點(diǎn)表示一個(gè)實(shí)體,每個(gè)邊表示節(jié)點(diǎn)之間的連接。
圖形數(shù)據(jù)庫在分析互連方面越來越受歡迎。例如,公司可以使用圖形數(shù)據(jù)庫從社交媒體中挖掘關(guān)于客戶的數(shù)據(jù)。
分類一:鍵值數(shù)據(jù)庫
Redis,
Voldemort,
Oracle
BDB,國內(nèi)的ssdb
分類二:列存儲(chǔ)數(shù)據(jù)庫
Cassandra,
HBase
分類三:文檔型數(shù)據(jù)庫
CouchDB,
MongoDb,國內(nèi)的SequoiaDB
分類四:圖形(Graph)數(shù)據(jù)庫
Neo4J,
InfoGrid,
Infinite
Graph
顧名思義就是非關(guān)系型數(shù)據(jù)庫,它的出現(xiàn),就是為了解決關(guān)系型數(shù)據(jù)庫存在的一些問題,可以用NoSQL來進(jìn)行彌補(bǔ),現(xiàn)在聽得比較多的NoSQL數(shù)據(jù)庫有Redis、MongoDB、HBase等。