MySQL 作为一个开源数据库,自从被 Oracle 接管后,其发展前景就一直受到开发社区的关注,其中也有质疑,最近,两位开发者分别发表了选择放弃MySQL 的理由,值得数据库相关人员参考。

  Andy Patrizio 列举了放弃 MySQL 的五个理由,包括:

  1. MySQL 并不像其他关系型数据库那样成熟。MySQL 刚起步时并不是一个 RDBMS,但是后来改变了发展方向,增加了更多的功能。在许多人眼里,其他成熟、历史久的关系型数据库依然比 MySQL 功能更加丰富。如果你想要一个功能丰富的 RDBMS,那么可能会选择 PostgreSQL 或者其他商业产品,比如 Oracle 或者微软 SQL Server。PostgreSQL 代码贡献者 Selena Deckelmann 表示 Postgres 对于需要关系型数据库的 Web 开发者来说是一个正确的选择,随着对 JSON 数据结构和 PLV8 的支持,Postgres 会成为 NoSQL 的默认选择。
  2. MySQL 虽然是开源的,但只是形似。从技术上说,MySQL 是一个开源数据库,但是实际上,开发者已经感觉异样。在 Oracle 的管理下,MySQL 现在有一些专利保护和私有模块。Paula Rooney 表示,MySQL 的活跃只停留在表面,Oracle 控制着开发进程,并且拒绝发布测试用例,安全补丁也受到严格控制。Oracle 是不是应该把 MySQL 奉献给 Apache?其实你有其他开源替代品,比如 MySQL 的一个分支 MariaDB 一致是真正的开源。MariaDB 的所有代码都是在在 GPL、LPGL 或 BSD 协议下发布的,不存在类似 MySQL 5.5 企业版那样的私有模块。
  3. MySQL 的性能表现没有其他竞争者好。MariaDB 博客提供了 MySQL 和 MariaDB 基准测试的结果,后者胜出。PostgreSQL 开发者表示 Heroku Postgres 更有吸引力,“它们是 Postgres 最大的托管环境,自动处理应用的扩展,支持插件……”
  4. MySQL 由 Oracle 掌控,而不是社区驱动。MySQL 自从被 Oracle 接管折后,虽然没有明显改变过方向,但是 Oracle 的存在还是让开发者感到紧张。MySQL 和 MariaDB 地创始人 Michael “Monty” Widenius 表示,最糟糕的是,社区不可能与 Oracle 的开发人员一起参与 MySQL。而且,Oracle 拒绝接受补丁,也不愿意公布路线图。
  5. 放弃 MySQL 的人越来越多。就那今年来说,Redhat、Slackware Linux、OpenSUSE、Wikipedia 都先后宣布放弃 MySQL,采用 MariaDB。Wikimedia 架构师 Asher Feldman 解释说,MariaDB 的优化程序增强功能和 Percona 的 XtraDB 功能设置是作出改变的根本原因。“我们欢迎并支持 MariaDB Foundation 成为一个非盈利组织。”

  而 Rikki Endsley 则列出了选择 MySQL 的五个理由:

  1. MySQL 的投入和创新超过以往。自收购以来,Oracle 已经增加了 MySQL 的开发人员,并提供了更加成熟的工程模式,不再像以前典型的开源项目一样,开发人员散落在世界各地。同时,MySQL 的代码更加模块化,这意味着短期的投入会获得长期的回报。在 MySQL 5.6 中,他们分解了 MySQL 服务器的关键锁——LOCK_open,性能改进了一倍多。此外,MySQL 的存储引擎是 InnoDB,Oracle 在 2005 年收购了 InnoDB。因此,两者可以更好的结合。
  2. MyDQL 产品依然健壮。MariaDB 和其他开源产品抱怨 MySQL 5.5 没有测试用例和某些企业功能是私有模块,但是它依然表现突出,Oracle 花费了两年发布 DMR 给 MySQL 社区来测试和得到反馈。MySQL 5.6 从之前的 4 CPU 线程增长到 64 CPU 线程,还有其他新功能。
  3. MySQL 关注 Web、Cloud 和 Big Data。为了支持云服务,MySQL 的备份做了极大地改进,比如 Global Transaction Identifiers (GTIDs). GTIDs 可以轻松地跟踪和比较 master 和 slave 服务器之间的进度状态。在 2013 年 4 月,Oracle 发布了针对 Hadoop 的 MySQL Applier。Nokia 首先将 MySQL 应用于大数据环境中,包括集中的 Hadoop 集群等等。
  4. MySQL 企业版 5.6 增加了高可用性功能,比如备份等,还有企业版监控器,可以持续的帮你监控数据库并提供最佳实践。还有 Query Analyzer 来监控应用的性能,同时还有丰富的管理工具用于服务器配置和用户管理。
  5. MySQL 的项目越来越多。在收购之前,MySQL 在 25 个国家有 400 名员工,但是存在交流问题。现在 Oracle 组织了工作在一起的新团队,有的小组在做集群化软件,有的在做数据库算法,有的在做备份功能等。

  在不久之前,Infoq 报道过系统可扩展性的问题,其中有两处提到了 MySQL,包括:

  • 用数据库处理队列——MySQL 在很多地方都做得很好,但是在处理应用程序排队方面却并不理想。你的数据库中是不是有类似 JOBS 这样的表,其中有一个状态列,包括“queued”、“working”、“completed”这样的值。如果是,你可能把数据库来处理应用中的队列工作了。这样使用 MySQL 不好,因为会出现锁的问题,还有查找下一个任务时的搜索和扫描任务也会遇到麻烦。建议使用 RabbitMQ 或者 Amazon 的 SQS 方案,因为这些外部服务更容易扩展。
  • 用数据库进行全文搜索——Oracle 提供全文搜索支持,为什么 MySQL 却不能用呢?MySQL确实有这项功能,但是在很多版本中,只能配合老的 MyISAM 存储引擎使用。最好采用 Apache Solr 等经过验证的搜索解决方案,它专门用作搜索,有非常好的库,开发者可以使用多种现代 web 语言进行开发,并且非常容易扩展。只要在网络中增加服务器,或者做整体分布即可。对于前沿技术感兴趣的同学,MySQL 5.6 中提供了 Innodb 的崩溃安全和事务存储引擎。既便如此,还是建议使用外部解决方案,如 Solr,或者 Sphinx 及 MySQL Sphinx SE 插件解决。

  当然,MySQL 依然受到 Google 的青睐,Google 目前正在把 MySQL 做成全面管理的服务纳入云中,其中包括一套用编程方式管理 MySQL 的 JSON API。Google 补充提供了 Cloud SQL,用来扩展自己的云服务。这个“全面管理”的 Web 服务提供了一个可伸缩的 MySQL 数据库,运行在 Google 的基础架构之上。用户可以通过好几种方式连接到云里的 MySQL 实例:命令提示符、API 控制台、管理和报告工具、外部应用、GAE 上的 Java 应用和 Python 应用,还有 GAE 脚本。用户还可以用 mysqldump 导入、导出实例。Google 还提供了一套实验性质的 JSON API,这套 RESTful 接口可以用来对 MySQL 进行编程式管理:创建、删除、重启、从备份恢复、导入/导出,以及各种实例信息的获取。虽然 Google 同时提供了命令行和 API 管理功能,但 MySQL 实例还是被自动管理的,比如跨不同地理位置进行同步或异步的复制、随需伸缩、需要时进行备份和打补丁。

  对于 MySQL 参考架构感兴趣的读者,可以查看“从小型网站到超大规模网站的 MySQL 参考架构”。

