35個非主流開源數據庫你知道嗎?

  【IT168 評論】 幾乎每個Web開發人員都有自己喜歡的數據庫,或自己最熟悉的數據庫,但最常見的無外乎以下幾種:

  MySQL

  PostgreSQL

  MSSQL

  SQLite

  MS Access

  或是更簡單的XML,文本文件等。這些數據庫有優秀的文檔,背後有強大的社區支持,大部分流行的CMS都使用了其中之一或多個,它們都易於使用,大多數託管服務供應商都提供了相應的產品,因此它們的使用量很多,名氣也很大。但除了這些主流的數據庫外,還有很多其它非主流數據庫存在,其中有一些也開始受到人們的高度重視,下面我們就一起來看看吧,注意本文只介紹開源數據庫,說不定在下一個項目中,你就有嘗試它們的衝動。

  1、 MongoDB

35個非主流開源數據庫介紹

  MongoDB是一款開源,高性能,可擴展,無模式,面向文檔(與JSON類似的數據模式)的數據庫,它爲時下最流行的編程語言提供了驅動,如PHP,Python,Perl,Ruby,JavaScript,C++等,支持全文索引,自動分片,跨LAN或WAN 擴展,採用Key/Value方式存儲數據。MongoDB服務端可運行在Linux、Windows或OS X平臺,支持32位和64位應用。世界上最大的單詞收錄網站Wordnik就從MySQL轉向了MongoDB。

  2、 Hypertable

35個非主流開源數據庫介紹

  Hypertable是一款高性能分佈式數據存儲系統,旨在爲應用程序提供最好的性能,可擴展性和可靠性,它建立在Google的BigTable之上,主要面向大規模數據集應用,其目標是要成爲世界上最好的大規模併發高性能數據庫平臺。百度目前也使用了 Hypertable,也是它的贊助商。

  3、Apache CouchDB

35個非主流開源數據庫介紹

  Apache CouchDB是一款面向文檔的數據庫,可以使用JavaScript通過MapReduce方法進行查詢和索引,它提供了一個RESTful JSON API,因此可以在任何環境中通過HTTP訪問,CouchDB內置了Web管理控制檯,支持通過瀏覽器管理數據庫。CouchDB使用Erlang編寫,Erlang是一種健壯的函數式編程語言,非常適合於構建併發的分佈式系統,Erlang的設計非常靈活,其可伸縮性與可擴展性都非常棒。


  4、Neo4j

Neo4j

  Neo4j是一個嵌入式,基於磁盤的,支持完整事務的Java持久化引擎,它在圖像中而不是表中存儲數據。 Neo4j提供了大規模可擴展性,在一臺機器上可以處理數十億節點/關係/屬性的圖像,可以擴展到多臺機器並行運行。相對於關係數據庫來說,圖形數據庫善於處理大量複雜、互連接、低結構化的數據,這些數據變化迅速,需要頻繁的查詢——在關係數據庫中,這些查詢會導致大量的表連接,因此會產生性能上的問題。 Neo4j重點解決了擁有大量連接的傳統RDBMS在查詢時出現的性能衰退問題。通過圍繞圖形進行數據建模,Neo4j會以相同的速度遍歷節點與邊,其遍歷速度與構成圖形的數據量沒有任何關係。此外,Neo4j還提供了非常快的圖形算法、推薦系統和OLAP風格的分析,而這一切在目前的RDBMS系統中都是無法實現的。

  5、Riak

Neo4j

  Riak是一款非常適合於Web應用程序的數據庫,它提供了去中心化的Key/Value存儲,靈活的map /reduce引擎和友好的HTTP/JSON查詢接口。它是一個真正的容錯系統,不會出現單點故障,在Riak世界中,沒有哪臺機器是特殊的或屬核心服務器 ,它們都是對等的。

  6、Oracle Berkeley DB

Neo4j

  Oracle Berkeley DB是一系列開源的嵌入式數據庫,使開發人員能夠將一個快速、可伸縮、具有工業級別的可靠性和可用性的事務處理數據庫引擎結合進他們的應用程序中。 Berkeley DB最先由伯克利加州大學爲了移除受到AT&T限制的程式碼,從BSD 4.3到4.4時所改寫的軟件。Berkeley DB運行在大多數的操作系統 中,例如大多數的UNIX系統, 和windows系統,以及實時操作系統

  7、 Apache Cassandra

Neo4j

  Cassandra是一款高可擴展性第二代分佈式數據庫,屬於混合型的非關係的數據庫,類似於Google的 BigTable,支持的數據結構非常鬆散,類似於JSON的BJSON格式,因此可以存儲比較複雜的數據類型。Cassandra最初由 Facebook開發,後轉變成了開源項目。Cassandra的主要特點就是它不是一個數據庫,而是由一堆數據庫節點共同構成的一個分佈式網絡服務,對 Cassandra 的一個寫操作,會被複制到其他節點上去,對Cassandra的讀操作,也會被路由到某個節點上面去讀取。對於一個Cassandra羣集來說,擴展性能是比較簡單的事情,只管在羣集裏面添加節點就可以了。Facebook,Digg,Twitter和Cisco等大型網站都使用了Cassandra。


  8、Memcached

