1. 鍵值數(shù)據(jù)庫(kù)
成都創(chuàng)新互聯(lián)作為成都網(wǎng)站建設(shè)公司,專(zhuān)注成都網(wǎng)站建設(shè)公司、網(wǎng)站設(shè)計(jì),有關(guān)成都定制網(wǎng)頁(yè)設(shè)計(jì)方案、改版、費(fèi)用等問(wèn)題,行業(yè)涉及成都履帶攪拌車(chē)等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶(hù)的尊重與認(rèn)可。
相關(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)
Apache三劍客:HBase, Cassandra, CouchDB。HBase的前景最為看好,因?yàn)樗拈_(kāi)發(fā)者眾多并且都是頂尖高手。Cassandra目前有很多否定的聲音。CouchDB的小而精悍,贊譽(yù)很多,將要正式發(fā)布的CouchBase融合了MemBase和CouchDB,很令人期待。
HBase和Cassandra都是效仿Google的BigTable的基于列的數(shù)據(jù)庫(kù),它們都是用Java寫(xiě)的。另外一類(lèi)似的數(shù)據(jù)庫(kù)是HyperTable,百度用在一些后臺(tái)分析,因?yàn)樗荂++寫(xiě)的,速度比較快。不過(guò)HyperTable有點(diǎn)邊緣,不太流行。這些基于列的開(kāi)源數(shù)據(jù)庫(kù)目前都比Goolge的BigTable差之少一個(gè)數(shù)量級(jí)
CouchDB是一個(gè)文檔數(shù)據(jù)庫(kù)。其最大的競(jìng)爭(zhēng)者是MongoDB。MongoDB和HBase都采用主從服務(wù)器設(shè)計(jì)。CouchDB的服務(wù)器分布設(shè)計(jì)和Cassandra類(lèi)似,Peer to Peer類(lèi)型的。主從服務(wù)器設(shè)計(jì)一般能更好的strong consistent,屬于CAP理論中的CP類(lèi)型。 CouchDB和Cassandra一般認(rèn)為都是eventual consistent,屬于CAP理論中的AP類(lèi)型。但其實(shí)MongoDB和Cassandra都可以設(shè)置成strong consistent或者eventual consistent。
以上所提到的數(shù)據(jù)庫(kù)都支持MapReduce。好像出了HyperTable都支持非主鍵索引。HBase和strong consistent配置的MongoDB都支持最基本的鎖定(HBase單行鎖定,MongoDB單文檔鎖定),因此可以實(shí)現(xiàn)transaction,但是實(shí)現(xiàn)有點(diǎn)復(fù)雜和低效。單就transaction這一點(diǎn),目前開(kāi)源NoSQL數(shù)據(jù)庫(kù)沒(méi)有做的比較好的。
MongoDB的最大賣(mài)點(diǎn)是不需構(gòu)建非主鍵索引也能執(zhí)行很多查詢(xún)。但是MongoDB的服務(wù)器分布設(shè)計(jì)實(shí)在不能讓人恭維,可以說(shuō)是NoSQL數(shù)據(jù)庫(kù)中最Ugly的實(shí)現(xiàn)。
K-V數(shù)據(jù)庫(kù)比較多,而且上面提到的基于列的數(shù)據(jù)庫(kù)和文檔數(shù)據(jù)庫(kù)其實(shí)也都是K-V數(shù)據(jù)庫(kù)。比較流行的純種K-V數(shù)據(jù)庫(kù)有:
Memcached: 非常流行,不支持持久化
VMWare's Redis: 很流行,新浪和知乎都在用,CP類(lèi)型。
MemBase: 由很多Memcached的開(kāi)發(fā)者開(kāi)發(fā),使用sqlite作底層存儲(chǔ)。在社交游戲中用的比較多, zynga在用,CP類(lèi)型。
Riak, 分布式實(shí)現(xiàn)和CouchDB/Cassandra比較像,AP類(lèi)型。支持MapReduce。
Linkin's Voldemort, 在K-V中少見(jiàn)的eventual consistent ,AP類(lèi)型。
TT, TC
純基于二維座標(biāo)索引的是Neo4j。但是現(xiàn)在MongoDB和CouchDB都集成這一特性。
目前CouchDB的開(kāi)發(fā)者成立的公司CouchOne收購(gòu)了MemBase,將其底層sqlite換成CouchDB推出了CouchBase,從而引入MapReduce以支持非主鍵索引。CouchBase暫時(shí)還沒(méi)有正式發(fā)布官方正式版,不過(guò)快了。雖然CouchDB是eventual consistent的,但是CouchBase的開(kāi)發(fā)者宣稱(chēng)CouchBase保持了MemBase的strong consistent特性,具體實(shí)現(xiàn)有待以后研究。
如果從成熟的角度來(lái)看,比較成熟并且十分流行的的有CouchDB,Memcached,Redis。
HBase和MongonDB和Cassandra都比較新,處于頻繁更新之中。最有前途的是HBase,但是Hadoop/HBase集群的維護(hù)常常需要很多專(zhuān)業(yè)人員并且需要構(gòu)建一個(gè)比較大的集群才能最大化體現(xiàn)出威力,因此用戶(hù)主要是Facebook, yahoo, 百度和阿里巴巴等大公司。
個(gè)人比較期待CouchBase。
轉(zhuǎn)載僅供參考,版權(quán)屬于原作者。祝你愉快,滿(mǎn)意請(qǐng)采納哦
非關(guān)系型數(shù)據(jù)庫(kù)嚴(yán)格上不是一種數(shù)據(jù)庫(kù),應(yīng)該是一種數(shù)據(jù)結(jié)構(gòu)化存儲(chǔ)方法的集合,可以是文檔或者鍵值對(duì)等。當(dāng)初我在黑馬程序員培訓(xùn)時(shí)候就學(xué)過(guò)。
優(yōu)點(diǎn):
1、格式靈活:存儲(chǔ)數(shù)據(jù)的格式可以是key,value形式、文檔形式、圖片形式等等,文檔形式、圖片形式等等,使用靈活,應(yīng)用場(chǎng)景廣泛,而關(guān)系型數(shù)據(jù)庫(kù)則只支持基礎(chǔ)類(lèi)型。
2、速度快:nosql可以使用硬盤(pán)或者隨機(jī)存儲(chǔ)器作為載體,而關(guān)系型數(shù)據(jù)庫(kù)只能使用硬盤(pán);
3、高擴(kuò)展性;
4、成本低:nosql數(shù)據(jù)庫(kù)部署簡(jiǎn)單,基本都是開(kāi)源軟件。
缺點(diǎn):
1、不提供sql支持,學(xué)習(xí)和使用成本較高;
2、無(wú)事務(wù)處理;
3、數(shù)據(jù)結(jié)構(gòu)相對(duì)復(fù)雜,復(fù)雜查詢(xún)方面稍欠。
非關(guān)系型數(shù)據(jù)庫(kù)的分類(lèi)和比較:
1、文檔型
2、key-value型
3、列式數(shù)據(jù)庫(kù)
4、圖形數(shù)據(jù)庫(kù)
個(gè)人不認(rèn)為nosql在少量數(shù)據(jù)存儲(chǔ)上有啥優(yōu)勢(shì)。nosql主要解決的是auto sharding的問(wèn)題,你不需要sharding,搞啥nosql. 作者:方圓 鏈接:
即非關(guān)系型數(shù)據(jù)庫(kù)和關(guān)系型數(shù)據(jù)庫(kù)。
MySQL的優(yōu)點(diǎn):事務(wù)處理—保持?jǐn)?shù)據(jù)的一致性;由于以標(biāo)準(zhǔn)化為前提,數(shù)據(jù)更新的開(kāi)銷(xiāo)很?。ㄏ嗤淖侄位旧现挥幸惶帲?;可以進(jìn)行Join等復(fù)雜查詢(xún)
NoSQL的優(yōu)點(diǎn):首先它是基于內(nèi)存的,也就是數(shù)據(jù)放在內(nèi)存中,而不是像數(shù)據(jù)庫(kù)那樣把數(shù)據(jù)放在磁盤(pán)上,而內(nèi)存的讀取速度是磁盤(pán)讀取速度的幾十倍到上百倍,所以NoSQL工具的速度遠(yuǎn)比數(shù)據(jù)庫(kù)讀取速度要快得多,滿(mǎn)足了高響應(yīng)的要求。即使NoSQL將數(shù)據(jù)放在磁盤(pán)中,它也是一種半結(jié)構(gòu)化的數(shù)據(jù) 格式,讀取到解析的復(fù)雜度遠(yuǎn)比MySQL要簡(jiǎn)單,這是因?yàn)镸ySQL存儲(chǔ)的是經(jīng)過(guò)結(jié)構(gòu)化、多范式等有復(fù)雜規(guī)則的數(shù)據(jù),還原為內(nèi)存結(jié)構(gòu)的速度較慢。NoSQL在很大程度上滿(mǎn)足了高并發(fā)、快速讀/和響應(yīng)的要求,所以它也是Java互聯(lián)網(wǎng)系統(tǒng)的利器。
簡(jiǎn)單的擴(kuò)展:典型例子是Cassandra,由于其架構(gòu)是類(lèi)似于經(jīng)典的P2P,所以能通過(guò)輕松地添加新的節(jié)點(diǎn)來(lái)擴(kuò)展這個(gè)集群;
低廉的成本:這是大多數(shù)分布式數(shù)據(jù)庫(kù)共有的特點(diǎn),因?yàn)橹饕际情_(kāi)源軟件,沒(méi)有昂貴的License成本;
NoSQL的缺點(diǎn):大多數(shù)NoSQL數(shù)據(jù)庫(kù)都不支持事務(wù),也不像 SQL Server和Oracle那樣能提供各種附加功能,比如BI和報(bào)表等; 不提供對(duì)SQL的支持
那么該如何選擇?
如果規(guī)模和性能比24小時(shí)的數(shù)據(jù)一致性更重要,那NoSQL是一個(gè)理想的選擇 (NoSQL依賴(lài)于BASE模型——基本可用、軟狀態(tài)、最終一致性)。
但如果要保證到“始終一致”,尤其是對(duì)于機(jī)密信息和財(cái)務(wù)信息,那么MySQL很可能是最優(yōu)的選擇(MySQL依賴(lài)于ACID模型——原子性、一致性、獨(dú)立性和耐久性)。
如果關(guān)系數(shù)據(jù)庫(kù)在你的應(yīng)用場(chǎng)景中,完全能夠很好的工作,而你又是非常善于使用和維護(hù)關(guān)系數(shù)據(jù)庫(kù)的,那么我覺(jué)得你完全沒(méi)有必要遷移到NoSQL上面,除非你是個(gè)喜歡折騰的人。如果你是在金融,電信等以數(shù)據(jù)為王的關(guān)鍵領(lǐng)域,目前使用的是Oracle數(shù)據(jù)庫(kù)來(lái)提供高可靠性的,除非遇到特別大的瓶頸,不然也別貿(mào)然嘗試NoSQL。
然而,在WEB2.0的網(wǎng)站中,關(guān)系數(shù)據(jù)庫(kù)大部分都出現(xiàn)了瓶頸。在磁盤(pán)IO、數(shù)據(jù)庫(kù)可擴(kuò)展上都花費(fèi)了開(kāi)發(fā)人員相當(dāng)多的精力來(lái)優(yōu)化,比如做分表分庫(kù)(database sharding)、主從復(fù)制、異構(gòu)復(fù)制等等,然而,這些工作需要的技術(shù)能力越來(lái)越高,也越來(lái)越具有挑戰(zhàn)性。如果你正在經(jīng)歷這些場(chǎng)合,那么我覺(jué)得你應(yīng)該嘗試一下NoSQL了。
具體問(wèn)題具體分析
MySQL體積小、速度快、成本低、結(jié)構(gòu)穩(wěn)定、便于查詢(xún),可以保證數(shù)據(jù)的一致性,但缺乏靈活性。
NoSQL高性能、高擴(kuò)展、高可用,不用局限于固定的結(jié)構(gòu),減少了時(shí)間和空間上的開(kāi)銷(xiāo),卻又很難保證數(shù)據(jù)一致性。
————————————————
版權(quán)聲明:本文為CSDN博主「蒟蒻熊」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接: