说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

盘点2013:21款最优秀的开源数据库

HTML文档下载 WORD文档下载 PDF文档下载
几乎所有软件项目的开发都需要数据库的支持,目前,随着开源技术的迅速发展,越来越多的数据供应商选择开源数据库,为开源事业添砖加瓦。

作为一名软件开发人员或DBA,其中一份必不可少的工作就是与数据库打交道,比如MS SQL服务器、MySQL、Oracle、PostgreSQL、MongoDB等等。众所周知,其中MySQL是目前使用最广泛最好的免费开源数据库,此外,还有一些你不知道或者没用过但又非常出色的开源数据库,例如 PostgreSQL、 MongoDB、HBase、Cassandra、Couchbase、Neo4j、Riak、Redis、Firebird 等。

在本文,作者总共总结了21个最优秀的开源数据库,不妨让我们一起来看下吧。

1.MySQL

MySQL是一个开源的关系型数据库管理系统,为甲骨文公司产品。支持多种存储引擎、集群、全文 索引、支持多线程、充分利用CPU资源、支持多用户等其它许多非常专业的功能。

MySQL由于性能高、成本低、可靠性好已经成为最流行的开源数据库,并且被广泛应用在Web应用程序以及其它中小型项目上。从WordPress 到Movable Type都把MySQL作为默认的数据库。此外,自甲骨文收购MySQL以后,有将MySQL闭源的潜在风险,因此社区采用分支的方式避开这种风险,开发并运营着完全兼容MySQL的MariaDB数据库。

2.PostgreSQL

PostgreSQL可以简称为“postgres”,是一款对象-关系型数据库管理系统,PostgreSQL采用的是比较 经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式。PostgreSQL拥有非常完美的驱动,并支持标准的ANSI-SQL和扩展功能,在许多方面都要超过MySQL。

PostgreSQL是全功能的自由软件数据库,很长时间以来,PostgreSQL是唯一支持事务、子查询、多版本并行控制系统(MVCC)、数据完整性检查等特性的唯一一种自由软件的数据库管理系统。许多云服务提供商比如Heroku等,都用PostgreSQL作为他们的RDBMS存储。

缺点方面,PostgreSQL还欠缺一些比较高端的数据库管理系统需要的特性,比如数据库集群,更优良的管理工具和更加自动化的系统优化功能等提高数据库性能的机制等。

3.MongoDB

MongoDB是一款开源、面向文档并且也是当下人气最旺的NoSQL数据库,它也是一款介于关系数据 库和非关系数据库之间的产品。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。还具有高性能、易部署、易使用,存储数据非常方便等特点。

4.Hadoop (HBase)

Hadoop (HBase)是一个开源的、基于列存储模型的分布式数据库,它是Apache Hadoop项目的一部分,开发语言为Java。

HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是 HBase基于列的而不是基于行的模式。且具有高可靠性、高性能、可伸缩、并建立在关系模型基础上的分布式数据库。

HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,用以存储大规模结构化数据。HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。

5.Apache Cassandra

Apache Cassandra是一套开源分布式NoSQL数据库系统,类似于Google的BigTable。它最初由 Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身。在2008年,Facebook将其开源。

Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra 的一个写操作,会被复制到其它节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能是比较简单的事情,只管在群集里面添加节点就可以了。

6.Couchbase

Couchbase是一款基于JSON模型的文档数据库,它是CouchDB的一个fork,能够实现水平伸缩、并且对于数据的读写都能提供低延迟访问。Couchbase要比CouchDB功能更加全面,并且Couchbase产品包含了CouchDB的一个副本。Couchbase产品向CouchDB添加了缓存、集群等功能。此外,Couchbase还包含一些不错的集成功能,对于数据存储系统来说,Couchbase是一个不错的选择。

7.Neo4j

Neo4j是一款开源的高性能NoSQL图数据库,它使用图(graph)相关的概念来描述数据模型,把 数据保存为图中的节点以及节点之间的关系。支持ACID事务(原子性、独立性、持久性和一致性)。

