2009 年的 DBMS 状况

MariaDB 是来自 MySQL 的分叉,MySQL 数据库的创建者 Monty
Widenius 看到了开源数据库的未来。随后,甲骨文宣布收购 Sun,并以此获得
MySQL 的授权。Monty 并不确定 Oracle 是否是 MySQL
可靠的所有者,因为开源数据库对 Oracle 商业产品的造成了巨大威胁。当然,选择
MariaDB 作为开源数据库,对于很多人来说是一种福利。MariaDB
很快成为数据库管理系统领域的重要成员,几个大的 Linux 发行版把 MariaDB
作为它们的默认 DBMS。

MySQL目前仍然是受欢迎的开源数据库,但是近些年来它已经慢慢失宠了——这很正常。下面来看看放弃使用MySQL数据库的五个较实际的理由。
  澳门新葡萄京所有网站 1  
追溯到2008年,当Sun Microsystems以大约一亿美元收购MySQL
AB的时候,MySQL迅速成长为大受欢迎的数据库。然而第二年,Oracle接管了Sun,MySQL也是交易的一部分。MySQL的用户和开发者开始质疑开源数据库的命运,与此同时他们开始寻找替代品。
 
转眼到了2013年:Oracle并没有消灭这个昔日的竞争对手,MySQL仍然是最受欢迎的开源数据库。可是MySQL的知名度正在下滑,因为它已经失去了诱惑力,各种可行的数据库替代品也正在崭露头角。让我们来看看不再使用前开源数据库MySQL的五大理由。
  1. MySQL不如其它关系型数据库管理系统那样成熟  
MySQL起初并不是一个RDBMS(关系型数据库管理系统),只是后来改变方向添加了更多的功能。时间久的、更成熟的RDBMS仍然被认为比MySQL功能更丰富。如果你想要一个功能丰富的RDBMS,你可以选择PostgreSQL或者是一些闭源的数据库系统,例如Oracle或Microsoft
SQL Server。   PostgreSQL的贡献者Selena
Deckelmann表示:对于需要关系型数据库的Web开发人员来说,Postgres看起来是新项目的不二选择。“通过加入JSON数据类型和PLV8特性,Postgres也可能成为NoSQL的默认选择”Selena说。
  2. MySQL是开源的…但只有近似而已  
严格来说,MySQL是一个开源数据库,但是在实践当中,已经感觉不到了。在Oracle的保护伞下,MySQL现在有专利权和源模块。“理论上,MySQL仍然很活跃,但是Oracle的脚步深陷开发进程之中,拒绝发布关于bug的测试案例,而且MySQL的安全补丁已经在代码上加强控制,并输送大量的开源开发人员到新的领域。”Paula
Rooney在她的ZDNet文章里作出解释。难道Oracle真的该把MySQL奉献给Apache吗?
  澳门新葡萄京所有网站 2
其实有很多开源替代品可以选择。MariaDB是MySQL的一个分支,仍然是“真正的开源。”一位MariaDB的开发人员解释说:“MariaDB的所有代码都是在GPL,LPGL或BSD下面发行的。MariaDB并没有如你在MySQL
Enterprise Edition里所看到的那些闭源模块。事实上,在MySQL 5.5 Enterprise
Edition里的所有的闭源特性都可以在MariaDB开源版本里找到。”   3.
MySQL的性能无法与竞争对手相提并论
 
MariaDB的博客为MySQL和MariaDB的对比提供了详细的基准测试结果,尽管对比结果很接近,但是MariaDB有绝对的优势。
  PostgreSQL的贡献者Selena Deckelmann说Heroku
Postgres让Postgres更有吸引力,原因有几个,其中包括缩放功能。“可以说他们是Postgres最大的服务器托管环境,为你的Apps自动处理扩展,支持出色的附加组件,使你在找出DevOps本地情况之前更容易试用各种功能。”她解释道,“他们只宣布支持PVL8——允许你在数据库里运行JavaScript,并能更好的利用9.2和更高版本的JSON
datetype。”   4. MySQL是Oracle所有的,而不是社区驱动的  
很显然,在被Oracle接管之后,MySQL并没有改变发展方向,但是,因为目前属于Oracle的事实让一些开发者感到不安。“可能最糟糕的是,技术社区不可能和在Oracle里的MySQL开发人员一起工作。”
MySQL和MariaDB创始人Michael “Monty” Widenius如是说。  
Widenius指出,Oracle不会接受补丁或提供一个公共的路线图。他说,“没办法和MySQL的开发人员讨论怎样执行一些事情或者怎样让当前的代码运作。”如果一个开源项目的开发数据库和你有关,Widenius会向你推荐MariaDB,因为它是基于MySQL建立的,并且提供了更多新特性、速度和稳定性,而且更安全。
  5. 越来越多的强劲对手   2013年6月在波士顿举行的峰会上,Red
