開源世界中的那幾個免費(fèi)數(shù)據(jù)庫
很多只有十幾到幾十個員工的企業(yè)老板詢問,如果他們不想花費(fèi)上千甚至萬元買一款數(shù)據(jù)庫軟件,詢問有沒有一些免費(fèi)的數(shù)據(jù)庫軟件可以使用。事實(shí)上,現(xiàn)在國內(nèi)這種類型的企業(yè)小老板很多,他們的公司需要一個小型的數(shù)據(jù)庫軟件來統(tǒng)計(jì)公司的一些產(chǎn)品資料以及出入庫的信息,數(shù)據(jù)量確實(shí)不大。以前也曾見過,一些小企業(yè)用Office自帶的Access小型數(shù)據(jù)庫,但是仍然覺得不夠便捷。這里,編者推薦幾款適合小企業(yè)使用的開源數(shù)據(jù)庫軟件。
開源數(shù)據(jù)庫MySQL
MySQL是一個開放源碼的小型關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。目前MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。

MySQL為多種編程語言提供了API,包括C、C++、C#、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。而其自身是采用C和C++編寫的,使用了多種編譯器進(jìn)行測試,所以,MySQL能夠保證源代碼具有很強(qiáng)的可移植性。這樣的一款數(shù)據(jù)庫,自然能夠支持幾乎所有的操作系統(tǒng),從Unix、Linux到Windows,具體包括AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、NetBSD、OpenBSD、OS/2 Wrap、Solaris、SunOS、Windows等多種操作系統(tǒng)。最重要的是,它是一個可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫。
與此同時,MySQL也產(chǎn)生了很多分支版本的數(shù)據(jù)庫也非常值得推薦。
首先是MariaDB,它是一個采用Maria存儲引擎的MySQL分支版本,是由原來MySQL的作者 Michael Widenius創(chuàng)辦的公司所開發(fā)的免費(fèi)開源的數(shù)據(jù)庫服務(wù)器。與MySQL相比較,MariaDB更強(qiáng)的地方在于它擁有更多的引擎,包括Maria存儲引擎、PBXT存儲引擎、XtraDB存儲引擎、FederatedX存儲引擎,它能夠更快的復(fù)制查詢處理、運(yùn)行的速度更快、更好的功能測試以及支持對Unicode的排序等。
其次是rcona,它為MySQL數(shù)據(jù)庫服務(wù)器進(jìn)行了改進(jìn),在功能和性能上較MySQL有著很顯著的提升。該版本提升了在高負(fù)載情況下的InnoDB的性能,同時,它還為DBA提供一些非常有用的性能診斷工具,并且提供很多參數(shù)和命令來控制服務(wù)器行為。
第三是Percona Server,它使用了諸如google-mysql-tools、Proven Scaling和 Open Query對MySQL進(jìn)行改造。并且,它只包含MySQL的服務(wù)器版,并沒有提供相應(yīng)對 MySQL的Connector和GUI工具進(jìn)行改進(jìn)。
非關(guān)系型數(shù)據(jù)庫NoSQL
從NoSQL的字面上理解,NoSQL就是Not Only SQL,被業(yè)界認(rèn)為是一項(xiàng)全新的數(shù)據(jù)庫革命性運(yùn)動,早期就有人提出,發(fā)展至2009年趨勢越發(fā)高漲。NoSQL的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)據(jù)存儲,相對于目前鋪天蓋地的關(guān)系型數(shù)據(jù)庫運(yùn)用,這一概念無疑是一種全新的思維的注入。
當(dāng)然,NoSQL也是隨著互聯(lián)網(wǎng)Web2.0網(wǎng)站的興起才能取得長足的進(jìn)步。關(guān)鍵的需求在于,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在應(yīng)付Web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動態(tài)網(wǎng)站顯得力不從心,暴露了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。
首先推薦的是Oracle NoSQL Database,這是一個社區(qū)版。Oracle的這個NoSQL Database, 是在10月4號的甲骨文全球大全上發(fā)布的Big Data Appliance的其中一個組件,Big Data Appliance是一個集成了Hadoop、NoSQL Database、Oracle數(shù)據(jù)庫Hadoop適配器、Oracle數(shù)據(jù)庫Hadoop裝載器及R語言的系統(tǒng)。
其次推薦的是Membase。Membase是NoSQL家族的一個新的重量級的成員。Membase是開源項(xiàng)目,源代碼采用了Apache2.0的使用許可。該項(xiàng)目托管在GitHub.Source tarballs上,目前可以下載beta版本的Linux二進(jìn)制包。該產(chǎn)品主要是由North Scale的memcached核心團(tuán)隊(duì)成員開發(fā)完成,其中還包括Zynga和NHN這兩個主要貢獻(xiàn)者的工程師,這兩個組織都是很大的在線游戲和社區(qū)網(wǎng)絡(luò)空間的供應(yīng)商。
并且,Membase容易安裝、操作,可以從單節(jié)點(diǎn)方便的擴(kuò)展到集群,而且為memcached(有線協(xié)議的兼容性)實(shí)現(xiàn)了即插即用功能,在應(yīng)用方面為開 發(fā)者和經(jīng)營者提供了一個比較低的門檻。做為緩存解決方案,Memcached已經(jīng)在不同類型的領(lǐng)域(特別是大容量的Web應(yīng)用)有了廣泛的使用,其中 Memcached的部分基礎(chǔ)代碼被直接應(yīng)用到了Membase服務(wù)器的前端。通過兼容多種編程語言和框架,Membase具備了很好的復(fù)用性。在安裝和配置方面,Membase提供了有效的圖形化界面和編程接口,包括可配置 的告警信息。
Membase的目標(biāo)是提供對外的線性擴(kuò)展能力,包括為了增加集群容量,可以針對統(tǒng)一的節(jié)點(diǎn)進(jìn)行復(fù)制。 另外,對存儲的數(shù)據(jù)進(jìn)行再分配仍然是必要的。
第三推薦的是Hibari。Hibari在日語中意思為“云雀”,它是一個專為高可靠性和大數(shù)據(jù)存儲的數(shù)據(jù)庫引擎,可用于云計(jì)算環(huán)境中,例如 webmail、SNS和其他要求T/P級數(shù)據(jù)存儲的環(huán)境中。同時,Hibari也支持Java,C/C++,Python,Ruby和Erlang語言的客戶端。
第四推薦的是memcachedb。這是一個由新浪網(wǎng)的開發(fā)人員開放出來的開源項(xiàng)目,給memcached分布式緩存服務(wù)器添加了Berkeley DB的持久化存儲機(jī)制和異步主輔復(fù)制機(jī)制,讓memcached具備了事務(wù)恢復(fù)能力、持久化能力和分布式復(fù)制能力,非常適合于需要超高性能讀寫速度,但是 不需要嚴(yán)格事務(wù)約束,能夠被持久化保存的應(yīng)用場景,例如memcachedb被應(yīng)用在新浪博客上面。
第五推薦的是Leveldb。這是一個Google實(shí)現(xiàn)的非常高效的kv數(shù)據(jù)庫,目前的版本1.2能夠支持billion級別的數(shù)據(jù)量了。 在這個數(shù)量級別下還有著非常高的性能,主要?dú)w功于它的良好的設(shè)計(jì),特別是LSM算法。LevelDB是單進(jìn)程的服務(wù),性能非常之高,在一臺4個Q6600的CPU機(jī)器上,每秒鐘寫數(shù)據(jù)超過40w,而隨機(jī)讀的性能每秒鐘超過10w。
XML數(shù)據(jù)庫的優(yōu)勢
XML數(shù)據(jù)庫是一種支持對XML格式文檔進(jìn)行存儲和查詢等操作的數(shù)據(jù)管理系統(tǒng)。在系統(tǒng)中,開發(fā)人員可以對數(shù)據(jù)庫中的XML文檔進(jìn)行查詢、導(dǎo)出和指定格式的序列化。目前XML數(shù)據(jù)庫有三種類型:XMLEnabledDatabase(XEDB),即能處理XML的數(shù)據(jù)庫;NativeXMLDatabase(NXD),即純XML數(shù)據(jù)庫;HybridXMLDatabase(HXD),即混合XML數(shù)據(jù)庫。
關(guān)系數(shù)據(jù)庫中的***代XML支持是切分(或分解)文檔,以適應(yīng)關(guān)系表格或?qū)⑽臋n原封不動地存儲為字符或二進(jìn)制大對象(CLOB 或 BLOB)。這兩個方法中的任一種都嘗試將XML模型強(qiáng)制轉(zhuǎn)換成關(guān)系模型。然而,這兩種方法在功能和性能上都有很大的局限性?;旌闲湍P蛯ML存儲在類似于DOM的模型中。XML數(shù)據(jù)被格式化為緩沖數(shù)據(jù)頁,以便快速導(dǎo)航和執(zhí)行查詢以及簡化索引編制。
在這里,首要要推薦的XML數(shù)據(jù)庫是Sedna。它號稱是一款原生態(tài)的XML數(shù)據(jù)庫,提供了全功能的核心數(shù)據(jù)庫服務(wù),包括持久化存儲、ACID事務(wù)、索引、安全、熱備、UTF8等。實(shí)現(xiàn)了 W3C XQuery 規(guī)范,支持全文搜索以及節(jié)點(diǎn)級別的更新操作。
第二款XML數(shù)據(jù)庫是BaseX。這款數(shù)據(jù)庫用來存儲緊縮的XML數(shù)據(jù),提供了高效的 XPath和XQuery的實(shí)現(xiàn),同時,它還提供一個前端操作界面。

