nosql數(shù)據(jù)庫(kù)的四種類(lèi)型如下:
創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供甘井子網(wǎng)站建設(shè)、甘井子做網(wǎng)站、甘井子網(wǎng)站設(shè)計(jì)、甘井子網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、甘井子企業(yè)網(wǎng)站模板建站服務(wù),10多年甘井子做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
1.key-value鍵值存儲(chǔ)數(shù)據(jù)庫(kù):
相關(guān)產(chǎn)品: Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached.
主要應(yīng)用: 內(nèi)容緩存,處理大量數(shù)據(jù)的高負(fù)載訪問(wèn),也用于系統(tǒng)日志。
優(yōu)點(diǎn):查找速度快,大量操作時(shí)性能高。
2.列存儲(chǔ)數(shù)據(jù)庫(kù):
相關(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ò)展。
缺點(diǎn):功能相對(duì)局限。
3.文檔型數(shù)據(jù)庫(kù)
相關(guān)產(chǎn)品:MongoDB、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit.
主要應(yīng)用: web應(yīng)用,管理面向文檔的數(shù)據(jù)或者類(lèi)似的半結(jié)構(gòu)化數(shù)據(jù)。
優(yōu)點(diǎn):數(shù)據(jù)結(jié)構(gòu)靈活,表結(jié)構(gòu)可變,復(fù)雜性低。
缺點(diǎn):查詢(xún)效率低,且缺乏統(tǒng)一的查詢(xún)語(yǔ)言。
4.Graph圖形數(shù)據(jù)庫(kù)
相關(guān)產(chǎn)品: Neo4J、OrientDB、InfoGrid、GraphDB.
主要應(yīng)用: 復(fù)雜,互連接,低結(jié)構(gòu)化的圖結(jié)構(gòu)場(chǎng)合, 專(zhuān)注構(gòu)建關(guān)系圖譜。
優(yōu)點(diǎn): 利用圖結(jié)構(gòu)相關(guān)算法, 可用于構(gòu)建復(fù)雜的關(guān)系圖譜。
缺點(diǎn): 復(fù)雜度高。
1. 鍵值數(shù)據(jù)庫(kù)
相關(guān)產(chǎn)品:Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached
應(yīng)用:內(nèi)容緩存
優(yōu)點(diǎn):擴(kuò)展性好、靈活性好、大量寫(xiě)操作時(shí)性能高
缺點(diǎn):無(wú)法存儲(chǔ)結(jié)構(gòu)化信息、條件查詢(xún)效率較低
使用者:百度云(Redis)、GitHub(Riak)、BestBuy(Riak)、Twitter(Ridis和Memcached)
2. 列族數(shù)據(jù)庫(kù)
相關(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ù)庫(kù)
相關(guān)產(chǎn)品:MongoDB、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit
應(yīng)用:存儲(chǔ)、索引并管理面向文檔的數(shù)據(jù)或者類(lèi)似的半結(jié)構(gòu)化數(shù)據(jù)
優(yōu)點(diǎn):性能好、靈活性高、復(fù)雜性低、數(shù)據(jù)結(jié)構(gòu)靈活
缺點(diǎn):缺乏統(tǒng)一的查詢(xún)語(yǔ)言
使用者:百度云數(shù)據(jù)庫(kù)(MongoDB)、SAP(MongoDB)
4. 圖形數(shù)據(jù)庫(kù)
圖形數(shù)據(jù)庫(kù)-使用圖作為數(shù)據(jù)模型來(lái)存儲(chǔ)數(shù)據(jù)。
相關(guān)產(chǎn)品:Neo4J、OrientDB、InfoGrid、GraphDB
應(yīng)用:大量復(fù)雜、互連接、低結(jié)構(gòu)化的圖結(jié)構(gòu)場(chǎng)合,如社交網(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)
nosql四大分類(lèi):1、KV鍵值對(duì)。
2、文檔型數(shù)據(jù)庫(kù)。
3、列存儲(chǔ)數(shù)據(jù)庫(kù)。
4、圖關(guān)系數(shù)據(jù)庫(kù)。nosql是非關(guān)系型數(shù)據(jù)庫(kù),NoSQL(NotOnlySQL),意思是"不僅僅是SQL",指的是非關(guān)系型數(shù)據(jù)庫(kù),是對(duì)不同于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)管理系統(tǒng)的統(tǒng)稱(chēng)。
通常數(shù)據(jù)庫(kù)分為關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù),關(guān)系型數(shù)據(jù)庫(kù)的優(yōu)勢(shì)到現(xiàn)在也是無(wú)可替代的,比如MySQL、SQL Server、Oracle、DB2、SyBase、Informix、PostgreSQL以及比較小型的Access等等數(shù)據(jù)庫(kù),這些數(shù)據(jù)庫(kù)支持復(fù)雜的SQL操作和事務(wù)機(jī)制,適合小量數(shù)據(jù)讀寫(xiě)場(chǎng)景;但是到了大數(shù)據(jù)時(shí)代,人們更多的數(shù)據(jù)和物聯(lián)網(wǎng)加入的數(shù)據(jù)已經(jīng)超出了關(guān)系數(shù)據(jù)庫(kù)的承載范圍。
大數(shù)據(jù)時(shí)代初期,隨著數(shù)據(jù)請(qǐng)求并發(fā)量大不斷增大,一般都是采用的集群同步數(shù)據(jù)的方式處理,就是將數(shù)據(jù)庫(kù)分成了很多的小庫(kù),每個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)內(nèi)容是不變的,都是保存了源數(shù)據(jù)庫(kù)的數(shù)據(jù)副本,通過(guò)同步或者異步方式保證數(shù)據(jù)的一致性,每個(gè)庫(kù)設(shè)定特定的讀寫(xiě)方式,比如主數(shù)據(jù)庫(kù)負(fù)責(zé)寫(xiě)操作,從數(shù)據(jù)庫(kù)是負(fù)責(zé)讀操作,等等根據(jù)業(yè)務(wù)復(fù)雜程度以此類(lèi)推,將業(yè)務(wù)在物理層面上進(jìn)行了分離,但是這種方式依舊存在一定的負(fù)載壓力的問(wèn)題,企業(yè)數(shù)據(jù)在不斷的擴(kuò)增中,后面就采用分庫(kù)分表的方式解決,對(duì)讀寫(xiě)負(fù)載進(jìn)行分離,但是這種實(shí)現(xiàn)依舊存在不足,且需要不斷進(jìn)行數(shù)據(jù)庫(kù)服務(wù)器擴(kuò)容。
NoSQL數(shù)據(jù)庫(kù)大致分為5種類(lèi)型
1、列族數(shù)據(jù)庫(kù):BigTable、HBase、Cassandra、Amazon SimpleDB、HadoopDB等,下面簡(jiǎn)單介紹幾個(gè)
(1)Cassandra:Cassandra是一個(gè)列存儲(chǔ)數(shù)據(jù)庫(kù),支持跨數(shù)據(jù)中心的數(shù)據(jù)復(fù)制。它的數(shù)據(jù)模型提供列索引,log-structured修改,支持反規(guī)范化,實(shí)體化視圖和嵌入超高速緩存。
(2)HBase:Apache Hbase源于Google的Bigtable,是一個(gè)開(kāi)源、分布式、面向列存儲(chǔ)的模型。在Hadoop和HDFS之上提供了像Bigtable一樣的功能。
(3)Amazon SimpleDB:Amazon SimpleDB是一個(gè)非關(guān)系型數(shù)據(jù)存儲(chǔ),它卸下數(shù)據(jù)庫(kù)管理的工作。開(kāi)發(fā)者使用Web服務(wù)請(qǐng)求存儲(chǔ)和查詢(xún)數(shù)據(jù)項(xiàng)
(4)Apache Accumulo:Apache Accumulo的有序的、分布式鍵值數(shù)據(jù)存儲(chǔ),基于Google的BigTable設(shè)計(jì),建立在Apache Hadoop、Zookeeper和Thrift技術(shù)之上。
(5)Hypertable:Hypertable是一個(gè)開(kāi)源、可擴(kuò)展的數(shù)據(jù)庫(kù),模仿Bigtable,支持分片。
(6)Azure Tables:Windows Azure Table Storage Service為要求大量非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的應(yīng)用提供NoSQL性能。表能夠自動(dòng)擴(kuò)展到TB級(jí)別,能通過(guò)REST和Managed API訪問(wèn)。
2、鍵值數(shù)據(jù)庫(kù):Redis、SimpleDB、Scalaris、Memcached等,下面簡(jiǎn)單介紹幾個(gè)
(1)Riak:Riak是一個(gè)開(kāi)源,分布式鍵值數(shù)據(jù)庫(kù),支持?jǐn)?shù)據(jù)復(fù)制和容錯(cuò)。(2)Redis:Redis是一個(gè)開(kāi)源的鍵值存儲(chǔ)。支持主從式復(fù)制、事務(wù),Pub/Sub、Lua腳本,還支持給Key添加時(shí)限。
(3)Dynamo:Dynamo是一個(gè)鍵值分布式數(shù)據(jù)存儲(chǔ)。它直接由亞馬遜Dynamo數(shù)據(jù)庫(kù)實(shí)現(xiàn);在亞馬遜S3產(chǎn)品中使用。
(4)Oracle NoSQL Database:來(lái)自O(shè)racle的鍵值NoSQL數(shù)據(jù)庫(kù)。它支持事務(wù)ACID(原子性、一致性、持久性和獨(dú)立性)和JSON。
(5)Oracle NoSQL Database:具備數(shù)據(jù)備份和分布式鍵值存儲(chǔ)系統(tǒng)。
(6)Voldemort:具備數(shù)據(jù)備份和分布式鍵值存儲(chǔ)系統(tǒng)。
(7)Aerospike:Aerospike數(shù)據(jù)庫(kù)是一個(gè)鍵值存儲(chǔ),支持混合內(nèi)存架構(gòu),通過(guò)強(qiáng)一致性和可調(diào)一致性保證數(shù)據(jù)的完整性。
3、文檔數(shù)據(jù)庫(kù):MongoDB、CouchDB、Perservere、Terrastore、RavenDB等,下面簡(jiǎn)單介紹幾個(gè)
(1)MongoDB:開(kāi)源、面向文檔,也是當(dāng)下最人氣的NoSQL數(shù)據(jù)庫(kù)。
(2)CounchDB:Apache CounchDB是一個(gè)使用JSON的文檔數(shù)據(jù)庫(kù),使用Javascript做MapReduce查詢(xún),以及一個(gè)使用HTTP的API。
(3)Couchbase:NoSQL文檔數(shù)據(jù)庫(kù)基于JSON模型。
(4)RavenDB:RavenDB是一個(gè)基于.NET語(yǔ)言的面向文檔數(shù)據(jù)庫(kù)。
(5)MarkLogic:MarkLogic NoSQL數(shù)據(jù)庫(kù)用來(lái)存儲(chǔ)基于XML和以文檔為中心的信息,支持靈活的模式。
4、圖數(shù)據(jù)庫(kù):Neo4J、InfoGrid、OrientDB、GraphDB,下面簡(jiǎn)單介紹幾個(gè)
(1)Neo4j:Neo4j是一個(gè)圖數(shù)據(jù)庫(kù);支持ACID事務(wù)(原子性、獨(dú)立性、持久性和一致性)。
(2)InfiniteGraph:一個(gè)圖數(shù)據(jù)庫(kù)用來(lái)維持和遍歷對(duì)象間的關(guān)系,支持分布式數(shù)據(jù)存儲(chǔ)。
(3)AllegroGraph:AllegroGraph是結(jié)合使用了內(nèi)存和磁盤(pán),提供了高可擴(kuò)展性,支持SPARQ、RDFS++和Prolog推理。
5、內(nèi)存數(shù)據(jù)網(wǎng)格:Hazelcast、Oracle Coherence、Terracotta BigMemorry、GemFire、Infinispan、GridGain、GigaSpaces,下面簡(jiǎn)單介紹幾個(gè)
(1)Hazelcast:Hazelcast CE是一個(gè)開(kāi)源數(shù)據(jù)分布平臺(tái),它允許開(kāi)發(fā)者在數(shù)據(jù)庫(kù)集群之上共享和分割數(shù)據(jù)。
(2)Oracle Coherence:Oracle的內(nèi)存數(shù)據(jù)網(wǎng)格解決方案提供了常用數(shù)據(jù)的快速訪問(wèn)能力,一致性支持事務(wù)處理能力和數(shù)據(jù)的動(dòng)態(tài)劃分。
(3)Terracotta BigMemory:來(lái)自Terracotta的分布式內(nèi)存管理解決方案。這項(xiàng)產(chǎn)品包括一個(gè)Ehcache界面、Terracotta管理控制臺(tái)和BigMemory-Hadoop連接器。
(4)GemFire:Vmware vFabric GemFire是一個(gè)分布式數(shù)據(jù)管理平臺(tái),也是一個(gè)分布式的數(shù)據(jù)網(wǎng)格平臺(tái),支持內(nèi)存數(shù)據(jù)管理、復(fù)制、劃分、數(shù)據(jù)識(shí)別路由和連續(xù)查詢(xún)。
(5)Infinispan:Infinispan是一個(gè)基于Java的開(kāi)源鍵值NoSQL數(shù)據(jù)存儲(chǔ),和分布式數(shù)據(jù)節(jié)點(diǎn)平臺(tái),支持事務(wù),peer-to-peer 及client/server 架構(gòu)。
(6)GridGain:分布式、面向?qū)ο?、基于?nèi)存、SQL+NoSQL鍵值數(shù)據(jù)庫(kù)。支持ACID事務(wù)。
(7)GigaSpaces:GigaSpaces內(nèi)存數(shù)據(jù)網(wǎng)格能夠充當(dāng)應(yīng)用的記錄系統(tǒng),并支持各種各樣的高速緩存場(chǎng)景。
基本含義NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,是一項(xiàng)全新的數(shù)據(jù)庫(kù)革命性運(yùn)動(dòng),早期就有人提出,發(fā)展至2009年趨勢(shì)越發(fā)高漲。NoSQL的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)據(jù)存儲(chǔ),相對(duì)于鋪天蓋地的關(guān)系型數(shù)據(jù)庫(kù)運(yùn)用,這一概念無(wú)疑是一種全新的思維的注入。NoSQLNoSQL數(shù)據(jù)庫(kù)的四大分類(lèi)鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù)這一類(lèi)數(shù)據(jù)庫(kù)主要會(huì)使用到一個(gè)哈希表,這個(gè)表中有一個(gè)特定的鍵和一個(gè)指針指向特定的數(shù)據(jù)。Key/value模型對(duì)于IT系統(tǒng)來(lái)說(shuō)的優(yōu)勢(shì)在于簡(jiǎn)單、易部署。但是如果DBA只對(duì)部分值進(jìn)行查詢(xún)或更新的時(shí)候,Key/value就顯得效率低下了。[3] 舉例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.列存儲(chǔ)數(shù)據(jù)庫(kù)。這部分?jǐn)?shù)據(jù)庫(kù)通常是用來(lái)應(yīng)對(duì)分布式存儲(chǔ)的海量數(shù)據(jù)。鍵仍然存在,但是它們的特點(diǎn)是指向了多個(gè)列。這些列是由列家族來(lái)安排的。如:Cassandra, HBase, Riak.文檔型數(shù)據(jù)庫(kù)文檔型數(shù)據(jù)庫(kù)的靈感是來(lái)自于Lotus Notes辦公軟件的,而且它同第一種鍵值存儲(chǔ)相類(lèi)似。該類(lèi)型的數(shù)據(jù)模型是版本化的文檔,半結(jié)構(gòu)化的文檔以特定的格式存儲(chǔ),比如JSON。文檔型數(shù)據(jù)庫(kù)可 以看作是鍵值數(shù)據(jù)庫(kù)的升級(jí)版,允許之間嵌套鍵值。而且文檔型數(shù)據(jù)庫(kù)比鍵值數(shù)據(jù)庫(kù)的查詢(xún)效率更高。如:CouchDB, MongoDb. 國(guó)內(nèi)也有文檔型數(shù)據(jù)庫(kù)SequoiaDB,已經(jīng)開(kāi)源。圖形(Graph)數(shù)據(jù)庫(kù)圖形結(jié)構(gòu)的數(shù)據(jù)庫(kù)同其他行列以及剛性結(jié)構(gòu)的SQL數(shù)據(jù)庫(kù)不同,它是使用靈活的圖形模型,并且能夠擴(kuò)展到多個(gè)服務(wù)器上。NoSQL數(shù)據(jù)庫(kù)沒(méi)有標(biāo)準(zhǔn)的查詢(xún)語(yǔ)言(SQL),因此進(jìn)行數(shù)據(jù)庫(kù)查詢(xún)需要制定數(shù)據(jù)模型。許多NoSQL數(shù)據(jù)庫(kù)都有REST式的數(shù)據(jù)接口或者查詢(xún)API。[2] 如:Neo4J, InfoGrid, Infinite Graph.因此,我們總結(jié)NoSQL數(shù)據(jù)庫(kù)在以下的這幾種情況下比較適用:1、數(shù)據(jù)模型比較簡(jiǎn)單;2、需要靈活性更強(qiáng)的IT系統(tǒng);3、對(duì)數(shù)據(jù)庫(kù)性能要求較高;4、不需要高度的數(shù)據(jù)一致性;5、對(duì)于給定key,比較容易映射復(fù)雜值的環(huán)境。