选择或者放弃MySQL的理由的更多相关文章

  1. 选择Nodejs的N个理由

    选择Nodejs的N个理由 作者 马德奎 发布于 2014年9月25日 Caleb Madrigal是 来自美国密尔沃基市的一名软件顾问.四年前,他在听说“将JavaScript用作服务器端语言”这样 ...

  2. 选择指定的MySQL数据库

    <?php /******************************** *** 功能:选择指定的MySQL数据库 *********************************/ ? ...

  3. 我为什么放弃MySQL?最终选择了MongoDB

    最近有个项目的功能模块,为了处理方便,需要操作集合类型的数据以及其他原因.考虑再三最终决定放弃使用MySQL,而选择MongoDB. 两个数据库,大家应该都不陌生.他们最大的区别就是MySQL为关系型 ...

  4. 我为什么放弃MySQL?选择了MongoDB

    最近有个项目的功能模块,为了处理方便,需要操作集合类型的数据以及其他原因.考虑再三最终决定放弃使用MySQL,而选择MongoDB. 两个数据库,大家应该都不陌生.他们最大的区别就是MySQL为关系型 ...

  5. Android IOS WebRTC 音视频开发总结(七九)-- WebRTC选择H.264的四大理由

    本文主要介绍WebRTC选择H.264的理由(我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacke ...

  6. 谈谈如何选择合适的MySQL数据类型

    MySQL数据类型选择 一 .选择原则 更小的通常更好:一般情况下选择可以正确存储数据的最小数据类型.越小的数据类型通常更快,占用磁盘,内存和CPU缓存更小. 简单就好:简单的数据类型的操作通常需要更 ...

  7. 数据库对比:选择MariaDB还是MySQL?

    作者 | EverSQL 译者 | 无明 这篇文章的目的主要是比较 MySQL 和 MariaDB 之间的主要相似点和不同点.我们将从性能.安全性和主要功能方面对这两个数据库展开对比,并列出在选择数据 ...

  8. 如何选择合适的MySQL数据类型

    一.MySQL数据类型选择原则 更小的通常更好:一般情况下选择可以正确存储数据的最小数据类型.越小的数据类型通常更快,占用磁盘,内存和CPU缓存更小. 简单就好:简单的数据类型的操作通常需要更少的CP ...

  9. JSP从选择到放弃

    JSP为什么会出现?出现的原因? ①因为在开发web网站时候,返现servlet做界面比较麻烦,于是出现了jsp. 运行在服务端(Java server pages)基于servlet,对servle ...

随机推荐

  1. jquery mouseout事件冒泡解决方法

    在界面中最多使用的是div,如果一个div中包含多个div或img对象时, 针对mouseout鼠标移出事件时,并没有移出div层,但是当移动到div中的img时,也触发了该mouseout事件,这就 ...

  2. POJ2485Highways

    http://poj.org/problem?id=2485 题意 : 这道题和1258很像,但是这道题求的是最小生成树中最大的那条边,所以在函数里处理一下就行了. 思路 : 赤裸裸的最小生成树啊,但 ...

  3. Android Activity生命周期 onSaveInstanceState和onRestoreInstanceState

    当某个activity变得“容易”被系统销毁时,该activity的onSaveInstanceState就会被执行,除非该activity是被用户主动销毁的,例如当用户按BACK键的时候. 注意上面 ...

  4. FileOutputStream和FileInputStream

    package one.string; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFound ...

  5. TYVJ P1016 装箱问题

    P1016 装箱问题 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 太原成成中学第2次模拟赛 第三道 描述 有一个箱子容量为v(正整数,o≤v≤20000) ...

  6. chm文件访问提示:已取消到该网页的导航

    chm文件访问提示:已取消到该网页的导航或不能链接网页 解决方案: 右击chm文件,选择:属性->解除锁定 ,再重新打开文件即可

  7. tomcat version

    Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules   转自:http://jingwang0 ...

  8. shell编程基础(4)case 与 function

    case case语句不用多说和c++里一样,用作选择,但是linux的case语句在语法上和c++还是有些不同的. ###########This is program test the Case# ...

  9. HDU 3308 线段树 最长连续上升子序列 单点更新 区间查询

    题意: T个测试数据 n个数 q个查询 n个数 ( 下标从0开始) Q u v 查询 [u, v ] 区间最长连续上升子序列 U u v 把u位置改成v #include<iostream> ...

  10. cpan 配置

    $ cpan Cpan>o conf init 最主要的是配置镜像地址,试了下,还是香港的靠谱…… cpan中镜像地址列表:http://www.cpan.org/SITES.html 香港的镜 ...