作為一名軟件開(kāi)發(fā)人員或DBA,,其中一份必不可少的工作就是與數(shù)據(jù)庫(kù)打交道,,比如MS SQL服務(wù)器、MySQL,、Oracle,、PostgreSQL、MongoDB等等,。眾所周知,,其中MySQL是目前使用最廣泛最好的免費(fèi)開(kāi)源數(shù)據(jù)庫(kù),此外,,還有一些你不知道或者沒(méi)用過(guò)但又非常出色的開(kāi)源數(shù)據(jù)庫(kù),,例如 PostgreSQL、 MongoDB,、HBase,、Cassandra、Couchbase,、Neo4j,、Riak、Redis,、Firebird 等,。 在本文,作者總共總結(jié)了21個(gè)最優(yōu)秀的開(kāi)源數(shù)據(jù)庫(kù),,不妨讓我們一起來(lái)看下吧,。 1.MySQL MySQL是一個(gè)開(kāi)源的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),為甲骨文公司產(chǎn)品,。支持多種存儲(chǔ)引擎,、集群、全文 索引,、支持多線程,、充分利用CPU資源、支持多用戶等其它許多非常專(zhuān)業(yè)的功能,。 MySQL由于性能高,、成本低、可靠性好已經(jīng)成為最流行的開(kāi)源數(shù)據(jù)庫(kù),,并且被廣泛應(yīng)用在Web應(yīng)用程序以及其它中小型項(xiàng)目上,。從WordPress 到Movable Type都把MySQL作為默認(rèn)的數(shù)據(jù)庫(kù)。此外,,自甲骨文收購(gòu)MySQL以后,,有將MySQL閉源的潛在風(fēng)險(xiǎn),,因此社區(qū)采用分支的方式避開(kāi)這種風(fēng)險(xiǎn),開(kāi)發(fā)并運(yùn)營(yíng)著完全兼容MySQL的MariaDB數(shù)據(jù)庫(kù),。 PostgreSQL可以簡(jiǎn)稱(chēng)為“postgres”,,是一款對(duì)象-關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),PostgreSQL采用的是比較 經(jīng)典的C/S(client/server)結(jié)構(gòu),,也就是一個(gè)客戶端對(duì)應(yīng)一個(gè)服務(wù)器端守護(hù)進(jìn)程的模式,。PostgreSQL擁有非常完美的驅(qū)動(dòng),并支持標(biāo)準(zhǔn)的ANSI-SQL和擴(kuò)展功能,,在許多方面都要超過(guò)MySQL,。 PostgreSQL是全功能的自由軟件數(shù)據(jù)庫(kù),很長(zhǎng)時(shí)間以來(lái),,PostgreSQL是唯一支持事務(wù),、子查詢、多版本并行控制系統(tǒng)(MVCC),、數(shù)據(jù)完整性檢查等特性的唯一一種自由軟件的數(shù)據(jù)庫(kù)管理系統(tǒng),。許多云服務(wù)提供商比如Heroku等,都用PostgreSQL作為他們的RDBMS存儲(chǔ),。 缺點(diǎn)方面,,PostgreSQL還欠缺一些比較高端的數(shù)據(jù)庫(kù)管理系統(tǒng)需要的特性,比如數(shù)據(jù)庫(kù)集群,,更優(yōu)良的管理工具和更加自動(dòng)化的系統(tǒng)優(yōu)化功能等提高數(shù)據(jù)庫(kù)性能的機(jī)制等,。 3.MongoDB MongoDB是一款開(kāi)源、面向文檔并且也是當(dāng)下人氣最旺的NoSQL數(shù)據(jù)庫(kù),,它也是一款介于關(guān)系數(shù)據(jù)
庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,。Mongo最大的特點(diǎn)是它支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類(lèi)似于面向?qū)ο蟮牟樵冋Z(yǔ)言,,幾乎可以實(shí)現(xiàn)類(lèi)似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,,而且還支持對(duì)數(shù)據(jù)建立索引。還具有高性能,、易部署,、易使用,存儲(chǔ)數(shù)據(jù)非常方便等特點(diǎn),。
Hadoop (HBase)是一個(gè)開(kāi)源的、基于列存儲(chǔ)模型的分布式數(shù)據(jù)庫(kù),,它是Apache Hadoop項(xiàng)目的一部分,,開(kāi)發(fā)語(yǔ)言為Java。 HBase不同于一般的關(guān)系數(shù)據(jù)庫(kù),,它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù),。另一個(gè)不同的是 HBase基于列的而不是基于行的模式,。且具有高可靠性、高性能,、可伸縮,、并建立在關(guān)系模型基礎(chǔ)上的分布式數(shù)據(jù)庫(kù)。 HBase是Google Bigtable的開(kāi)源實(shí)現(xiàn),,類(lèi)似Google Bigtable利用GFS作為其文件存儲(chǔ)系統(tǒng),,用以存儲(chǔ)大規(guī)模結(jié)構(gòu)化數(shù)據(jù)。HBase利用Hadoop HDFS作為其文件存儲(chǔ)系統(tǒng),;Google運(yùn)行MapReduce來(lái)處理Bigtable中的海量數(shù)據(jù),,HBase同樣利用Hadoop MapReduce來(lái)處理HBase中的海量數(shù)據(jù);Google Bigtable利用 Chubby作為協(xié)同服務(wù),,HBase利用Zookeeper作為對(duì)應(yīng),。 Apache Cassandra是一套開(kāi)源分布式NoSQL數(shù)據(jù)庫(kù)系統(tǒng),類(lèi)似于Google的BigTable,。它最初由 Facebook開(kāi)發(fā),,用于儲(chǔ)存收件箱等簡(jiǎn)單格式數(shù)據(jù),集Google BigTable的數(shù)據(jù)模型與Amazon Dynamo的完全分布式的架構(gòu)于一身,。在2008年,,F(xiàn)acebook將其開(kāi)源。 Cassandra的主要特點(diǎn)就是它不是一個(gè)數(shù)據(jù)庫(kù),,而是由一堆數(shù)據(jù)庫(kù)節(jié)點(diǎn)共同構(gòu)成的一個(gè)分布式網(wǎng)絡(luò)服務(wù),,對(duì)Cassandra 的一個(gè)寫(xiě)操作,會(huì)被復(fù)制到其它節(jié)點(diǎn)上去,,對(duì)Cassandra的讀操作,,也會(huì)被路由到某個(gè)節(jié)點(diǎn)上面去讀取。對(duì)于一個(gè)Cassandra群集來(lái)說(shuō),,擴(kuò)展性能是比較簡(jiǎn)單的事情,,只管在群集里面添加節(jié)點(diǎn)就可以了。
Couchbase是一款基于JSON模型的文檔數(shù)據(jù)庫(kù),,它是CouchDB的一個(gè)fork,,能夠?qū)崿F(xiàn)水平伸縮、并且對(duì)于數(shù)據(jù)的讀寫(xiě)都能提供低延遲訪問(wèn),。Couchbase要比CouchDB功能更加全面,,并且Couchbase產(chǎn)品包含了CouchDB的一個(gè)副本。Couchbase產(chǎn)品向CouchDB添加了緩存,、集群等功能,。此外,Couchbase還包含一些不錯(cuò)的集成功能,對(duì)于數(shù)據(jù)存儲(chǔ)系統(tǒng)來(lái)說(shuō),,Couchbase是一個(gè)不錯(cuò)的選擇,。
7.Neo4j Neo4j是一款開(kāi)源的高性能NoSQL圖數(shù)據(jù)庫(kù),它使用圖(graph)相關(guān)的概念來(lái)描述數(shù)據(jù)模型,,把 數(shù)據(jù)保存為圖中的節(jié)點(diǎn)以及節(jié)點(diǎn)之間的關(guān)系,。支持ACID事務(wù)(原子性、獨(dú)立性,、持久性和一致性),。 在現(xiàn)實(shí)中,很多數(shù)據(jù)都是用圖來(lái)表達(dá)的,,比如社交網(wǎng)絡(luò)中人與人的關(guān)系,、地圖數(shù)據(jù)、或是基因信息等等,。Neo4j中最基本的概念是節(jié)點(diǎn)(node)和關(guān)系(relationship),。節(jié)點(diǎn)表示實(shí)體,在兩個(gè)節(jié)點(diǎn)之間,,可以有不同的關(guān)系,。 8.Riak Riak是基于Erlang和C語(yǔ)言開(kāi)發(fā),Riak是Amazon的高可用性鍵值存儲(chǔ)庫(kù),,用Erlang編寫(xiě)且基于 Dynamo,,是一種高度可擴(kuò)展的分布式數(shù)據(jù)存儲(chǔ)。Riak沒(méi)有主節(jié)點(diǎn)的概念,,在處理故障方面更具靈活性,。在開(kāi)源版本中,不包含SNMP分布式模型,。 9.Redis Redis是一個(gè)開(kāi)源,、支持網(wǎng)絡(luò)、基于內(nèi)存,、鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫(kù),。開(kāi)發(fā)者無(wú)需存儲(chǔ)數(shù)字和字符串即可 dump整個(gè)哈希值、列表,、集合以及其它復(fù)雜的結(jié)果存儲(chǔ),,此外,Redis還提供復(fù)制/同步和持久化等功能,。 Redis是一個(gè)高性能的鍵值對(duì)數(shù)據(jù)庫(kù),。Redis的出現(xiàn),很大程度補(bǔ)償了memcached這類(lèi)key/value存儲(chǔ)的不足,,在部分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用,。 10.Firebird Firebird是一個(gè)跨平臺(tái)的關(guān)系數(shù)據(jù)庫(kù),,用C和C++開(kāi)發(fā),。目前能夠運(yùn)行在Windows,、linux和各種Unix操 作系統(tǒng)上,可以對(duì)存儲(chǔ)過(guò)程和觸發(fā)器提供高性能和強(qiáng)大的語(yǔ)言支持,。 Firebird既能作為多用戶環(huán)境下的數(shù)據(jù)庫(kù)服務(wù)器運(yùn)行,,也提供嵌入式數(shù)據(jù)庫(kù)的實(shí)現(xiàn)。 11.Memcached Memcached是一套分布式的高速緩存系統(tǒng),,它能夠用來(lái)存儲(chǔ)各種格式的數(shù)據(jù),,包括圖像、視頻,、文 件以及數(shù)據(jù)庫(kù)檢索結(jié)果等,。簡(jiǎn)單地說(shuō)就是將數(shù)據(jù)調(diào)用到內(nèi)存中,然后從內(nèi)存中讀取,,從而大大提高讀取速度,。 由于Memcached通常只是當(dāng)作高速緩存系統(tǒng)使用,所以使用Memcached的應(yīng)用程序在寫(xiě)回較慢的系統(tǒng)時(shí)(像是后端的數(shù)據(jù)庫(kù))需要額外的代碼更新Memcached內(nèi)的數(shù)據(jù),。 Oracle Berkeley DB是一個(gè)高效的嵌入式數(shù)據(jù)庫(kù)編程庫(kù),。Berkeley DB可以保存任意類(lèi)型的鍵/值對(duì)(Key/Value Pair),而且可以為一個(gè)鍵保存多個(gè)數(shù)據(jù),。Berkeley
DB支持讓數(shù)千的并發(fā)線程同時(shí)操作數(shù)據(jù)庫(kù),,支持最大256TB的數(shù)據(jù),廣泛用于各種操作系統(tǒng),,其中包括大多數(shù)類(lèi)Unix操作系統(tǒng),、Windows操作系統(tǒng)以及實(shí)時(shí)操作系統(tǒng)。
13.Hypertable Hypertable是一個(gè)高性能的分布式數(shù)據(jù)存儲(chǔ)系統(tǒng),,采用與Google的BigTable相似的模型,。具有高性 能、可伸縮,、可擴(kuò)展,,并且主要集中大規(guī)模數(shù)據(jù)集。 Hypertable采用類(lèi)似表的形式組織數(shù)據(jù),,但目前Hypertable并不支持關(guān)系數(shù)據(jù)庫(kù)中豐富的關(guān)系屬性,。Hypertable將數(shù)據(jù)組織成一個(gè)多維稀疏矩陣。該矩陣中的所有行信息可以基于主鍵(Primary Key)進(jìn)行排序,。
14.Keyspace Keyspace是一款鍵值對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)系統(tǒng),,Keyspace基于Master-Slave模式,所有的寫(xiě)均由Master承擔(dān),,并通過(guò)paxos一致傳播到Slave,,讀可以根據(jù)基本路由到Master或Slave。因此,當(dāng)Master出現(xiàn)宕機(jī)或不可訪問(wèn)時(shí),,會(huì)存在一套Master的選舉機(jī)制,,在keysapce中成為PaxosLease算法。
15.4store 4store是一個(gè)高效,、可擴(kuò)展的RDF數(shù)據(jù)庫(kù),,它采用ANSI C99開(kāi)發(fā),可以同時(shí)運(yùn)行超過(guò)15GT的數(shù)據(jù)查
詢,,使用它所開(kāi)發(fā)的Web應(yīng)用程序可同時(shí)支持上千人訪問(wèn),。
16.MariaDB MariaDB數(shù)據(jù)庫(kù)管理系統(tǒng)是MySQL的一個(gè)分支,完全兼容MySQL,,包括API和命令行,,使之能輕松成 為MySQL的代替品。在存儲(chǔ)引擎方面,,使用XtraDB來(lái)代替MySQL的InnoDB,。另外又添加了一些功能,以支持本地的非阻塞操作和進(jìn)度報(bào)告,。這意味著,,所有使用MySQL的連接器、庫(kù)和應(yīng)用程序也將會(huì)在MariaDB下工作,。 MariaDB由MySQL的創(chuàng)始人麥克爾·維德紐斯主導(dǎo)開(kāi)發(fā),,正如上文所提到的,由于擔(dān)心甲骨文存在將MySQL閉源的風(fēng)險(xiǎn),,目前已有許多公司將項(xiàng)目移到MariaDB上,,比如維基百科、谷歌等,。
17.Drizzle Drizzle是一款免費(fèi)/開(kāi)源的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),,基于C++開(kāi)發(fā),它是MySQL 6.0的一個(gè)分支,。和 MySQL一樣,,Drizzle也是采用經(jīng)典的C/S(客戶端/服務(wù)端)架構(gòu)模式,其主要專(zhuān)注于為云端應(yīng)用提供一個(gè)可靠穩(wěn)定的數(shù)據(jù)庫(kù),。 18.HyperSQL HyperSQL是一款采用Java編寫(xiě)的SQL關(guān)系型數(shù)據(jù)庫(kù)引擎,,其核心是多線程,支持雙向鎖和MVCC,,
并且為基于內(nèi)存和磁盤(pán)的表提供小而快速的數(shù)據(jù)庫(kù)引擎,,支持嵌入式/服務(wù)器模式。同時(shí),,它還擁有多種工具,,比如命令行SQL工具,、GUI查詢應(yīng)用程序等。
19.MonetDB MonetDB是一款開(kāi)源的,、面向列的數(shù)據(jù)庫(kù)管理系統(tǒng),,其專(zhuān)門(mén)為數(shù)據(jù)挖掘、OLAP,、GIS,、XML查詢,、 文本及多媒體檢索提供高性能應(yīng)用,。 MonetDB數(shù)據(jù)庫(kù)管理系統(tǒng)包含MonetDB/SQL、MonetDB/GIS,、MonetDB服務(wù)器,。其還具有自動(dòng)和自調(diào)優(yōu)索引、運(yùn)行時(shí)查詢優(yōu)化以及模塊化軟件架構(gòu),。 20.Persevere Persevere是一款對(duì)象存儲(chǔ)引擎和應(yīng)用服務(wù)器(基于Java/Rhino),,它提供一個(gè)服務(wù)器JavaScript環(huán)境來(lái)實(shí)現(xiàn)動(dòng)態(tài)JSON數(shù)據(jù)的持久化數(shù)據(jù)存儲(chǔ)。支持通過(guò)標(biāo)準(zhǔn)JSON HTTP/REST Web接口來(lái)創(chuàng)建,、讀取,、更新和刪除數(shù)據(jù)。
Persevere引以為自豪的是它的“schema-free”,,這一特點(diǎn)使得它與其它數(shù)據(jù)庫(kù)有很大的區(qū)別,。Persevere可以讓你隨心所欲的增加schema。Persevere并非把分級(jí)結(jié)構(gòu)的頂層稱(chēng)為一個(gè)domain(SimpleDB這么稱(chēng)呼),,也不稱(chēng)之為文檔(CouchDB這么稱(chēng)呼),,Persevere稱(chēng)之為對(duì)象,它甚至可以讓你創(chuàng)建對(duì)象的子類(lèi),。如果你想違背規(guī)則,,你也能堅(jiān)持某些字段使用某一類(lèi)型,但是這是不推薦的,。Schema規(guī)則是可選的,。 21.eXist-db eXist-db是使用XML技術(shù)構(gòu)建的開(kāi)源XML數(shù)據(jù)庫(kù),它根據(jù)XML數(shù)據(jù)模型,、功能,、基于索引的XQuery進(jìn)程來(lái)存儲(chǔ)XML數(shù)據(jù)。程序通過(guò)eXist綁定的HTTP服務(wù)器與eXist交互,。eXist數(shù)據(jù)庫(kù)還提供了SOAP,、XML-RPC 和RESTful接口,開(kāi)發(fā)者可以通過(guò)這些接口向核心服務(wù)器提交XPath,、XQuery和XUpdate請(qǐng)求,。命令行和GUI客戶機(jī)也是可用的,。 英文來(lái)自: The Professionals Point
|
|
來(lái)自: 天下小糧倉(cāng) > 《IT》