Memcached

  Memcached是開源的分佈式cache系統,現在很多的大型web應用程序包括 facebook,youtube,wikipedia,yahoo等等都在使用memcached來支持他們每天數億級的頁面訪問。通過把cache層與他們的web架構集成,他們的應用程序在提高了性能的同時,還大大降低了數據庫的負載。

  Memcached處理的原子是每一個 key/value對,key會通過一個hash算法轉化成hash-key,便於查找、對比以及做到儘可能的散列。同時,memcached用的是一個二級散列,通過一張大hash表來維護。

  9、Firebird

Memcached

  Firebird是一個關係數據庫,可以運行在Linux,Windows和各種Unix平臺上,Firebird相對MySQL和PostgreSQL來說比較小,這也使其可以稱得上是理想的嵌入式數據庫,可用於與其它應用程序服務器 和應用程序捆綁。Firebird具有大部分成熟數據庫所具有的功能,比如支持存儲過程、SQL兼容等。

  10、Redis

Memcached

  Redis是一款快速的Key/Value數據庫引擎,它在保持鍵值數據庫簡單快捷特點的同時,又吸收了部分關係數據庫的優點,從而使它的位置處於關係數據庫和鍵值數據庫之間。Redis不僅能保存Strings類型的數據,還能保存Lists類型(有序)和 Sets類型(無序)的數據,而且還能完成排序(SORT)等高級功能,在實現INCR,SETNX等功能的時候,保證了其操作的原子性,除此以外,還支持主從複製等功能。Redis使用C語言編寫,可以想memcached那樣使用,放在傳統數據庫的前端,它支持許多編程語言,受到許多流行的項目使用,如GitHub和Engine Yard,有一個用PHP編寫的客戶端叫做Rediska,專門來管理Redis數據庫。

  11、 HBase

  HBase是一個分佈式,面向列存儲的數據庫引擎,也可以叫做Hadoop數據庫,因爲它是Hadoop的子項目,HBase的目標是託管數十億行,數百萬列的大表,它提供了一個REST風格的Web服務器網關 ,支持XML,Protobuf和二進制數據編碼選項。

Memcached

 


  12、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 的可靠性。

  13、4store

Keyspace

  4store是一個容納RDF數據的數據庫存儲和查詢引擎,它使用ANSI C99編寫,可在類Unix系統上運行,提供一個高性能,可擴展和穩定的平臺。4store專門爲無共享集羣進行優化,最大可支持32節點集羣,導入性能最大可以達到120kT/s,它的查詢性能也相當出衆。

  14、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 的排序


  15、Drizzle

Drizzle

  Drizzle是從MySQL衍生出來的一個數據庫,但它的目的不是要取代MySQL,它的宗旨是構建一個“更精練、更輕量、更快速”的MySQL版本,它的擴展性和易用性與MySQL相當,但爲了提高性能和擴展性,它從原來的核心繫統裏移除了部分功能。 Drizzle是一種爲雲和網絡程序進行了特別優化的數據庫,它是爲在現代多CPU /多核架構上實現大規模併發而設計的。

  16、 HyperSQL

Drizzle

  HyperSQL是用Java編寫的一款SQL關係數據庫引擎,它的核心完全是多線程的,支持雙向鎖和 MVCC(多版本併發控制),幾乎完整支持ANSI-92 SQL,支持常見數據類型,最新版本增加了對BLOB和CLOB數據的支持,最高支持達64T的數據量。同時,HyperSQL也是一個不錯的嵌入式數據庫。

  17、MonetDB

Drizzle

  MonetDB是一個高性能數據庫引擎,主要用在數據挖掘,OLAP,GIS,XML Query,文本和多媒體檢索等領域。MonetDB對DBMS的各個層都進行創新設計,如基於垂直分片的存儲層,爲現代CPU 優化的查詢執行架構,自動和自助調整索引,運行時查詢優化,以及模塊化的軟件架構。MonetDB/SQL是MonetDB提供的關係數據庫解決方案,MonetDB/XQuery是XML數據庫解決方案,MonetDB Server是MonetDB的多模型數據庫服務器。

  18、Persevere

Drizzle

  Persevere 是針對Javascript設計的基於REST的JSON數據庫,分佈式計算,持久對象映射的框架,提供獨立的web服務器,主要用於設計富客戶端應用,可以用在任何框架和客戶端上。Persevere Server是一個基於Java/Rhino的對象存儲引擎,在交互式的客戶端JavaScript環境中提供持久性的JSON數據格式。

  19、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驅動。

  21、CloudStore

Gladius

  CloudStore(以前叫做Kosmos文件系統)是一個開源的高性能分佈式文件系統,它是用C++編寫的,CloudStore可以和Hadoop以及Hypertable集成,這樣就允許應用程序構建在那些系統上,而底層數據存儲無縫地使用 CloudStore。CloudStore支持Linux和Solaris,主要用來存儲Web日誌和Web爬行數據。

  22、 OpenQM