在现实中,很多数据都是用图来表达的,比如社交网络中人与人的关系、地图数据、或是基因信息等等。Neo4j中最基本的概念是节点(node)和关系(relationship)。节点表示实体,在两个节点之间,可以有不同的关系。

8.Riak

Riak是基于Erlang和C语言开发,Riak是Amazon的高可用性键值存储库,用Erlang编写且基于 Dynamo,是一种高度可扩展的分布式数据存储。Riak没有主节点的概念,在处理故障方面更具灵活性。在开源版本中,不包含SNMP分布式模型。

9.Redis

Redis是一个开源、支持网络、基于内存、键值对存储数据库。开发者无需存储数字和字符串即可 dump整个哈希值、列表、集合以及其它复杂的结果存储,此外,Redis还提供复制/同步和持久化等功能。

Redis是一个高性能的键值对数据库。Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。

10.Firebird

Firebird是一个跨平台的关系数据库,用C和C++开发。目前能够运行在Windows、linux和各种Unix操 作系统上,可以对存储过程和触发器提供高性能和强大的语言支持。

Firebird既能作为多用户环境下的数据库服务器运行,也提供嵌入式数据库的实现。 

11.Memcached

Memcached是一套分布式的高速缓存系统,它能够用来存储各种格式的数据,包括图像、视频、文 件以及数据库检索结果等。简单地说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

由于Memcached通常只是当作高速缓存系统使用,所以使用Memcached的应用程序在写回较慢的系统时(像是后端的数据库)需要额外的代码更新Memcached内的数据。 

12.Oracle Berkeley DB

Oracle Berkeley DB是一个高效的嵌入式数据库编程库。Berkeley DB可以保存任意类型的键/值对(Key/Value Pair),而且可以为一个键保存多个数据。Berkeley DB支持让数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统,其中包括大多数类Unix操作系统、Windows操作系统以及实时操作系统。

13.Hypertable

Hypertable是一个高性能的分布式数据存储系统,采用与Google的BigTable相似的模型。具有高性 能、可伸缩、可扩展,并且主要集中大规模数据集。

Hypertable采用类似表的形式组织数据,但目前Hypertable并不支持关系数据库中丰富的关系属性。Hypertable将数据组织成一个多维稀疏矩阵。该矩阵中的所有行信息可以基于主键(Primary Key)进行排序。

14.Keyspace

Keyspace是一款键值对数据库存储系统,Keyspace基于Master-Slave模式,所有的写均由Master承担,并通过paxos一致传播到Slave,读可以根据基本路由到Master或Slave。因此,当Master出现宕机或不可访问时,会存在一套Master的选举机制,在keysapce中成为PaxosLease算法。

15.4store

4store是一个高效、可扩展的RDF数据库,它采用ANSI C99开发,可以同时运行超过15GT的数据查 询,使用它所开发的Web应用程序可同时支持上千人访问。

16.MariaDB

MariaDB数据库管理系统是MySQL的一个分支,完全兼容MySQL,包括API和命令行,使之能轻松成 为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。另外又添加了一些功能,以支持本地的非阻塞操作和进度报告。这意味着,所有使用MySQL的连接器、库和应用程序也将会在MariaDB下工作。

MariaDB由MySQL的创始人麦克尔·维德纽斯主导开发,正如上文所提到的,由于担心甲骨文存在将MySQL闭源的风险,目前已有许多公司将项目移到MariaDB上,比如维基百科、谷歌等。

17.Drizzle

Drizzle是一款免费/开源的关系型数据库管理系统,基于C++开发,它是MySQL 6.0的一个分支。和 MySQL一样,Drizzle也是采用经典的C/S(客户端/服务端)架构模式,其主要专注于为云端应用提供一个可靠稳定的数据库。

18.HyperSQL

HyperSQL是一款采用Java编写的SQL关系型数据库引擎,其核心是多线程,支持双向锁和MVCC, 并且为基于内存和磁盘的表提供小而快速的数据库引擎,支持嵌入式/服务器模式。同时,它还拥有多种工具,比如命令行SQL工具、GUI查询应用程序等。