第三款推薦的是XMLDB。這款數(shù)據(jù)庫使用了關(guān)系型數(shù)據(jù)庫來存儲任意的XML文檔,因?yàn)樗捎玫拇鎯C(jī)制,所以文檔的搜索速度特別快,同時執(zhí)行XSL轉(zhuǎn)換也相當(dāng)快。XMLDB同時還提供了一個PHP的模塊,可以應(yīng)用在Web應(yīng)用中。
第四塊推薦的是X-Hive/DB。它是一個為需要高級XML數(shù)據(jù)處理和存儲功能的軟件開發(fā)者設(shè)計(jì)的強(qiáng)大的專屬XML數(shù)據(jù)庫。X-Hive/DB Java API包含存儲、查詢、檢索、轉(zhuǎn)換和發(fā)表XML數(shù)據(jù)的方法。
與傳統(tǒng)關(guān)系型數(shù)據(jù)庫相比,XML數(shù)據(jù)庫具有以下優(yōu)勢:***,XML數(shù)據(jù)庫能夠?qū)Π虢Y(jié)構(gòu)化數(shù)據(jù)進(jìn)行有效的存取和管理。如網(wǎng)頁內(nèi)容就是一種半結(jié)構(gòu)化數(shù)據(jù),而傳統(tǒng)的關(guān)系數(shù)據(jù)庫對于類似網(wǎng)頁內(nèi)容這類半結(jié)構(gòu)化數(shù)據(jù)無法進(jìn)行有效的管理。第二,提供對標(biāo)簽和路徑的操作。傳統(tǒng)數(shù)據(jù)庫語言允許對數(shù)據(jù)元素的值進(jìn)行操作,不能對元素名稱操作,半結(jié)構(gòu)化數(shù)據(jù)庫提供了對標(biāo)簽名稱的操作,還包括了對路徑的操作。第三,當(dāng)數(shù)據(jù)本身具有層次特征時,由于XML數(shù)據(jù)格式能夠清晰表達(dá)數(shù)據(jù)的層次特征,因此XML數(shù)據(jù)庫便于對層次化的數(shù)據(jù)進(jìn)行操作。XML數(shù)據(jù)庫適合管理復(fù)雜數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)集,如果己經(jīng)以XML格式存儲信息,則XML數(shù)據(jù)庫利于文檔存儲和檢索;可以用方便實(shí)用的方式檢索文檔,并能夠提供高質(zhì)量的全文搜索引擎。另外XML數(shù)據(jù)庫能夠存儲和查詢異種的文檔結(jié)構(gòu),提供對異種信息存取的支持。
【編輯推薦】