选择或者放弃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 ...
随机推荐
- 由CHAR(2)引发的BUG
我们在设计数据库标志位字段时,为考虑其扩展性,一般会设置为CHAR(2),例如 FLAG CHAR(2),这样我们就需要注意了,如果你给字段 FLAG赋值为‘0’,它在数据库中的真实情况是‘0+空格’ ...
- C Primer Plus之C预处理器和C库
编译程序前,先由预处理器检查程序(因此称为预处理器).根据程序中使用的预处理器指令,预处理器用符号缩略语所代表的内容替换程序中的缩略语. 预处理器不能理解C,它一般是接受一些文件并将其转换成其他文本. ...
- Thread的第五天学习
1.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如:卖票系统就可以这么做! package com.thread.demo; publi ...
- hdu 1426 Sudoku Killer
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1426 #include<stdio.h> #include<math.h> #in ...
- [topcoder]PackingBallsDiv2
http://community.topcoder.com/stat?c=problem_statement&pm=12995 简单题 class PackingBallsDiv2 { pub ...
- VIM树状文件列表NERDTree
下载和配置 NERDTree插件的官方地址如下,可以从这里获取最新的版本 https://github.com/scrooloose/nerdtree 下载zip安装包 或者使用下面官网源文件安装方法 ...
- 31. Next Permutation
题目: Implement next permutation, which rearranges numbers into the lexicographically next greater per ...
- Android LayoutInflater.from(context).inflate
在应用中自定义一个view,需要获取这个view的布局,需要用到 (LinearLayout) LayoutInflater.from(context).inflate(R.layout.conten ...
- 如何创建支持Eclipse IDE的Maven项目
使用Maven创建的项目是不支持任何IDE的,不能导入IDE中,因为项目格式都不符合特定IDE的格式要求,那么如何创建符合IDE要求的项目呢? 1.使用mvn eclipse:eclipse 命令把项 ...
- 《Linux/Unix系统编程手册》读书笔记1
<Linux/Unix系统编程手册>读书笔记 目录 最近这一个月在看<Linux/Unix系统编程手册>,在学习关于Linux的系统编程.之前学习Linux的时候就打算写关于L ...