19.MonetDB

MonetDB是一款开源的、面向列的数据库管理系统,其专门为数据挖掘、OLAP、GIS、XML查询、 文本及多媒体检索提供高性能应用。

MonetDB数据库管理系统包含MonetDB/SQL、MonetDB/GIS、MonetDB服务器。其还具有自动和自调优索引、运行时查询优化以及模块化软件架构。

20.Persevere

Persevere是一款对象存储引擎和应用服务器(基于Java/Rhino),它提供一个服务器JavaScript环境来实现动态JSON数据的持久化数据存储。支持通过标准JSON HTTP/REST Web接口来创建、读取、更新和删除数据。

Persevere引以为自豪的是它的“schema-free”,这一特点使得它与其它数据库有很大的区别。Persevere可以让你随心所欲的增加schema。Persevere并非把分级结构的顶层称为一个domain(SimpleDB这么称呼),也不称之为文档(CouchDB这么称呼),Persevere称之为对象,它甚至可以让你创建对象的子类。如果你想违背规则,你也能坚持某些字段使用某一类型,但是这是不推荐的。Schema规则是可选的。

21.eXist-db

eXist-db是使用XML技术构建的开源XML数据库,它根据XML数据模型、功能、基于索引的XQuery进程来存储XML数据。程序通过eXist绑定的HTTP服务器与eXist交互。eXist数据库还提供了SOAP、XML-RPC 和RESTful接口,开发者可以通过这些接口向核心服务器提交XPath、XQuery和XUpdate请求。命令行和GUI客户机也是可用的。

英文来自: The Professionals Point