Gladius

  OpenQM是唯一一款同時有商業支持和免費的開源多值數據庫,基於GPL協議發佈,多值數據庫對NoSQL運動起到了推動作用,它自身也因速度快,體積小,比關係數據庫便宜而很快得到了認可。名稱OpenQM中的Open表示開源版本,QM表示商業閉源QM數據庫。商業版本支持Windows,Linux(RedHat,Fedora,Debian,Ubuntu),FreeBSD,Mac OS X和Windows Mobile,其列表價格還不到其它多值產品的1/5,商業版本還包括一個GUI管理界面和終端模擬器,開源版本僅包括核心多值數據庫引擎,主要是爲開發人員準備的。

  23、ScarletDME

Gladius

  ScarletDME也是一個開源多值數據庫,它是OpenQM的社區分支版,最初由Ladybridge開發,這個項目創立於2008年11月28日,它既在獨立開發自己的功能,也在爲OpenQM貢獻代碼。這個項目最初的名字叫做Ladybridges GPL OpenQM,現在正式改爲ScarletDME,其中的DME是Data Management Environment(數據管理環境)的首字母縮寫。

  24、SmallSQL

Gladius  

  SmallSQL是一個100%純Java編寫的輕量級數據庫,一般用於嵌入式領域,兼容SQL 99標準,支持JDBC 3.0 API,定位於高端Java桌面SQL數據庫。支持所有能運行Java的平臺,可直接嵌入到應用程序中。不過它也有一些不足,如沒有網絡接口,必須安裝 Java運行時,同一時間不能在多個應用程序之間共享數據庫,沒有用戶管理。


  25、LucidDB

LucidDB  

  LucidDB是唯一一款專注於數據倉庫和商務智能的開源RDBMS,它使用了列存儲架構,支持位圖索引,哈希連接/聚合和頁面級多版本,大部分數據庫最初都注重事務處理能力,而分析功能都是後來才加上去的。相反,LucidDB中的所有組件從一開始就是爲滿足靈活的需求,高性能數據集成和大規模數據查詢而設計的,此外,其架構設計徹底從用戶出發,操作簡單,完全無需DBA。

  LucidDB對硬件要求也極低,即使不搭建集羣環境,在單一的Linux或Windows服務器上也能獲得極好的性能。最新版本還加入了對Mac OS X和Windows 64位的支持,官方網站上的文檔和教程也非常豐富,非常值得你體驗一下。

  26、HyperGraphDB

LucidDB  

  HyperGraphDB是一種通用的,可擴展的,可移植的,分佈式,嵌入式和開源數據存儲機制,它是一個圖形數據庫,專門爲人工智能和語義Web項目而設計,它也可用於任意規模的嵌入式面向對象的數據庫。正如其名,HyperGraphDB是用來存儲超圖的,但它也屬於一般圖形數據庫家族,作爲一個圖形數據庫,它不施加任何限制,相比其他圖形數據庫它的功能更豐富。

  HyperGraphDB 非常穩定,已經應用在多個生產環境,包括一個搜索引擎和Seco scripting IDE。它支持*nix和Windows平臺,需要Java 5+。

  27、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使用的常見對象框架和實用代碼。


  28、Apache Derby

Apache Derby

  Apache Derby是Apache DB的子項目,它完全用Java編寫,是一個開源關係數據庫,它的體積非常小,基礎引擎加上JDBC驅動只有2.6MB,它支持SQL標準,它提供了一個嵌入式JDBC驅動,因此可以嵌入到任何基於Java的應用程序中,Derby也支持常見的客戶端/服務器模式,它也易於安裝和使用。

  29、 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驅動和全文搜索。

  31、EyeDB

Apache Derby

  EyeDB是一款基於ODMG 3規範的面向對象數據庫管理系統,爲C++和Java提供了編程接口,它功能非常強大,並且成熟,穩定和安全,實際上,它起源於1992年的Genome View項目,1994年又進行了重寫,廣泛用於生物信息項目。

  32、txtSQL

Apache Derby

  txtSQL是一個面向對象的平面文件數據庫管理系統,它使用PHP編寫,支持對普通文本文件的操作,雖然是一個文本數據庫,但同樣支持SQL的一個子集,並且執行效率非常高,txtSQL使用文件系統的方法與MySQL的表和數據庫原理類似,它有一個類似於 phpMyAdmin管理界面。

  33、db4o

Apache Derby

  db4o是一個面向對象的開源數據庫,允許Java和.NET開發人員用一行代碼存儲和檢索任何應用程序對象,無需預定義或維護一個獨立的,僵化的數據模型,因爲模型現在是由db4o根據需要自動創建和更新的。db4o成功的祕密是因爲它的易用性,它原生爲 Java和.NET設計,存儲數據對象的方法直接在應用程序中定義,因此db4o很容易集成到應用程序中,由於只需要一行代碼,因此執行效率非常高。


  34、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。

  35、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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章