选择或者放弃MySQL的理由
MySQL 作为一个开源数据库,自从被 Oracle 接管后,其发展前景就一直受到开发社区的关注,其中也有质疑,最近,两位开发者分别发表了选择和放弃MySQL 的理由,值得数据库相关人员参考。
Andy Patrizio 列举了放弃 MySQL 的五个理由,包括:
- MySQL 并不像其他关系型数据库那样成熟。MySQL 刚起步时并不是一个 RDBMS,但是后来改变了发展方向,增加了更多的功能。在许多人眼里,其他成熟、历史久的关系型数据库依然比 MySQL 功能更加丰富。如果你想要一个功能丰富的 RDBMS,那么可能会选择 PostgreSQL 或者其他商业产品,比如 Oracle 或者微软 SQL Server。PostgreSQL 代码贡献者 Selena Deckelmann 表示 Postgres 对于需要关系型数据库的 Web 开发者来说是一个正确的选择,随着对 JSON 数据结构和 PLV8 的支持,Postgres 会成为 NoSQL 的默认选择。
- MySQL 虽然是开源的,但只是形似。从技术上说,MySQL 是一个开源数据库,但是实际上,开发者已经感觉异样。在 Oracle 的管理下,MySQL 现在有一些专利保护和私有模块。Paula Rooney 表示,MySQL 的活跃只停留在表面,Oracle 控制着开发进程,并且拒绝发布测试用例,安全补丁也受到严格控制。Oracle 是不是应该把 MySQL 奉献给 Apache?其实你有其他开源替代品,比如 MySQL 的一个分支 MariaDB 一致是真正的开源。MariaDB 的所有代码都是在在 GPL、LPGL 或 BSD 协议下发布的,不存在类似 MySQL 5.5 企业版那样的私有模块。
- MySQL 的性能表现没有其他竞争者好。MariaDB 博客提供了 MySQL 和 MariaDB 基准测试的结果,后者胜出。PostgreSQL 开发者表示 Heroku Postgres 更有吸引力,“它们是 Postgres 最大的托管环境,自动处理应用的扩展,支持插件……”
- MySQL 由 Oracle 掌控,而不是社区驱动。MySQL 自从被 Oracle 接管折后,虽然没有明显改变过方向,但是 Oracle 的存在还是让开发者感到紧张。MySQL 和 MariaDB 地创始人 Michael “Monty” Widenius 表示,最糟糕的是,社区不可能与 Oracle 的开发人员一起参与 MySQL。而且,Oracle 拒绝接受补丁,也不愿意公布路线图。
- 放弃 MySQL 的人越来越多。就那今年来说,Redhat、Slackware Linux、OpenSUSE、Wikipedia 都先后宣布放弃 MySQL,采用 MariaDB。Wikimedia 架构师 Asher Feldman 解释说,MariaDB 的优化程序增强功能和 Percona 的 XtraDB 功能设置是作出改变的根本原因。“我们欢迎并支持 MariaDB Foundation 成为一个非盈利组织。”
而 Rikki Endsley 则列出了选择 MySQL 的五个理由:
- MySQL 的投入和创新超过以往。自收购以来,Oracle 已经增加了 MySQL 的开发人员,并提供了更加成熟的工程模式,不再像以前典型的开源项目一样,开发人员散落在世界各地。同时,MySQL 的代码更加模块化,这意味着短期的投入会获得长期的回报。在 MySQL 5.6 中,他们分解了 MySQL 服务器的关键锁——LOCK_open,性能改进了一倍多。此外,MySQL 的存储引擎是 InnoDB,Oracle 在 2005 年收购了 InnoDB。因此,两者可以更好的结合。
- MyDQL 产品依然健壮。MariaDB 和其他开源产品抱怨 MySQL 5.5 没有测试用例和某些企业功能是私有模块,但是它依然表现突出,Oracle 花费了两年发布 DMR 给 MySQL 社区来测试和得到反馈。MySQL 5.6 从之前的 4 CPU 线程增长到 64 CPU 线程,还有其他新功能。
- MySQL 关注 Web、Cloud 和 Big Data。为了支持云服务,MySQL 的备份做了极大地改进,比如 Global Transaction Identifiers (GTIDs). GTIDs 可以轻松地跟踪和比较 master 和 slave 服务器之间的进度状态。在 2013 年 4 月,Oracle 发布了针对 Hadoop 的 MySQL Applier。Nokia 首先将 MySQL 应用于大数据环境中,包括集中的 Hadoop 集群等等。
- MySQL 企业版 5.6 增加了高可用性功能,比如备份等,还有企业版监控器,可以持续的帮你监控数据库并提供最佳实践。还有 Query Analyzer 来监控应用的性能,同时还有丰富的管理工具用于服务器配置和用户管理。
- 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的理由的更多相关文章
- 选择Nodejs的N个理由
选择Nodejs的N个理由 作者 马德奎 发布于 2014年9月25日 Caleb Madrigal是 来自美国密尔沃基市的一名软件顾问.四年前,他在听说“将JavaScript用作服务器端语言”这样 ...
- 选择指定的MySQL数据库
<?php /******************************** *** 功能:选择指定的MySQL数据库 *********************************/ ? ...
- 我为什么放弃MySQL?最终选择了MongoDB
最近有个项目的功能模块,为了处理方便,需要操作集合类型的数据以及其他原因.考虑再三最终决定放弃使用MySQL,而选择MongoDB. 两个数据库,大家应该都不陌生.他们最大的区别就是MySQL为关系型 ...
- 我为什么放弃MySQL?选择了MongoDB
最近有个项目的功能模块,为了处理方便,需要操作集合类型的数据以及其他原因.考虑再三最终决定放弃使用MySQL,而选择MongoDB. 两个数据库,大家应该都不陌生.他们最大的区别就是MySQL为关系型 ...
- Android IOS WebRTC 音视频开发总结(七九)-- WebRTC选择H.264的四大理由
本文主要介绍WebRTC选择H.264的理由(我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacke ...
- 谈谈如何选择合适的MySQL数据类型
MySQL数据类型选择 一 .选择原则 更小的通常更好:一般情况下选择可以正确存储数据的最小数据类型.越小的数据类型通常更快,占用磁盘,内存和CPU缓存更小. 简单就好:简单的数据类型的操作通常需要更 ...
- 数据库对比:选择MariaDB还是MySQL?
作者 | EverSQL 译者 | 无明 这篇文章的目的主要是比较 MySQL 和 MariaDB 之间的主要相似点和不同点.我们将从性能.安全性和主要功能方面对这两个数据库展开对比,并列出在选择数据 ...
- 如何选择合适的MySQL数据类型
一.MySQL数据类型选择原则 更小的通常更好:一般情况下选择可以正确存储数据的最小数据类型.越小的数据类型通常更快,占用磁盘,内存和CPU缓存更小. 简单就好:简单的数据类型的操作通常需要更少的CP ...
- JSP从选择到放弃
JSP为什么会出现?出现的原因? ①因为在开发web网站时候,返现servlet做界面比较麻烦,于是出现了jsp. 运行在服务端(Java server pages)基于servlet,对servle ...
随机推荐
- Javascript中appendChilid()内涵
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- lintcode 中等题:搜索旋转排序数组II
题目 搜索旋转排序数组 II 跟进“搜索旋转排序数组”,假如有重复元素又将如何? 是否会影响运行时间复杂度? 如何影响? 为何会影响? 写出一个函数判断给定的目标值是否出现在数组中. 样例 给出[3, ...
- 【mysql的编程专题】触发器
类似tp里面的数据模型回调接口,在数据表增删改的前或后触发执行其他的预订的sql; 一个触发器要具备4要素: 1.监视地点 -- 要执行触发器的表 2.监视事件 -- 由什么DML事件来牵引 3.触发 ...
- VC程序查错之内存访问异常
作者:langouster 先来看下面这张图,相信很多程序员都见过类似. ---------------------------test1.exe - 应用程序错误------------------ ...
- Photoshop:热气球的制作方法
大致流程: 1.做等宽色块,加内发光 2.变形->膨化,弯曲20% 3.加高光和投影层,增加立体感 4.制作多列,合并后,滤镜->扭曲->球面化100%2次(注意放在在正方形画布中间 ...
- JavaScript DOM编程基础精华03(动态设置,层的操作,性能问题)
代码是否需要放置到onload中 //如果js代码需要操作页面上的元素,则将该代码放到onload里面. //因为当页面加载完毕之后页面上才会有相关的元素 //如果js代码中没有操作 ...
- Spring的父子容器问题
在ssm框架搭建的时候 配置了一个Spring容器,又配置了一个前端控制器 <!-- 初始化spring容器 --> <context-param> <param-nam ...
- Android LayoutInflater.inflate()的参数及其用法
很多人在网上问LayoutInflater类的用法,以及inflate()方法参数的含义,现解释如下: inflate()的作用就是将一个用xml定义的布局文件查找出来,注意与findViewById ...
- nginx的location配置
http://blog.sina.com.cn/s/blog_97688f8e0100zws5.html http://blog.csdn.net/yanook/article/details/100 ...
- Altium Designer哪里下载和导入元件库_图文教程
http://jingyan.baidu.com/article/46650658064621f549e5f88f.html