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