導(dǎo)讀:近日曾在多家大公司任職的軟件架構(gòu)師兼顧問Kristóf Kovács在博客中對(duì)主流的NoSQL數(shù)據(jù)庫(kù)(Cassandra、Mongodb、CouchDB、Redis、Riak以及HBase)進(jìn)行了全方位的對(duì)比。
雖然SQL數(shù)據(jù)庫(kù)占據(jù)統(tǒng)治地位15年,但現(xiàn)在該是結(jié)束的時(shí)候了,這只是時(shí)間問題。在NoSQL如日中天的今天,各種NoSQL產(chǎn)品可謂百花齊放,但每一個(gè)產(chǎn)品都有自己的特點(diǎn),有長(zhǎng)處也有不適合的場(chǎng)景。本文對(duì)Cassandra、Mongodb、CouchDB、Redis、Riak以及HBase進(jìn)行了多方面的特點(diǎn)分析。
CouchDB使用的開發(fā)語言為Erlang,遵循Apache許可,使用HTTP/REST協(xié)議。主要優(yōu)點(diǎn)是可保持?jǐn)?shù)據(jù)一致性和易用性,同時(shí)允許多站部署。CouchDB主要適用于積累性的、并且較少改變數(shù)據(jù)的應(yīng)用。例如CRM、CMS systems等。
Redis使用的開發(fā)語言為C/C++,遵循BSD許可,使用Telnet-like協(xié)議。主要優(yōu)點(diǎn)是速度極快。Redis主要適用數(shù)據(jù)集數(shù)據(jù)時(shí)常變化的應(yīng)用。但內(nèi)存占用較大。主要應(yīng)用于金融機(jī)構(gòu)、實(shí)時(shí)分析、實(shí)時(shí)數(shù)據(jù)收集、實(shí)時(shí)通信等。
MongoDB使用的開發(fā)語言為C++,遵循AGPL(Drivers:Apache),使用Custom,binary(BSON)協(xié)議。MongoDB適用于動(dòng)態(tài)查詢、且定義索引比Map/Reduce效能更佳的地方。不過與CouchDB一樣其數(shù)據(jù)變動(dòng)較多,需要大容量磁盤。MongoDB可在任何Mysql/PostgreSQL的環(huán)境下使用。
Cassandra使用的開發(fā)語言是Java,遵循Apache,使用Custom,binary(Thrift)協(xié)議。Cassandra適用于寫入多于查詢的場(chǎng)合,例如銀行和金融行業(yè)等需要實(shí)時(shí)數(shù)據(jù)分析的行業(yè)。
Riak使用的開發(fā)語言是Erlang & C、Javascript。遵循Apache,使用HTTP/REST協(xié)議。Riak具有高容錯(cuò)性的特點(diǎn)。Riak和Cassandra非常相似。當(dāng)需要高擴(kuò)展性和高容錯(cuò)性時(shí)Riak是不錯(cuò)的選擇。但多站點(diǎn)的部署需要付費(fèi)。Riak適用于銷售數(shù)據(jù)錄入、工控系統(tǒng)等一些不允許宕機(jī)的場(chǎng)合。
HBase使用的開發(fā)語言為Java,遵循Apache,使用HTTP/REST協(xié)議。HBase可支持高達(dá)數(shù)十億的列。如果你喜愛BigTable并且需要一個(gè)能提供隨機(jī)實(shí)時(shí)讀寫訪問你海量數(shù)據(jù)的數(shù)據(jù)庫(kù),HBase是不錯(cuò)的選擇。HBase現(xiàn)被Facebook郵件數(shù)據(jù)庫(kù)所使用。