眾所周知,MySQL是目前使用最廣泛最好的免費(fèi)開源數(shù)據(jù)庫(kù),此外,還有一些你不知道或者沒(méi)用過(guò)但又非常出色的開源數(shù)據(jù)庫(kù),例如PostgreSQL、MongoDB、HBase、Cassandra、Couchbase、Neo4j、Riak、Redis、Firebird等。在本文,筆者總共總結(jié)了21個(gè)最優(yōu)秀的開源數(shù)據(jù)庫(kù),不妨讓我們一起來(lái)看下吧。
幾乎所有軟件項(xiàng)目的開發(fā)都需要數(shù)據(jù)庫(kù)的支持,目前,隨著開源技術(shù)的迅速發(fā)展,越來(lái)越多的數(shù)據(jù)供應(yīng)商選擇開源數(shù)據(jù)庫(kù),為開源事業(yè)添磚加瓦。作為一名軟件開發(fā)人員或DBA,其中一份必不可少的工作就是與數(shù)據(jù)庫(kù)打交道,比如MS SQL服務(wù)器、MySQL、Oracle、PostgreSQL、MongoDB等等。筆者總結(jié)了21個(gè)最優(yōu)秀的開源數(shù)據(jù)庫(kù)與大家分享。
1.PostgreSQL
PostgreSQL可以簡(jiǎn)稱為“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ò)展功能。
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ī)制等。
2.MongoDB
MongoDB是一款開源、面向文檔并且也是當(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)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。還具有高性能、易部署、易使用,存儲(chǔ)數(shù)據(jù)非常方便等特點(diǎn)。
3.eXist-db
eXist-db是使用XML技術(shù)構(gòu)建的開源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接口,開發(fā)者可以通過(guò)這些接口向核心服務(wù)器提交XPath、XQuery和XUpdate請(qǐng)求。命令行和GUI客戶機(jī)也是可用的。
4.Hadoop (HBase)
Hadoop (HBase)是一個(gè)開源的、基于列存儲(chǔ)模型的分布式數(shù)據(jù)庫(kù),它是Apache Hadoop項(xiàng)目的一部分,開發(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的開源實(shí)現(xiàn),類似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)。
5.Apache Cassandra
Apache Cassandra是一套開源分布式NoSQL數(shù)據(jù)庫(kù)系統(tǒng),類似于Google的BigTable。它最初由 Facebook開發(fā),用于儲(chǔ)存收件箱等簡(jiǎn)單格式數(shù)據(jù),集Google BigTable的數(shù)據(jù)模型與Amazon Dynamo的完全分布式的架構(gòu)于一身。在2008年,F(xiàn)acebook將其開源。
Cassandra的主要特點(diǎn)就是它不是一個(gè)數(shù)據(jù)庫(kù),而是由一堆數(shù)據(jù)庫(kù)節(jié)點(diǎn)共同構(gòu)成的一個(gè)分布式網(wǎng)絡(luò)服務(wù),對(duì)Cassandra 的一個(gè)寫操作,會(huì)被復(fù)制到其它節(jié)點(diǎn)上去,對(duì)Cassandra的讀操作,也會(huì)被路由到某個(gè)節(jié)點(diǎn)上面去讀取。對(duì)于一個(gè)Cassandra群集來(lái)說(shuō),擴(kuò)展性能是比較簡(jiǎn)單的事情,只管在群集里面添加節(jié)點(diǎn)就可以了。
6.Couchbase
Couchbase是一款基于JSON模型的文檔數(shù)據(jù)庫(kù),它是CouchDB的一個(gè)fork,能夠?qū)崿F(xiàn)水平伸縮、并且對(duì)于數(shù)據(jù)的讀寫都能提供低延遲訪問(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是一款開源的高性能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ǔ)言開發(fā),Riak是Amazon的高可用性鍵值存儲(chǔ)庫(kù),用Erlang編寫且基于 Dynamo,是一種高度可擴(kuò)展的分布式數(shù)據(jù)存儲(chǔ)。Riak沒(méi)有主節(jié)點(diǎn)的概念,在處理故障方面更具靈活性。在開源版本中,不包含SNMP分布式模型。
9.Redis
Redis是一個(gè)開源、支持網(wǎng)絡(luò)、基于內(nèi)存、鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫(kù)。開發(fā)者無(wú)需存儲(chǔ)數(shù)字和字符串即可 dump整個(gè)哈希值、列表、集合以及其它復(fù)雜的結(jié)果存儲(chǔ),此外,Redis還提供復(fù)制/同步和持久化等功能。
Redis是一個(gè)高性能的鍵值對(duì)數(shù)據(jù)庫(kù)。Redis的出現(xiàn),很大程度補(bǔ)償了memcached這類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++開發(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)用程序在寫回較慢的系統(tǒng)時(shí)(像是后端的數(shù)據(jù)庫(kù))需要額外的代碼更新Memcached內(nèi)的數(shù)據(jù)。
12.Oracle Berkeley DB
Oracle Berkeley DB是一個(gè)高效的嵌入式數(shù)據(jù)庫(kù)編程庫(kù)。Berkeley DB可以保存任意類型的鍵/值對(duì)(Key/Value Pair),而且可以為一個(gè)鍵保存多個(gè)數(shù)據(jù)。Berkeley DB支持讓數(shù)千的并發(fā)線程同時(shí)操作數(shù)據(jù)庫(kù),支持最大256TB的數(shù)據(jù),廣泛用于各種操作系統(tǒng),其中包括大多數(shù)類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采用類似表的形式組織數(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模式,所有的寫均由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開發(fā),可以同時(shí)運(yùn)行超過(guò)15GT的數(shù)據(jù)查 詢,使用它所開發(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)開發(fā),正如上文所提到的,由于擔(dān)心甲骨文存在將MySQL閉源的風(fēng)險(xiǎn),目前已有許多公司將項(xiàng)目移到MariaDB上,比如維基百科、谷歌等。
17.Drizzle
Drizzle是一款免費(fèi)/開源的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),基于C++開發(fā),它是MySQL 6.0的一個(gè)分支。和 MySQL一樣,Drizzle也是采用經(jīng)典的C/S(客戶端/服務(wù)端)架構(gòu)模式,其主要專注于為云端應(yīng)用提供一個(gè)可靠穩(wěn)定的數(shù)據(jù)庫(kù)。
18.HyperSQL
HyperSQL是一款采用Java編寫的SQL關(guān)系型數(shù)據(jù)庫(kù)引擎,其核心是多線程,支持雙向鎖和MVCC, 并且為基于內(nèi)存和磁盤的表提供小而快速的數(shù)據(jù)庫(kù)引擎,支持嵌入式/服務(wù)器模式。同時(shí),它還擁有多種工具,比如命令行SQL工具、GUI查詢應(yīng)用程序等。
19.MonetDB
MonetDB是一款開源的、面向列的數(shù)據(jù)庫(kù)管理系統(tǒng),其專門為數(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)的頂層稱為一個(gè)domain(SimpleDB這么稱呼),也不稱之為文檔(CouchDB這么稱呼),Persevere稱之為對(duì)象,它甚至可以讓你創(chuàng)建對(duì)象的子類。如果你想違背規(guī)則,你也能堅(jiān)持某些字段使用某一類型,但是這是不推薦的。Schema規(guī)則是可選的。
21.MySQL
MySQL是一個(gè)開源的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),為甲骨文公司產(chǎn)品。支持多種存儲(chǔ)引擎、集群、全文 索引、支持多線程、充分利用CPU資源、支持多用戶等其它許多非常專業(yè)的功能。
MySQL由于性能高、成本低、可靠性好已經(jīng)成為最流行的開源數(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ū)采用分支的方式避開這種風(fēng)險(xiǎn),開發(fā)并運(yùn)營(yíng)著完全兼容MySQL的MariaDB數(shù)據(jù)庫(kù)。
河南億恩科技股份有限公司(mszdt.com)始創(chuàng)于2000年,專注服務(wù)器托管租用,是國(guó)家工信部認(rèn)定的綜合電信服務(wù)運(yùn)營(yíng)商。億恩為近五十萬(wàn)的用戶提供服務(wù)器托管、服務(wù)器租用、機(jī)柜租用、云服務(wù)器、網(wǎng)站建設(shè)、網(wǎng)站托管等網(wǎng)絡(luò)基礎(chǔ)服務(wù),另有網(wǎng)總管、名片俠網(wǎng)絡(luò)推廣服務(wù),使得客戶不斷的獲得更大的收益。
服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:
0371-60135900
虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:
0371-55621053
網(wǎng)絡(luò)版權(quán)侵權(quán)舉報(bào)電話:
0371-60135995
服務(wù)熱線:
0371-60135900