网上收到一篇关于开源数据的文章,最近想看看一些开源数据库的源代码,所以就索性翻译下了。文章是2年前的。不过看下来很多东西都没有过时,还算可以:
http://www.webresourcesdepot.com/25-alternative-open-source-databases-engines/
大多数的程序员都有自己青睐的数据库,而且一般而言都是有一定的使用经验的。
可能是下面某一种比较流行的数据库:
或者是其它更简单的存储方式:XML、text等等。
为什么上面那些数据库很受欢迎呢?因为它们被频繁的使用,并且有很好的文档,背后又有很多不错的论坛支持。而且网上也有很多不错的cms能和他们进行很不错的结合。同时很容易使用,并且也有很多主机公司提供服务等等。
但是现在也有很多不错的数据库变的日益流行起来了。甚至很多都优于现在你所使用的数据库。
下面就介绍25+种的数据库,也许你下个项目就会考虑使用他们:
一、MongoDB (http://www.mongodb.org/)
它是一个具有高效率、具有伸缩性、自由模式(schema-free)、面向文档(类似json之类的数据模式)的开源数据库。
现今有很多流行的编程语言,如“PHP,Python,Perl, Ruby, JavaScript, C++”等,都有了相应的驱动。
二、Hypertable (http://www.hypertable.org/)
Hypertable是一个具有高效的分布式的数据存储系统。被用来设计支持那些需要很大效率,伸缩性,及可靠性的应用。它是在Google的BigTable及关注大的伸缩性数据集合而设计出来的。
三、ApacheCouchDB (http://couchdb.apache.org/)
一个面向文档的数据库,可以使用流行的JavaScript在MapReduce(映射简化?)中被查询、索引的。CouchDB提供一个RESTfulJSON接口,能够在任何环境中通过HTTP请求。
四、Neo4j (http://neo4j.org/)
这是一个嵌入式的,基于硬盘并且支持完整的java事务引擎。它是将数据存储在图中,而不是一般意义上的表中。Neo4j具有很不错的伸缩性。它可以在一台机器或者多台组合的方式处理数以万计的节点/关系/属性。
五、Riak (http://riak.basho.com/)
Riak在处理及结合web应用的时候是理想的数据库:
六、Oracle Berkeley DB (http://www.oracle.com/technology/products/berkeley-db/index.html)
它是一种可以让开发人员快速的、稳定的、本地持久无需管理员的数据库引擎。Oracle Berkeley DB是一个能够直接连接到你应用里面的库。并且能够让你使用简单的函数调用远程服务而具有更好的工作效能。
七、Apache Cassandra (http://incubator.apache.org/cassandra/)
Cassandra是一个高伸缩性的第二代分布式数据库,很多著名的公司都在使用它,像Facebook、Digg、Twitter、Cisco等等。
它的目标是为存储数据提供一个可持续,具有容错性并且高可用性的环境。
八、Memcached (http://memcached.org/)
memcached是将从数据库中获取,API获取或者页面渲染获取到的数据以键值对方式小块数据(字符串、对象等)存储在内存中的方式存储数据。
一般使用在加速动态web应用,以增加数据库数据缓存。
九、Firebird (http://www.firebirdsql.org/)
Firebird可以运行在Linux上,windows及各种Unix平台上的关系数据库。它提供高性能及支持存储过程及触发器的强有力的语言支持。
十、Redis (http://code.google.com/p/redis/)
redis是使用c语言编写的高级快速的键值对方式存储的数据库。它可以像memcached一样使用,位于传统数据库前端作为缓存,同时也可以直接使用。
它是被很多语言所支持的。像很多流行的项目,如“GitHub、EngineYard”等等都是使用它的。
如现有的PHP客户端Rediska,就可以用来管理Redis数据库。
十一、Hbase (http://hadoop.apache.org/hbase/)
Hbase是一种分布式及(多面向存储?)column-oriented store的,且被称为Hadoop数据库。
此项目的目标是能够处理如“上亿条,成千上万行”数据的非常大的表。
它具有平滑的web服务网关,能够支持xml、Protobuf及二进制数据编码控制。
十二、Keyspace (http://scalien.com/keyspace/)
它是具有持续性复制、容错,以键值对方式运行在window操作系统之上的数据库。
Keyspace通过屏蔽服务器/网络错误及单个的高可用性服务的方式来确保高使用性。
十三、4Store (http://4store.org/)
它是一个数据库引擎并且提供数据库查询及RDF数据。
它是使用ANSI C99语言编写,并设计运行在类似UNIX操作系统之上,提供高可用性、稳定性、及伸缩性。
十四、MariaDB (http://askmonty.org/wiki/index.php/MariaDB)
MariaDB兼容及替换了MysqlServer的数据库。
它基本囊括了大多数的开源存储引擎及Maria 存储引擎。
十五、Drizzle (https://launchpad.net/drizzle)
它是属于Mysql的一个分支,主要专注于优化云服务及网络应用的可靠性数据库。
十六、HyperSQL (http://hsqldb.org/)
Hypersql是使用java语言编写的关系型数据库。
它提供一个小型却快速的数据库引擎,可以存储在内存、硬盘,并且提供嵌入式或者服务端方式。
十七、MonetDB (http://monetdb.cwi.nl/)
MonetDB是为了使用数据挖掘、OLAP、GIS、XML 查询、文本、多媒体等高性能应用而设计的数据库系统。
十八、Perservere (http://www.persvr.org/)
Perservere是个对象存储引擎及应用服务器(运行在java/Rhino),并且能够提供动态JSON数据存储以便开发基于javascript的网络富客户端应用。
十九、eXist-db (http://exist-db.org/)
eXist-db是使用xml技术构建。依照xml数据模型及高效特征,并且基于XQuery查询索引方式来存储xml数据的。
二十、其它数据库
译者补充:
看完文章,记得应该还有一些其它有名的存储数据库:
http://www.nextdb.net/ (为开发者写的关系型数据库)
http://www.erlang.org/doc/apps/mnesia/ (Erlang写的?)
http://www.cubrid.org/ (貌似有公司维护?)
http://www.raima.com/in-memory-database/ (内存数据库)
其实还有很多不错的开源,用不同的语言写的,不过实现方式是一方面,更重要的是里面的设计思想很重要。