Hat宣布和MySQL分道扬镳。取而代之的是Red
Hat将和MariaDB同上一条船。Slackware Linux
2013年3月宣布将MySQL转移向MariaDB,而且openSUSE在2013年1月也作出了相似的宣布。
 
在2013年4月,Wikimedia基金会宣布Wikipedia网站(全球最受欢迎的第七大网站)采用MariaDB。Wikimedia
Foundation Site架构师Asher
Feldman解释称,MariaDB的优化程序增强功能和Percona的XtraDB功能设置是作出改变的根本原因。“作为自由文化运动的支持者,我认为这是同等重要的。”Wikimedia
Foundation强烈倾向于自由软件开发项目,包括一个在无偿授权和企业版本之间没有分叉代码库的项目。”他补充到,“我们欢迎并支持MariaDB
Foundation作为一个非盈利组织,尤其是在自由和开放的MySQL数据库相关社区方面。”
  Steven J.
Vaughan-Nichols是一个科技记者(这里作为SmartBear的贡献者),在2012年结束之际提到,不管你怎么看待Oracle或开源vs.专有软件,MariaDB在世界最繁忙的Web站点之一的优秀性能正在吸引人们的注意力,不管你正在使用的是Linux、Apache、MySQL还是PHP/Python/Perl(LAMP)软件堆栈。
 
这些海量数据有什么作用呢,技术型公司知道那些忠实的用户不会放弃MySQL的。MySQL不再是唯一的了不起的数据库解决方案。相比之下,MySQL正面临着巨大的挑战——甲骨文免费版、真正的开源产物MariaDB、不断争宠的PostgreSQL
RDBMS和不断膨胀的NoSQL市场。如果你还没有放弃MySQL,这里有充足的理由供你重新考虑。
  如果你不支持放弃MySQL的观点,那么请阅读Andy
Patrizio的文章继续使用MySQL的5个理由,然后再做决定也不迟。              
                                                                       
                原文:Smartbear

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

等。

MariaDB 的今天

现在开源 RDBMS 的市场上出现了非常有趣的情况,出现了 PostgreSQL 这个第三大玩家。PostgreSQL
始终拥有一波狂热的追随者,毕竟,PostgreSQL是 2017
年最受欢迎的数据库管理系统。

作为 MySQL 的管理员,Oracle 担心的更多。猜测一下,没有 MariaDB 和
PostgreSQL 施压 MySQL 会如何发展。但是事实是,MySQL 在实现 SQL
标准方面总是落后于其他人,而 MariaDB 和 PostgreSQL
在这方面就做的很好。Oracle 肯定会投入更多努力赶上,MySQL
也趋向于越来越多地包含 NoSQL 系统通常提供的功能,例如支持 JSON
数据类型。

MariaDB 最初专注于增强现有 MySQL 的功能,例如其 Aria
存储引擎旨在成为改进的 MyISAM 实现。但是很快 MySQL 现有功能,并提供了
MySQL 中未有的功能。最近,MariaDB 通过开发新组件或者通过获取 DBMS
技术并将其合并到系统中来扩大其范围。例如,MariaDB ColumnStore,最初是
InfiniDB,TokuDB 高性能存储引擎,用于支持树结构和图形的 Open Query GRAPH
计算引擎,用于启用高级文本搜索的 Sphinx
存储引擎,以及用于增强分布式支持的 Spider 存储引擎数据库。所以,MariaDB
不能再被认为是 MySQL 的直接替代品。

追溯…

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

澳门新葡萄京所有网站,未来的 MariaDB

从长远来看,这种不断增长的不兼容性并不是坏事。毕竟,在系统之间的激烈竞争中受益的是开发人员。

DB-Engines 排名表明,MariaDB 已经将自己与 MySQL 和 PostgreSQL
一起建立为三大开源 RDBMS 系统之一。如果看到 MariaDB
的受欢迎程度继续增长,就不足为奇了。

来自:db-engines

1.MySQL

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

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

2.PostgreSQL

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

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

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

3.MongoDB

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

4.Hadoop (HBase)

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

HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是
澳门新葡萄京所有网站 6
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。它最初由
澳门新葡萄京所有网站 7
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)相关的概念来描述数据模型,把
澳门新葡萄京所有网站 8
数据保存为图中的节点以及节点之间的关系。支持ACID事务(原子性、独立性、持久性和一致性)。

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

8.Riak

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

9.Redis

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

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

10.Firebird

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

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

11.Memcached

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

由于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相似的模型。具有高性
澳门新葡萄京所有网站 13
能、可伸缩、可扩展,并且主要集中大规模数据集。

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的数据查
澳门新葡萄京所有网站 14
询,使用它所开发的Web应用程序可同时支持上千人访问。

16.MariaDB

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

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

17.Drizzle

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

18.HyperSQL

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

19.MonetDB

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

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客户机也是可用的。

Via: The Professionals Point

SQL服务器、 MySQL、Oracle、PostgreSQL、MongoDB 等等。众所周…