幾乎每一個Web開發人員都有本身喜歡的數據庫,或本身最熟悉的數據庫,但最多見的無外乎如下幾種:
MySQL
PostgreSQL
MSSQL
SQLite
MS Access
或是更簡單的XML,文本文件等。這些數據庫有優秀的文檔,背後有強大的社區支持,大部分流行的CMS都使用了其中之一或多個,它們都易於使用,大多數託管服務供應商都提供了相應的產品,所以它們的使用量不少,名氣也很大。但除了這些主流的數據庫外,還有不少其它非主流數據庫存在,其中有一些也開始受到人們的高度重視,下面咱們就一塊兒來看看吧,注意本文只介紹開源數據庫,說不定在下一個項目中,你就有嘗試它們的衝動。
一、MongoDB
35個非主流開源數據庫介紹
MongoDB是一款開源,高性能,可擴展,無模式,面向文檔(與JSON相似的數據模式)的數據庫,它爲時下最流行的編程語言提供了驅動,如 PHP,Python,Perl,Ruby,JavaScript,C++等,支持全文索引,自動分片,跨LAN或WAN擴展,採用Key/Value方式存儲數據。MongoDB服務端可運行在Linux、Windows或OS X平臺,支持32位和64位應用。世界上最大的單詞收錄網站Wordnik就從MySQL轉向了MongoDB。
二、Hypertable
35個非主流開源數據庫介紹
Hypertable是一款高性能分佈式數據存儲系統,旨在爲應用程序提供最好的性能,可擴展性和可靠性,它創建在Google的BigTable之上,主要面向大規模數據集應用,其目標是要成爲世界上最好的大規模併發高性能數據庫平臺。百度目前也使用了Hypertable,也是它的贊助商。
三、Apache CouchDB
35個非主流開源數據庫介紹
Apache CouchDB是一款面向文檔的數據庫,可使用JavaScript經過MapReduce方法進行查詢和索引,它提供了一個RESTful JSON API,所以能夠在任何環境中經過HTTP訪問,CouchDB內置了Web管理控制檯,支持經過瀏覽器管理數據庫。CouchDB使用Erlang編寫,Erlang是一種健壯的函數式編程語言,很是適合於構建併發的分佈式系統,Erlang的設計很是靈活,其可伸縮性與可擴展性都很是棒。
四、Neo4j
Neo4j
Neo4j是一個嵌入式,基於磁盤的,支持完整事務的Java持久化引擎,它在圖像中而不是表中存儲數據。Neo4j提供了大規模可擴展性,在一臺機器上能夠處理數十億節點/關係/屬性的圖像,能夠擴展到多臺機器並行運行。相對於關係數據庫來講,圖形數據庫善於處理大量複雜、互鏈接、低結構化的數據,這些數據變化迅速,須要頻繁的查詢——在關係數據庫中,這些查詢會致使大量的錶鏈接,所以會產生性能上的問題。Neo4j重點解決了擁有大量鏈接的傳統 RDBMS在查詢時出現的性能衰退問題。經過圍繞圖形進行數據建模,Neo4j會以相同的速度遍歷節點與邊,其遍歷速度與構成圖形的數據量沒有任何關係。此外,Neo4j還提供了很是快的圖形算法、推薦系統和OLAP風格的分析,而這一切在目前的RDBMS系統中都是沒法實現的。
五、Riak
Neo4j
Riak是一款很是適合於Web應用程序的數據庫,它提供了去中心化的Key/Value存儲,靈活的map/reduce引擎和友好的HTTP/JSON查詢接口。它是一個真正的容錯系統,不會出現單點故障,在Riak世界中,沒有哪臺機器是特殊的或屬核心服務器,它們都是對等的。
六、Oracle Berkeley DB
Neo4j
Oracle Berkeley DB是一系列開源的嵌入式數據庫,使開發人員可以將一個快速、可伸縮、具備工業級別的可靠性和可用性的事務處理數據庫引擎結合進他們的應用程序中。 Berkeley DB最早由伯克利加州大學爲了移除受到AT&T限制的程式碼,從BSD 4.3到4.4時所改寫的軟件。Berkeley DB運行在大多數的操做系統中,例如大多數的UNIX系統, 和windows系統,以及實時操做系統。
七、Apache Cassandra
Neo4j
Cassandra是一款高可擴展性第二代分佈式數據庫,屬於混合型的非關係的數據庫,相似於Google的BigTable,支持的數據結構很是鬆散,相似於JSON的BJSON格式,所以能夠存儲比較複雜的數據類型。Cassandra最初由Facebook開發,後轉變成了開源項目。 Cassandra的主要特色就是它不是一個數據庫,而是由一堆數據庫節點共同構成的一個分佈式網絡服務,對Cassandra 的一個寫操做,會被複制到其餘節點上去,對Cassandra的讀操做,也會被路由到某個節點上面去讀取。對於一個Cassandra羣集來講,擴展性能是比較簡單的事情,只管在羣集裏面添加節點就能夠了。Facebook,Digg,Twitter和Cisco等大型網站都使用了Cassandra。
八、Memcached
Memcached
Memcached是開源的分佈式cache系統,如今不少的大型web應用程序包括 facebook,youtube,wikipedia,yahoo等等都在使用memcached來支持他們天天數億級的頁面訪問。經過把cache層與他們的web架構集成,他們的應用程序在提升了性能的同時,還大大下降了數據庫的負載。
Memcached處理的原子是每個key/value對,key會經過一個hash算法轉化成hash-key,便於查找、對比以及作到儘量的散列。同時,memcached用的是一個二級散列,經過一張大hash表來維護。
九、Firebird
Memcached
Firebird是一個關係數據庫,能夠運行在Linux,Windows和各類Unix平臺上,Firebird相對MySQL和PostgreSQL來講比較小,這也使其能夠稱得上是理想的嵌入式數據庫,可用於與其它應用程序服務器和應用程序捆綁。Firebird具備大部分紅熟數據庫所具備的功能,好比支持存儲過程、SQL兼容等。
十、Redis
Memcached
Redis是一款快速的Key/Value數據庫引擎,它在保持鍵值數據庫簡單快捷特色的同時,又吸取了部分關係數據庫的優勢,從而使它的位置處於關係數據庫和鍵值數據庫之間。Redis不只能保存Strings類型的數據,還能保存Lists類型(有序)和Sets類型(無序)的數據,並且還能完成排序(SORT)等高級功能,在實現INCR,SETNX等功能的時候,保證了其操做的原子性,除此之外,還支持主從複製等功能。Redis使用C語言編寫,能夠想memcached那樣使用,放在傳統數據庫的前端,它支持許多編程語言,受到許多流行的項目使用,如GitHub和Engine Yard,有一個用PHP編寫的客戶端叫作Rediska,專門來管理Redis數據庫。
十一、HBase
HBase是一個分佈式,面向列存儲的數據庫引擎,也能夠叫作Hadoop數據庫,由於它是Hadoop的子項目,HBase的目標是託管數十億行,數百萬列的大表,它提供了一個REST風格的Web服務器網關,支持XML,Protobuf和二進制數據編碼選項。
Memcached
十二、Keyspace
Keyspace
Keyspace 是一家叫作 Scalien 的創業公司開發的高可靠 key/value 存儲系統,Keyspace 強調的技術點是高可靠性,有如下一些特色:
Key/Value存儲:一個 key/value 數據存儲系統,只支持一些基本操做,如:SET(key, value) 和 GET(key) 等;
分佈式:多臺機器(nodes)同時存儲數據和狀態,彼此交換消息來保持數據一致,可視爲一個完整的存儲系統。爲了更可靠,Keyspace 推薦使用奇數個 nodes,好比:3,5,7等;
數據一致:全部機器上的數據都是同步更新的、不用擔憂獲得不一致的結果,Keyspace 使用著名的 Paxos 分佈式算法;
冗餘:全部機器(nodes)保存相同的數據,整個系統的存儲能力取決於單臺機器(node)的能力;
容錯:若是有少數 nodes 出錯,好比重啓、當機、斷網、網絡丟包等各類 fault/fail 都不影響整個系統的運行;
高可靠性:容錯、冗餘等保證了 Keyspace 的可靠性。
1三、4store
Keyspace
4store是一個容納RDF數據的數據庫存儲和查詢引擎,它使用ANSI C99編寫,可在類Unix系統上運行,提供一個高性能,可擴展和穩定的平臺。4store專門爲無共享集羣進行優化,最大可支持32節點集羣,導入性能最大能夠達到120kT/s,它的查詢性能也至關出衆。
1四、MariaDB
Keyspace
MariaDB是一個向後兼容的,旨在替換MySQL數據庫的MySQL分支,它包括全部主要的開源存儲引擎,另外也開發了屬於本身的Maria存儲引擎。MariaDB是由原來 MySQL 的做者 Michael Widenius 創辦的公司所開發的免費開源數據庫服務器,與 MySQL 相比較,MariaDB 更強的地方在於:
Maria 存儲引擎
PBXT 存儲引擎
XtraDB 存儲引擎
FederatedX 存儲引擎
更快的複製查詢處理
線程池
更少的警告和bug
運行速度更快
更多的 Extensions (More index parts, new startup options etc)
更好的功能測試
數據表消除
慢查詢日誌的擴展統計
支持對 Unicode 的排序
1五、Drizzle
Drizzle
Drizzle是從MySQL衍生出來的一個數據庫,但它的目的不是要取代MySQL,它的宗旨是構建一個「更精練、更輕量、更快速」的MySQL版本,它的擴展性和易用性與MySQL至關,但爲了提升性能和擴展性,它從原來的核心繫統裏移除了部分功能。Drizzle是一種爲雲和網絡程序進行了特別優化的數據庫,它是爲在現代多CPU/多核架構上實現大規模併發而設計的。
1六、HyperSQL
Drizzle
HyperSQL是用Java編寫的一款SQL關係數據庫引擎,它的核心徹底是多線程的,支持雙向鎖和MVCC(多版本併發控制),幾乎完整支持 ANSI-92 SQL,支持常見數據類型,最新版本增長了對BLOB和CLOB數據的支持,最高支持達64T的數據量。同時,HyperSQL也是一個不錯的嵌入式數據庫。
1七、MonetDB
Drizzle
MonetDB是一個高性能數據庫引擎,主要用在數據挖掘,OLAP,GIS,XML Query,文本和多媒體檢索等領域。MonetDB對DBMS的各個層都進行創新設計,如基於垂直分片的存儲層,爲現代CPU優化的查詢執行架構,自動和自助調整索引,運行時查詢優化,以及模塊化的軟件架構。MonetDB/SQL是MonetDB提供的關係數據庫解決方案,MonetDB/XQuery是XML數據庫解決方案,MonetDB Server是MonetDB的多模型數據庫服務器。
1八、Persevere
Drizzle
Persevere 是針對Javascript設計的基於REST的JSON數據庫,分佈式計算,持久對象映射的框架,提供獨立的web服務器,主要用於設計富客戶端應用,能夠用在任何框架和客戶端上。Persevere Server是一個基於Java/Rhino的對象存儲引擎,在交互式的客戶端JavaScript環境中提供持久性的JSON數據格式。
1九、eXist-db
Drizzle
eXist-db是使用XML技術構建的數據庫存儲引擎,它根據XML數據模型存儲XML數據,提供高效的,基於索引的XQuery查詢。eXist-db支持許多Web技術標準,使得它很是適合Web應用程序開發:
XQuery 1.0 / XPath 2.0 / XSLT 1.0 (使用pache Xalan)或XSLT 2.0
HTTP接口:REST,WebDAV,SOAP,XMLRPC,Atom發佈協議
XML數據庫規範:XMLDB,Xupdate,XQuery更新擴展
最新的1.4版本還增長了基於Apache Lucene的全文索引,輕量級URL重寫和MVC框架,以及對XProc的支持。eXist-db與XQuery標準高度兼容(目前XQTS的得分是99.4%)。
20、Gladius
Gladius
Gladius是用純PHP編寫的平面文件數據庫引擎,它的SQL語法與SQL92的一個子集兼容,它捆綁了一個輕量級的adoDB驅動。
2一、CloudStore
Gladius
CloudStore(之前叫作Kosmos文件系統)是一個開源的高性能分佈式文件系統,它是用C++編寫的,CloudStore能夠和 Hadoop以及Hypertable集成,這樣就容許應用程序構建在那些系統上,而底層數據存儲無縫地使用CloudStore。CloudStore 支持Linux和Solaris,主要用來存儲Web日誌和Web爬行數據。
2二、OpenQM
Gladius
OpenQM是惟一一款同時有商業支持和免費的開源多值數據庫,基於GPL協議發佈,多值數據庫對NoSQL運動起到了推進做用,它自身也因速度快,體積小,比關係數據庫便宜而很快獲得了承認。名稱OpenQM中的Open表示開源版本,QM表示商業閉源QM數據庫。商業版本支持 Windows,Linux(RedHat,Fedora,Debian,Ubuntu),FreeBSD,Mac OS X和Windows Mobile,其列表價格還不到其它多值產品的1/5,商業版本還包括一個GUI管理界面和終端模擬器,開源版本僅包括核心多值數據庫引擎,主要是爲開發人員準備的。
2三、ScarletDME
Gladius
ScarletDME也是一個開源多值數據庫,它是OpenQM的社區分支版,最初由Ladybridge開發,這個項目創立於2008年11月28 日,它既在獨立開發本身的功能,也在爲OpenQM貢獻代碼。這個項目最初的名字叫作Ladybridges GPL OpenQM,如今正式改成ScarletDME,其中的DME是Data Management Environment(數據管理環境)的首字母縮寫。
2四、SmallSQL
Gladius
SmallSQL是一個100%純Java編寫的輕量級數據庫,通常用於嵌入式領域,兼容SQL 99標準,支持JDBC 3.0 API,定位於高端Java桌面SQL數據庫。支持全部能運行Java的平臺,可直接嵌入到應用程序中。不過它也有一些不足,如沒有網絡接口,必須安裝 Java運行時,同一時間不能在多個應用程序之間共享數據庫,沒有用戶管理。
2五、LucidDB
LucidDB
LucidDB是惟一一款專一於數據倉庫和商務智能的開源RDBMS,它使用了列存儲架構,支持位圖索引,哈希鏈接/聚合和頁面級多版本,大部分數據庫最初都注重事務處理能力,而分析功能都是後來才加上去的。相反,LucidDB中的全部組件從一開始就是爲知足靈活的需求,高性能數據集成和大規模數據查詢而設計的,此外,其架構設計完全從用戶出發,操做簡單,徹底無需DBA。
LucidDB對硬件要求也極低,即便不搭建集羣環境,在單一的Linux或Windows服務器上也能得到極好的性能。最新版本還加入了對Mac OS X和Windows 64位的支持,官方網站上的文檔和教程也很是豐富,很是值得你體驗一下。
2六、HyperGraphDB
LucidDB
HyperGraphDB是一種通用的,可擴展的,可移植的,分佈式,嵌入式和開源數據存儲機制,它是一個圖形數據庫,專門爲人工智能和語義Web項目而設計,它也可用於任意規模的嵌入式面向對象的數據庫。正如其名,HyperGraphDB是用來存儲超圖的,但它也屬於通常圖形數據庫家族,做爲一個圖形數據庫,它不施加任何限制,相比其餘圖形數據庫它的功能更豐富。
HyperGraphDB很是穩定,已經應用在多個生產環境,包括一個搜索引擎和Seco scripting IDE。它支持*nix和Windows平臺,須要Java 5+。
2七、InfoGrid
LucidDB
InfoGrid是一個互聯網圖形數據庫,它提供了許多額外的組件,使得在圖像基礎上開發RESTful Web應用程序變得更加容易。InfoGrid是開源的,包括一系列項目:
InfoGrid圖形數據庫項目 – InfoGrid的心臟GraphDatabase,能夠獨立使用,也能夠附加到其它InfoGrid項目。
InfoGrid圖形數據庫網格項目 – 在GraphDatabase基礎上增長了複製協議,所以多個分佈式GraphDatabase就能夠在一個很是大的圖像管理環境中協做。
InfoGrid存儲項目 –象SQL數據庫和分佈式NoSQL哈希表那樣,爲存儲技術提供一個抽象的通用接口,這樣InfoGrid GraphDatabase就可使用任何存儲技術持久化數據。
InfoGrid用戶接口項目 – 將GraphDatabase中的內容以REST風格映射成瀏覽器可訪問的URL。
InfoGrid輕量級身份識別項目 – 實現以用戶爲中心的身份識別技術,如LID和OpenID。
InfoGrid模型庫項目 – 定義一個可複用對象模型庫,做爲InfoGrid應用程序的模式使用。
InfoGrid Probe項目 – 實現Probe框架,它容許開發人員將任何互聯網上的數據源看成一個圖像對象看待。
InfoGrid Utilities項目 – 收集InfoGrid使用的常見對象框架和實用代碼。
2八、Apache Derby
Apache Derby
Apache Derby是Apache DB的子項目,它徹底用Java編寫,是一個開源關係數據庫,它的體積很是小,基礎引擎加上JDBC驅動只有2.6MB,它支持SQL標準,它提供了一個嵌入式JDBC驅動,所以能夠嵌入到任何基於Java的應用程序中,Derby也支持常見的客戶端/服務器模式,它也易於安裝和使用。
2九、hamsterdb
Apache Derby
Hamsterdb是一個輕量級嵌入式NoSQL Key/Value存儲引擎,它已經有5年曆史,如今它的開發重點放在易用性,高性能,穩定性和可擴展性上。Hamsterdb支持事務(同一時間只能處理一個事務),支持內存數據庫,支持基於HTTP服務器的嵌入式遠程數據庫,支持日誌/恢復,AES加密,基於zlib的壓縮,支持C++,Python,.NET和Java編程語言。
30、H2 Database
Apache Derby
H2 Database是一個開源的Java數據庫,它的速度很快,包括JDBC API,支持嵌入式和服務器模式,內存數據庫,提供了一個基於瀏覽器的控制檯程序,它的體積也很是小,只有一個大小約1MB的jar文件,它還支持ODBC驅動和全文搜索。
3一、EyeDB
Apache Derby
EyeDB是一款基於ODMG 3規範的面向對象數據庫管理系統,爲C++和Java提供了編程接口,它功能很是強大,而且成熟,穩定和安全,實際上,它起源於1992年的Genome View項目,1994年又進行了重寫,普遍用於生物信息項目。
3二、txtSQL
Apache Derby
txtSQL是一個面向對象的平面文件數據庫管理系統,它使用PHP編寫,支持對普通文本文件的操做,雖然是一個文本數據庫,但一樣支持SQL的一個子集,而且執行效率很是高,txtSQL使用文件系統的方法與MySQL的表和數據庫原理相似,它有一個相似於phpMyAdmin管理界面。
3三、db4o
Apache Derby
db4o是一個面向對象的開源數據庫,容許Java和.NET開發人員用一行代碼存儲和檢索任何應用程序對象,無需預約義或維護一個獨立的,僵化的數據模型,由於模型如今是由db4o根據須要自動建立和更新的。db4o成功的祕密是由於它的易用性,它原生爲Java和.NET設計,存儲數據對象的方法直接在應用程序中定義,所以db4o很容易集成到應用程序中,因爲只須要一行代碼,所以執行效率很是高。
3四、Tokyo Cabinet
Tokyo Cabinet
Tokyo Cabinet是一個Kay/Value型數據庫,每一個Key和Value的長度均可以不一樣,Kay和Value既能夠是二進制數據,也能夠是字符串,無數據表和數據類型的概念,記錄是以哈希表、B+樹和固定長度數組形式組織的。Tokyo Cabinet具備如下優勢:
空間利用率高 – 數據文件尺寸更小;
執行效率高 – 更快的處理速度;
併發性能好 – 在多線程環境性能更好;
改善的可用性 – 簡化的API;
改善的可靠性 – 即便在發生災難的狀況下,數據文件也不會損壞;
支持64位架構 – 支持海量的存儲空間和巨型數據庫文件。
Tokyo Cabinet是用C語言編寫的,爲C,Perl,Ruby,Java和Lua提供了API。
3五、Voldemort項目
Tokyo Cabinet
Voldemort是一個分佈式Key/Value存儲系統,它具備如下特色:
數據自動在多個服務器之間複製;
數據自動分區,所以每一個服務器只包括總體數據的一個子集;
服務器故障處理是透明的;
支持插入式序列化,容許豐富的Key和Value類型,包括列表和元組,也能夠集成常見的序列化框架,如Protocol Buffers,Thrift,Avro和Java Serialization
數據項支持版本化,即便在故障狀況下,數據完整性也能夠獲得保障;
每一個節點都是獨立的,無需其餘節點協調,所以也沒有中央節點;
單節點性能優秀:根據機器配置、網絡、磁盤系統和數據複製因素的不一樣,每秒能夠執行10-20k操做;
支持地理分散式部署。
LinkedIn目前就使用Voldemort解決了高可伸縮性存儲問題。
不知道你是否一口氣看完本文,我想你也必定會驚訝於這麼多開源數據庫吧,事實上,本文也還沒有徹底羅列,歡迎你的補充。
原文出處:http://phpcamp.net/toolbar/25-alternative-open-source-database-engines
原文名:25+ Alternative & Open Source Database Enginesphp