如何用AI技术降噪? QCon 广州“音视频架构实践”专场给你答案! 了解详情
写点什么

选择或者放弃 MySQL 的理由

  • 2013 年 7 月 18 日
  • 本文字数:2587 字

    阅读完需:约 8 分钟

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 参考架构”。

2013 年 7 月 18 日 10:405754
用户头像

发布了 501 篇内容, 共 228.9 次阅读, 收获喜欢 51 次。

关注

评论

发布
暂无评论
发现更多内容

干货 | 如何评估Kubernetes持久化存储方案

焱融科技

Kubernetes 容器 云原生 k8s

一致性hash的理解与实现

dongge

女同事问哪吒什么是 Spring 循环依赖?我...

通天哪吒

话题讨论|作为一名程序员,你下班之后都会做些什么?

InfoQ写作社区官方

写作平台 话题讨论 话题 热门活动

架构师训练营第五周作业

talen

第五周作业

Linuxer

极客大学架构师训练营

计算机中短期学习路线

zack

week05 学习总结 分布式缓存&消息队列&负载

Z冰红茶

游戏夜读 | 关卡设计的难点

game1night

架构师训练营第5周

大丁💸💵💴💶🚀🐟

一次非常有意思的 SQL 优化经历: 从 30248.271s 到 0.001s

Java小咖秀

MySQL 面试 后端 经验分享 优化逻辑

【Python】__name__ 是什么?

Leetao

Python Python基础

很多人毕业多年以后,还是改不掉学生思维

小智

职场 思维方式 高考

SpringBoot 中使用 Filter 的正确姿势

Java课代表

一口气说出 OAuth2.0 的四种授权方式

程序员小富

Java oauth2.0

第5周结构师训练营——作业

jiangnanage

Redis-进阶篇一

多选参数

数据库 redis redis高可用 redis6.0.0 Redis项目

「深度解析」AI训练之数据缓存

焱融科技

人工智能 AI 存储 焱融科技 数据缓存

Ceph数据恢复初探

焱融科技

焱融科技 文件存储 分布式存储 数据恢复 Ceph

这份高考卷,只有程序员能得满分...

程序员生活志

程序员 高考

架构师训练营第五周作业

一剑

让Go“恐慌”的十种方法

博文视点Broadview

Go 语言

你可能还不知道自己无知

小天同学

读书 智能时代 信息噪声 高考

kafka监听mysql实时数据变更

爱java爱自己

MySQL mysql事务

Scrum Master与Project Manager的区别

Mew151

Scrum

啃碎并发(三):Java线程上下文切换

猿灯塔

计算机操作系统基础(十四)---线程同步之条件变量

书旅

php laravel 操作系统 进程 线程’

第 5 周作业:一致性 Hash 算法

姜 某某

Spring核心原理解析

Chank

Java spring

架构师训练营 W5 作业

Kun

极客大学架构师训练营

国内首本CTF赛事技术解析书籍,五年之约,兑现了!

华章IT

网络安全 Web CTF Reverse PWN

「云智公开课」百度沧海·存储

「云智公开课」百度沧海·存储

选择或者放弃MySQL的理由_MySQL_崔康_InfoQ精选文章