更轻松的获取APK文件安装时间 Android控件对应表,丰富你的UI设计 Android开发进阶之NIO非阻塞包(八) Android开发进阶之NIO非阻塞包(七) Android开发进阶之NIO非阻塞包(六) Android开发进阶之NIO非阻塞包(五) Android开发进阶之NIO非阻塞包(四) Android开发进阶之NIO非阻塞包(三) Android开发进阶之NIO非阻塞包(二) Android开发进阶之NIO非阻塞包(一) Android开发进阶教程系列(一)目录篇 Android开发调试工具TraceView多图演示 Android JNI实例代码(二) Android JNI实例代码(一) Android JNI开发高级篇 Android NDK开发技巧二 Android JNI开发进阶篇 Android JNI开发提高篇 Android JNI开发入门篇 Android NDK开发技巧一 Android数据库ContentProvider封装原理 Android Permission列表,ADT 0.9.9 bug Android Theme和Styles内部定义解析 Android平台下图表绘制相关方法 Activity类的runOnUiThread方法你用过吗 Android上鲜为人知的UI控件介绍和使用 获取Android手机上的图片和视频缩略图 Android JSON解析示例代码 Android ANR介绍与避免 Windows Phone 7 SDK完善度不如Android m3 Android中使用定时器TimerTask类介绍 串口工作有误了,MSComm32控件的问题?? 想知道有必要先学C 再C++ 再Visual C 吗? gqxs (小龙)请进,看到你去年的一个关于注册的帖子,我也出了像你一样的问题,请大家都来看看。 DBDateTime控件在哪里可以找到? 那为能够帮我解释一下SQLBindCol函数,特别是参数。 如何操作recordset,使其能够手动付值!即用 window nt和window 2000 server能不能象windows professional那样设成重启后自动登录。 关于语音视频聊天室 高手进入 来者得分 通过GUID枚举设备的问题请教! 代码不懂请指教 如何用javascript控制表单提交? (急急-在线等)一个复选框的问题 如何让服务器知道前来访问的客户机物理内存大小? 急,急,帮我看看。一个初级问题。 用思科1721路由器代理上网和连接网络电话功能够用吗? 请问用嵌入式系统开发的成本大约是多少? 如何获取两个日期之间相隔的天数? PB中如何操作文件。 在线等急盼tomcat启动问题 我的奔4电脑不能装oracle8。1。7 java 与oracle数值类型转换问题 请教“数字权利管理”(digital rights management)和P3P的实现问题? IBM DDYS-TO9170M SCSI 硬盘,如何看它的CACHE,写者10000转的, 数据插入速度问题 一个关于自定义类的问题,请帮助! 如何使用DBchart? DELPHI+CORBA 求救!!!! 请问java中如何获得windows的系统目录? 大家看看这台服务是出了什么问题?帮帮忙!!! 一个想把控件内容打印出来的小问题! 如何查看表中各字段的长度? 谁能给出一个ASP.NET应用存储过程的例子 self::node()是否就是 . 高分求救::关于分类显示的问题. c#里的编辑列的激活事件写在哪里? 一个基础小测验 如何获取客户端机器物理内存大小?急!!! 急问:我的VC6.0里的Icon编辑器为什么只有16种颜色 谁有这样的曲线绘图源码,一定重分相谢! 怎样去除启动菜单? 调用自建文件时,报错“重复定义”,为什么? Rave做报表时,要求preview时,不出现那个OutPut Options,并且预览时,要求全屏显示 请问映射文件里添加纪录应该怎么做阿 怎样让下拉列表中选定的值对应为数据库中的值~! 怎样去除启动菜单? asp.net 怎样学习 请问我的要存放含有‘年月日时分秒毫秒微秒’的数据能否用date类型存储? 谁来帮我解决一下问题——解决者另外加分100 问:sys/wait.h 是unix下的一个宏吗? 救命! 请问高手 “反帝必反修”外交战略与中国极左思想的关系如何? 宫内回声不均质 宫腔线不清晰,可探及大小约2.9*1.6cm略高回声,形态不规则,内回声不均质.双附件未见明显异药物流产5天后去医院做的检查,B超报告单上的检查结果,是不是没流干净,现在还有出 君子以反修德 什么意思? 京东商城反修单生成新订单是什么意思? how do i geel as a typical dog goes by?how do i feel as a typical dog goes by? 他们脸上浮出了笑容用英文怎么说啊 Eating at restaurants is also different翻译 欢欢喜喜过大年作文300字 作文 欢欢喜喜过大年 反帝反修干革命备战备荒为人民说的是什么事件 右侧附件区见不均质回声光团.距离上次月经35天囖.阳性.B超未见明显孕囊.小腹有时轻微隐痛.但是左右都有.不在固定一侧痛.未见红. 原山东大学校长徐显明任中央综治委办公东京股市日经股指下跌0.49%迪拜将推专供叫车服务的出租车斯里兰卡近百年来首条新铁路动工印度驻马尔代夫高专汽车被砸维也纳童声合唱团主席:期待中奥合作促日本儿童人口持续减少 财务省提议裁减美女不顾反对捐肾给陌生男子 3年后携忧6岁儿未来买不起房 男子买411万泰国前总理阿披实被控谋杀 或助推通过全球首次大规模男性裸体展 法国美术展韩媒:崔龙海访俄体现朝鲜外交多边化意澳媒:中澳将签自贸协定 85%澳货物曝费德勒与瓦林卡更衣室大吵 争吵原因日研究人员:一种现有药物能杀死癌症干葡萄牙内政部长涉贪辞职 被指用移民居连州摄影节:《诗山河考》传浙江一银行取款机前惊现女血印 警方四川唐家河发现一只受伤熊猫 或被黄喉2014/15赛季CBA第7轮比赛结连州摄影节:《戏班》外媒:一名德国驻俄女外交官被驱逐神话大宋天龙之我自逍遥去网吧不要喝陌生人的饮料无尽狂法全球殖民灰唐上匠深海亮舰神话世界大冒险失忆的超级高手轻仙传省庄竹海旅游东极石屋群旅游文昌阁旅游白龙潭旅游昌西陵旅游泰东陵旅游清西陵行宫旅游岐山周公庙旅游凤翔东湖旅游洛迦山旅游崖门旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