NoSQL數(shù)據(jù)庫(kù)在以下的這幾種情況下比較適用:
1、數(shù)據(jù)模型比較簡(jiǎn)單;
2、需要靈活性更強(qiáng)的IT系統(tǒng);
3、對(duì)數(shù)據(jù)庫(kù)性能要求較高;
4、不需要高度的數(shù)據(jù)1致性;
5、對(duì)給定key,比較容易映照復(fù)雜值的環(huán)境。
NoSQL數(shù)據(jù)庫(kù)種類繁多,但是1個(gè)共同的特點(diǎn)都是去掉關(guān)系數(shù)據(jù)庫(kù)的關(guān)系型特性。數(shù)據(jù)之間無(wú)關(guān)系,這樣就非常容易擴(kuò)大。也無(wú)形之間,在架構(gòu)的層面上帶來(lái)了可擴(kuò)大的能力。2.大數(shù)據(jù)量,高性能
NoSQL數(shù)據(jù)庫(kù)都具有非常高的讀寫性能,特別在大數(shù)據(jù)量下,一樣表現(xiàn)優(yōu)秀。這得益于它的無(wú)關(guān)系性,數(shù)據(jù)庫(kù)的結(jié)構(gòu)簡(jiǎn)單。1般MySQL使用Query Cache,每次表的更新Cache就失效,是1種大粒度的Cache,在針對(duì)web2.0的交互頻繁的利用,Cache性能不高。而NoSQL的Cache是記錄級(jí)的,是1種細(xì)粒度的Cache,所以NoSQL在這個(gè)層面上來(lái)講就要性能高很多了。3.靈活的數(shù)據(jù)類型
NoSQL無(wú)需事前為要存儲(chǔ)的數(shù)據(jù)建立字段,隨時(shí)可以存儲(chǔ)自定義的數(shù)據(jù)格式。而在關(guān)系數(shù)據(jù)庫(kù)里,增刪字段是1件非常麻煩的事情。如果是非常大數(shù)據(jù)量的表,增加字段簡(jiǎn)直就是1個(gè)噩夢(mèng)。這點(diǎn)在大數(shù)據(jù)量的web2.0時(shí)期特別明顯。4.高可用
NoSQL在不太影響性能的情況,就能夠方便的實(shí)現(xiàn)高可用的架構(gòu)。比如Cassandra,HBase模型,通過(guò)復(fù)制模型也能實(shí)現(xiàn)高可用。
1. 不提供對(duì)SQL的支持:如果不支持SQL這樣的工業(yè)標(biāo)準(zhǔn),將會(huì)對(duì)用戶產(chǎn)生1定的學(xué)習(xí)和利用遷移本錢;
2. 支持的特性不夠豐富:現(xiàn)有產(chǎn)品所提供的功能都比較有限,大多數(shù)NoSQL數(shù)據(jù)庫(kù)都不支持事務(wù),也不像mysql和Oracle那樣能提供各種附加功能,比如BI和報(bào)表等;
3. 現(xiàn)有產(chǎn)品的不夠成熟:大多數(shù)產(chǎn)品都還處于初創(chuàng)期,和關(guān)系型數(shù)據(jù)庫(kù)幾10年的完善不可同日而語(yǔ);
代表:Berkeley DB、Hibari、Leveldb、memcachedb、Redis、Tair、DynamoDB
特點(diǎn):可以通過(guò)key快速查詢到其value。1般來(lái)講,存儲(chǔ)不管value的格式,照單全收。(Redis包括了其他功能)
優(yōu)點(diǎn):快速查詢
不足:存儲(chǔ)數(shù)據(jù)缺少結(jié)構(gòu)化
數(shù)據(jù)模型:1系列鍵值對(duì)
典型利用:內(nèi)容緩存、合適混合工作負(fù)載并擴(kuò)大大的數(shù)據(jù)集
代表:Hbase、Cassandra、Hypertable、GBase、Tera
特點(diǎn):顧名思義,是按列存儲(chǔ)數(shù)據(jù)的。最大的特點(diǎn)是方便存儲(chǔ)結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù),方便做數(shù)據(jù)緊縮,對(duì)針對(duì)某1列或某幾列的查詢有非常大的IO優(yōu)勢(shì)。
優(yōu)點(diǎn):查找速度快、可擴(kuò)大性強(qiáng)、更容易進(jìn)行散布式擴(kuò)大
不足:功能相對(duì)局限
數(shù)據(jù)模型:以列族式存儲(chǔ),將同1列數(shù)據(jù)存在1起
典型利用:散布式文件系統(tǒng)
特點(diǎn):顧名思義,是按列存儲(chǔ)數(shù)據(jù)的。最大的特點(diǎn)是方便存儲(chǔ)結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù),方便做數(shù)據(jù)緊縮,對(duì)針對(duì)某1列或某幾列的查詢有非常大的IO優(yōu)勢(shì)。
優(yōu)點(diǎn):查找速度快、可擴(kuò)大性強(qiáng)、更容易進(jìn)行散布式擴(kuò)大
不足:功能相對(duì)局限
數(shù)據(jù)模型:以列族式存儲(chǔ),將同1列數(shù)據(jù)存在1起
典型利用:散布式文件系統(tǒng)
代表:MongoDB、CouchDB、Couchbase、EJDB、MarkLogic、SequoiaDB、SimpleDB
特點(diǎn):文檔存儲(chǔ)1般用類似json的格式存儲(chǔ),存儲(chǔ)的內(nèi)容是文檔型的。這樣也就有有機(jī)會(huì)對(duì)某些字段建立索引,實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫(kù)的某些功能。
優(yōu)點(diǎn):數(shù)據(jù)結(jié)構(gòu)要求不嚴(yán)格
不足:查詢性能不高,而且缺少統(tǒng)1的查詢語(yǔ)法
數(shù)據(jù)模型:1系列鍵值對(duì)
典型利用:WEB利用
代表:Cayley、Neo4j
特點(diǎn):圖形關(guān)系的最好存儲(chǔ)。使用傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)來(lái)解決的話性能低下,而且設(shè)計(jì)使用不方便。
優(yōu)點(diǎn):利用圖結(jié)構(gòu)相干算法
不足:需要對(duì)全部圖做計(jì)算才能得出結(jié)果,不容易做散布式的集群方案。
數(shù)據(jù)模型:圖結(jié)構(gòu)
典型利用:社交網(wǎng)絡(luò)、推薦系統(tǒng)等,專注于構(gòu)建關(guān)系圖譜
代表:db4o、Versant
特點(diǎn):通過(guò)類似面向?qū)ο笳Z(yǔ)言的語(yǔ)法操作數(shù)據(jù)庫(kù),通過(guò)對(duì)象的方式存取數(shù)據(jù)。
優(yōu)點(diǎn):高性能、易嵌入、零管理。db4o 的 dRS(db4o Replication System)可實(shí)現(xiàn) db4o 與關(guān)系型數(shù)據(jù)庫(kù)的雙向同步(復(fù)制)
代表:BaseX、sedna
特點(diǎn):高效的存儲(chǔ)XML數(shù)據(jù),并支持XML的內(nèi)部查詢語(yǔ)法,比如XQuery,Xpath。
優(yōu)點(diǎn):提供了高效的 XPath 和 XQuery 的實(shí)現(xiàn),有前端界面.基于 ACID 安全事務(wù)、用戶和密碼管理、事務(wù)日志等.更能支持大型XML文檔的存儲(chǔ)
不足:在大量數(shù)據(jù)存儲(chǔ)時(shí)不如其他類型數(shù)據(jù)庫(kù)高效
數(shù)據(jù)模型:XML文檔
當(dāng)前多數(shù)將nosql分為前4類
Accumulo(Key-Value型)
Arangodb (文檔型)
Aerospike (Key-Value型)
BaseX (XML型)
BeansDB (簡(jiǎn)化版的Dynamo)
Berkeley DB (Key-Value型)
Cassandra (Key-Value型)(列存儲(chǔ))
Cayley (Graph型)
Couchbase (CouchBase = CouchDB + MemBase)(文檔型)
CouchDB (文檔型)
db4o (面向?qū)ο笮?
DynamoDB (Key-Value型)
EJDB (文檔型)
FatDB (Key-Value型)
Flare (Key-Value型)
FoundationDB (Key-Value型)
ForestDB (Key-Value型)
Galaxy (高性能內(nèi)存數(shù)據(jù)庫(kù)網(wǎng)格 )
GBase 8a (列存儲(chǔ))(國(guó)產(chǎn)->南京大學(xué)通用數(shù)據(jù)技術(shù)有限公司)
HandlerSocket (日本,以mysql插件情勢(shì)運(yùn)行)
HBase (列式存儲(chǔ))
Hibari (Key-Value型)
HyperLevelDB (改進(jìn)自Leveldb)(Key-Value型)
Hypertable (列式存儲(chǔ))
InfiniteGraph (Graph型)
iPage (基于文件)(Key-Value型)(java lib)
Jackrabbit (文檔型)
Keyspace (Key-Value型)
LedisDB (基于Leveldb,類似redis)(Key-Value型)
Leveldb (Key-Value型)
LiteDB (嵌入式)(文檔型)
MarkLogic (文檔型)
MapDB (嵌入式Java數(shù)據(jù)庫(kù)引擎)
Maxtable (高性能、可擴(kuò)大的、PB級(jí)海量數(shù)據(jù)處理系統(tǒng))
Memcached (Key-Value型)
memcachedb (Key-Value型)給memcached散布式緩存服務(wù)器添加了Berkeley DB的持久化存儲(chǔ)機(jī)制和異步主輔復(fù)制機(jī)制
Memlink (Key-Value型)
MongoDB (文檔型)
Neo4j (Graph型)
nessDB (Key-Value型)
Oceanbase (散布式關(guān)系數(shù)據(jù)庫(kù))(阿里開(kāi)發(fā)現(xiàn)已用于淘寶和支付寶)
Oracle NoSQL Database(Key-Value型)
Orient DB (文檔型)
PouchDB (最便攜的CouchDB)(文檔型)
RavenDB (文檔型)
Redis (Key-Value型)
RethinkDB ( JSON 文檔型)
Riak (Key-Value型)
RocksDB (基于Leveldb)(Key-Value型)
sedna (XML型)
SequoiaDB(文檔型)(國(guó)產(chǎn)->第1個(gè)商用nosql數(shù)據(jù)庫(kù))
SimpleDB (文檔型)
SSDB (基于Leveldb,替換 Redis)(Key-Value型)
Tair(Key-Value型)(國(guó)產(chǎn)-> 淘寶開(kāi)發(fā))
Tera (使用了bigtable的數(shù)據(jù)模型)(列式存儲(chǔ))
tiger (Key-Value型)
TomP2P (Key-Value型)
Tokyo Cabinet/Tokyo Tyant (Key-Value型)
TreapDB (Key-Value型)
UnQLite (嵌入式)(文檔型)(Key-Value型)
Versant (面向?qū)ο笮?
Voldemort (Key-Value型)
WhiteDB (輕量級(jí) NoSQL )
xuncache (Key-Value型)
/**************************************************************/
NOSQL的總結(jié)暫時(shí)先寫到這里,對(duì)每一個(gè)nosql的數(shù)據(jù)庫(kù)的簡(jiǎn)短描寫和比較將在后續(xù)上傳