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

盘点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

Facebook发布开源项目Tweaks,让iOS应用开发更加便捷 移动开发创业团队再下一城!UCloud与飞流战略合作 【走进支付宝】即将开场,问题大征集! 开发者薪资调查:半数开发者工作十年方可迎来好“薪”情 沟通更畅快 HipChat推出1对1视频和屏幕共享功能 AMD宣布支持DirectX 12 为游戏开发者带来更多福利 开发者薪资调查:2013年哪种编程语言最赚钱? 苹果挖墙脚未果,黑莓高管跳槽被起诉 不看不知道:六个超大规模Hadoop部署案例 豌豆荚发布应用内搜索技术协议 兼容App Indexing Oculus 21岁鬼才创始人:收购不等于改变 Unite China 2014课程解析:Unity教育行业专场免费开放 Instagram技术窥探,助你打造响应式App 切勿妄谈Hadoop,以及4个数据管道打造实践 一周消息树:雨果·巴拉与小米的那些事儿 《近匠》轻邮联合创始人Wesley:移动App要有撼动企业服务的野心 Facebook开源MySQL分支,谷歌、LinkedIn、Twitter等大拿捧场 淘宝明风:基于Graphx的图计算实践分享 调查显示:2015年Android将统治全球操作系统 初创公司最爱使用的那些开发工具 仙剑之父姚壮宪强势加盟Unity游戏及应用大赛 智能可视化平台:DCOS之数据中心抽象 一周热点:5美分/GB的开源存储系统,及硬盘质量“最差”的希捷 英特尔收购可穿戴技术公司BASIS Science 设计移动App的十大技巧 皮皮网陈超:易用与性能兼备,Spark蓬勃发展! Sahara顺利毕业,将加速OpenStack与Hadoop的融合 十大将拯救地球的开源硬件项目 Android应用程序开发者需要了解的五个内容 百度轻应用插件CloudaMySQL诞生记 盘点Github所用的开源项目 CB6的project Manager 让人头疼! 关于截取字符串的问题 请大家帮我看一下这程序 这样的菜单效果怎么做啊!! SendMessage()的问题... 一个被挂起的进程(失去热点)还能收到键盘的消息吗? cb6 的 project Manager 让人头疼! 求助,Apache设置问题 高手请进!!分,不够再给!!是关于session的问题!! samsung550s显示器一问,在线等待…… RedHat 8.0 启动进不了XWindow视窗,怎么办呢???? 在C#中如何完成byte[]之间的拷贝,或者部分拷贝 请问Fuction(T("helpnet"),int i)中的T是和作用? 在客户服务器系统中如何向服务器中请求查询数据? 连接SQL——PLUS问题,用connect / as sysdba,抱错:服务句柄未初始化 关于安装程序的问题,来者有分 急,请高手赐教,在线 初学C++,我是不是需要详细的了解模板技术 游戏开始时的图形菜单和控件是怎么做的? 请诸位将已解决,但长期不结账的case贴在这里。 前几天搞了一个小东西 抱着试试看 在csdn上发布了 没想到今天一看 已经有十多个朋友捧场进行了下载 ######请问,不创建窗体,怎么读出窗体中的控件的属性? 答对给500分! 这个痛苦的程序已经到最后关头,请大家一定要帮我一把:) 100分求优秀MySQL技术网站。 位图菜单... 如何让自己的程序不在Window任务管理器里面出现? 关于DTS数据库导入的问题 网页设计 怎么出现了这么怪的问题?……大家进来看一下阿,来者有分!! 问大家一个语法问题;下面的句子是什么含义? 怎么样从文件里读出数据? 大家注意一下,看看里面的内容,如果有自己的ID,请尽快结贴,要不将被强制结贴! 在asp.net内怎样表示局域网络上的共享目录的路径??? 如何让测量结构可通过WEB方式查看, 急急急, 请各位WEB开发高手帮帮忙 再当一年程序员,然后去卖血。心情沮丧,散分。 怎样把jpg文件设置为墙纸? 查询出字段中最大值的记录????字段为(number)型!在线等候! 请问新改版的CSDN是用ASP.Net开发的吗???我有事要请教 有没有对格斗游戏原理精通的朋友吗? javascript如何定制子框架(iframe)的onkeyup事件,在线等,谢啦! 有人知道该怎样解决吗??(在线) 急告:怎样向打开的批处理文件的命令提示符界面中输入参数 无聊兄,海良兄请进 基础问题:怎样能将一个int型变量转变为float型? 高分请教 VB中访问SQL 2000的表格语句? 各位大哥,给点意见 win2000 advance sever与win xp!xp不能上网浏览网页 有WEB开发经验的请进 请问谁有ocr的相关资料? 偶这样的人为什么找工作难? “回也,非助我者也”表现了孔子怎样的思想教育? To protect the Earth,we plant___trees every year.A.million of B.millions C.millionD.millions of2.It's impoetant for us to protect the Earth____we have only one Earth.A.because B.because of C.why D.so原因! Tom is said to have turned___ doctor in ___ early twenties.a:/;/b:/;hisc:a;thed:a;his 描写孔子的成语一个 七年级英语学习; turn it on .此句中“on"的词性是副词还是介词? tell me why 中文翻译 Poor Tom,he had his pocket lost yesterday.这个句子是错误的,为什么? 英语选择:-Turn off the light.-_________?A.Excuse me B.SorryC.Pardon D.Don‘t you选择并说明理由! Tom wanted to pay for his meal at the reataurant,but the waiter said,"No,you do not have to do thatToday is mo publican is birthday,so all the food you had is on the house ." on the house can you tell me why why why why why 一首英文歌中的歌词. does mr smith live next door to you——Does Mr Green live next door to you?——No,but he_______A,used to B,used to doC,used to be D,used to live求分析其他选项 英语翻译如 “ILOVE YOU”就是 “爱拉乌油” 沪江开心词场背单词效果怎么样?可以同时背多语种词书不? Do the Tom live next door to you A used to B used to do 为啥不选B表示过去啊 动词加er变名词 ready 如何加er 变名词ready 如果要变成名词,变成准备者之类的 如何加 Tom was ill the day before yesterday.(对划线部分提问)划线部分是illWhat was ______ ______ Tom the day before yesterday The mother didn't know who_____for the broken glass.A.blamed B.to blame C.be blamed D.would blame为什么要选B呢? 英语翻译In my dream'children sing A song of love for every boy and girl The sky is blue and fields are green And laughter is the language of the world Then i wake and all i see Is a world full of people in need Tell me why (why) does it have to b How was the weather ______in the mountain yesterday? The mother didn't know who ___ for the broken glass as it happened while she是 to blame,还是 to be blamed tell me why 歌词急 求孔子的个人简介500字左右,我要写一篇文章, I don't know______or not.A.whether he is at home B if he is at home C that he is at homeD whether is he at home The mother didn't know who to blame for the broken glass.为什么要用 to blame 为什么不是who was to blame ,而是who to blame ,不是有个短语是 sb be to blame 为什么今天沪江的开心词场打不开? another 、others、 the other、other、anyother的区别 Tom ——(meet)John at the airport yesterday.横线上是填meet还是meets 谁能详细比较at issue,in debate,in dispute的异同?要有例句,要有自己的解释,不是从别的地方复制 We know (that) the earth is not round We know the earth (that) is not round 哪句话是对的从句的位置?上面的that都不省略.第二个为什么错了?我想让“我们知道地球”这前半句做主语,我不想让“我们”做主 The mother didn't know who ____ for the broken glass.A.would blameB.was to blameC.blamedD.blames求答案及原因, debate on 和debate about 的区别是什么?RT anyother,the other,the others,another怎么区分? Sam was___ ___(被要求)meet Jim at the train station yesterday. quarral与debate的区别最好是用法上的区别.非常感谢! 为什么vivos7it手机不能使用沪江开心词场 The mother didn't know who to blame for the broken glass as it happened while she was out.为什么用who 而不用whom啊? dispute,debate,contention这仨词啥区别?如果表示一个社会问题的辩论 应该用哪个? The window is made ()glass. We all know that the earth is round.同义句转换:_____ _____ _____ to all,the earth is round. another other the other等一类词有什么区别? somebody broken the glass of the window.(反义疑问句) somebody broken the glass of the window_____ ________? Tell me why I can't be there where you are another和the other有什么区别?(当代词讲的时候)A:I’m sorry I have lost the pen that you gave meB:Don’t worry.There is () 用哪个? The window is broken.Try to ( ) who broke it.A.find outB.findC.lookD.look for 英文翻译、I can not tell me why you are pro Let's ______ something to eat.A.to have.B.having.C.have.D.has nightwish - I want my tears back歌词大意 He is going to have a glass of wine with (Tom).对括号里提问 let me to have a book改错 when did tom lose his new pen这句话对吗 ---Do you know ___ Lily is at home?---No,I donnot know.A.that B.whether let me have a book Where is the boy __that__ arm was hurt by the window _____ glass is broken?这里要填什么关系代词 关于number和amount的区别1、表示数量时,the number/amount of sth哪个接可数,哪个接不可数?2、它们前面是接large/big?3、它们本身可数不?若可数?怎么理解复数情况? have,let's,carrots,Mary,把他们连词成句 i want my tears 单选-Dad!Tom's broken a glass!-Dad!Tom's broken a glass!-_____.Accidents will happenA.No wayB.Doesn't matterC.No trouble at allD.Don't mention it 与孔子思想教育有关的成语 the window is broken是系表还是被动broken是用于系表 还是用于被动 怎么区分 Tom’s computer is broken.He’ll have it _______.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