热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL是否值得我们选择的正反五个理由_MySQL

MySQL是否值得我们选择的正反五个理由
开源数据库MySQL发展到今天已经具有了非常广泛的用户基础,有人说它对传统的商业数据库发起了强力的挑战,有人说,它在企业环境还有待于证明自己,本文就从这两方面来分别列出MySQL是否值得我们选择的五个理由。

  一、MySQL值得我们选择的五大理由

  列举选择MySQL的理由的最困难的地方在于,如何对这些理由进行排序。这就如同我们经常争论的故事:先有鸡还是先有蛋?

  MySQL的低成本来自于其简单性吗?它的普及性是由于其低成本吗?其实,在MySQL的最“好”与最“不好”的功能之间没有明显的分界线,但它们组合在一起就形成了一副让我们欣赏的作品。

  不管怎么样,市场的结果已经证明MySQL具有性价比高、灵活、广为使用和具有良好支持的特点。下面,我们列举MySQL值得你选择的五个顶尖理由。

  1、普及性

  人们常说“成功孕育成功”,这种说法明显非常适合MySQL的情况。这个开源数据库号称在全世界有超过110万份的完全安装。最近由权威调查机构Evans数据公司进行的一项调查显示,MySQL在过去两年已经获得了25%的市场份额。该调查公司还预测,相比其他的开源数据库和闭源数据库,越来越多的开发者将继续选择MySQL。Evans的总裁John Andrews表示,用户对MySQL和其他开源数据库的评价正在赶上甚至超过很多专有商业数据库软件。

  由于MySQL数据库已经如此普及,对企业来说它无疑是一个更好的选择。

  业界普遍的声音认为:“MySQL是一个可靠的数据库系统,无论是在嵌入式或大型群集系统的部署中,还是在基于Web的应用程序领域,用户时常会发现其实自己并不是第一个选用MySQL数据库的先驱者。”

  MySQL在业界的流行所带来的另一个好处是,人们总可以很轻松地发现本行业的解决方案。厂商都希望他们的开发工具和应用程序框架可以与MySQL数据库兼容,因为每个人都在使用它。MySQL是开源LAMP组合的一个标准组件:Linux、Apache、MySQL和Perl/PHP。根据Evans的调查,LAMP组合的迅速推广很大程度上代表着MySQL的被广泛接受。根据Evans的调查报告,“MySQL的使用在未来将继续呈成长趋势。”

  2、简单性

  与其他数据库相比,MySQL易学易用。

  你不用花费很多时间和金钱来培训现有的职工,或者去花大价钱雇用那些拥有各种证书的开发者。因为MySQL的维护和管理在很大程度上是“傻瓜型”的,这直接导致了人力成本上的节省,MySQL的用户Spacemonkey实验室的首席执行官Mitch Pirtle如此表示:“维护MySQL使得你不需要一个年薪15万美元的DBA,而且使用它开发程序也是非常简单的。”

  “对于MySQL数据库,无论是在开发方面,还是支持方面,现在有大量强大的工具可以选择。每一个新手开发者可以轻松地使用MySQL数据库进行开发。甚至一个有经验的Windows管理者也可以轻松部署并开始学习它,而你不需投入一分钱来了解这个数据库。

  对于IT经理来说,令他们喜欢的MySQL的简单性还有另一方面。MySQL可以运行的更快速。某些人或许会说MySQL缺少了一些人们想要的功能,但是MySQL的支持者们却认为,MySQL所保留的功能都是精华,并且是你部署、配置和维护这个数据库所必不可少的一些功能。

  “通过有能力的DBA的一个简单计划,MySQL可以达到令人难以想像的运行速度,”一位资深DBA如此表示。MySQL中没有多余的功能来拖累CPU或占用内存。如果你需要额外的功能的话,MySQL的普及性实际上可以让你发现总有一个厂商会提供准确的解决方案,而这个方案会满足你的需要和需求。

  3、低成本

  MySQL数据库归MySQL AB公司所有,但是这个软件是开源的,有一个社区版可以免费下载。稍俱常识的新入门者都可以轻松实现在一个常见硬件上安装和配置MySQL。MySQL对硬件的较低要求是其最大的优势之一,不过需要注意的是:内存越多越好,因为所有的重要数据存储都在内存中完成。一个免费的数据库意味着,更多珍贵的资金可以用于其他业务的启动,诸如市场、广告或调研和开发等。

  即使对于MySQL的商业化的企业版来说,也没有高昂的许可证成本,当你将其与像甲骨文和微软之类的大型专有商业数据库比较的话,你会发现实际上MySQL可以更少地占用资金,前者的每CPU许可费用一般从4000美元到25000美元不等,而MySQL企业版的支持和维护成本就更低了,只需每年花费2000到5000美元。无论你是自掏腰包来创建一个新兴公司,还是得到了风险投资商的赞助,使用MySQL都可以降低你所需要的人力成本,正如前文所提到的,MySQL易学、易部署、易管理和易维护。

  对于现有业务,可以轻松移植到MySQL。当你需要替换掉老的硬件,当你需要削减历史遗留下的老系统的时候,选用MySQL对于财务部门来说更具吸引力。MySQL部署迅速,因此移植过程不会导致生产中断。而且,较短的学习曲线可以让你的系统管理员迅速掌握它的运行和维护。而且,MySQL的易于维护和管理意味着目前的职员可以处理目前的工作
4、良好的支持

  MySQL的双许可模式意味着,那些希望对数据库具有额外控制的人可以直接从数据库厂商那儿得到帮助。MySQL AB公司提供了支持和维护服务,诸如代码更新和补丁修补服务等,每年订阅费为大约3000美元。

通过支付一定费用,客户可以得到优先的24/7支持,访问内容丰富的在线知识库和联系一个专门的技术负责经理。

  对免费版的用户也具有充足的支持服务。在dev.mysql.com上,一个大型的强大社区用户和开发者可以讨论所有关于MySQL的事情。这个站点拥有博客、指南、视频、技术交流会、白皮书和论坛等方式的交流。你碰到的问题可能已经在社区中被别的人已经问过,即使没有,你也可以提出问题或通过Google来搜索答案。社区的相关负责人士:“MySQL社区是活跃、友好和内容渊博的。”

  5、灵活性和可扩展性

  由于在MySQL中有如此众多的额外功能可选,诸如存储引擎等,你可以选择最适合你公司的一个,或者尝试选用多个引擎。MySQL开始非常小巧,但是可以随着公司的成长而不断地变强大。MySQL AB公司的一个高级开发者者表示,“这个特点使得MySQL可以根据你当前的系统的需要来进行调整。”

  “MySQL实际上是一个数据库家族,你可以从选择一个并将其配置成可以满足你的大多数情况,”开源顾问公司Ethiqa的总裁如此表示,“因此,你可以在开始的时候选择一个小巧的版本产品,以后再根据需要来对其进行性能或大小上的扩展。”

  你可以配置MySQL运行在微小的嵌入式应用程序中,处理的数据可能不足1Mb——而你也可以用它来处理数Tb的数据。MySQL获得这种可扩展性的途径之一是通过一个人们所熟知的存储过程,这是一个运行在程序之外的微型、预编译程序。这些过程被存储和运行在数据库服务器上,以减少在客户端的处理过程,从而最大限度地提高了处理能力,因为通常情况下数据库服务器会运行地更快。存储过程并不是MySQL独有的功能,但是这个最近新增加的功能使得这个数据库比以前更具吸引力了。

  MySQL已经为支持所有最流行的Web 2.0语言做好了准备,诸如Ruby、Ajax等,当然还有PHP。有的业界分析师说过,“每一个Web 2.0公司实质上就是一个数据库公司。”由于MySQL已经是一个运行了众多知名Web 2.0网站的数据,包括Craigslist、Digg、Wikipedia和Google等,或许我们可以说每一个Web 2.0公司实质上是一个使用MySQL数据库的公司。

  二、不使用MySQL的五个理由

  在我们工作的过程中,经常能听到很多不使用MySQL的理由,虽然其中有一些是对MySQL的误解,不过同样也有一些是合情合理的。下面我将描述五个不使用MySQL的响亮理由。

  首先我们要知道,或许有一项技术存在很多理由让我们可以选择使用它,但是让我们不使用它往往只要有一个理由就足够了。选择一个软件产品同样也是如此。

  1、MySQL的授权方式

  MySQL采用双重授权(Dual Licensed),它们是GPL和MySQL AB制定的商业许可协议。

  如果你在一个遵循GPL的自由(开源)项目中使用MySQL,那么你可以遵循GPL协议使用MySQL。然而,如果你的项目不是在GPL协议下的话,你必须为使用MySQL来支付许可费用,或者你可能因为这个因素而将你的项目改为遵循GPL,那么你需要处理因此带来的更多的支持工作,这有可能会带来成本上的提高。在这种情况下,一些软件发行商可能倾向于选择别的开源数据库,例如遵循BSD授权的PostgreSQL。

  2、产品成熟性

  到2009年,甲骨文的数据库Oracle已经诞生了30周年,而MySQL却连它的一半时间都没有。微软的SQL Server仅仅比MySQL大两年,但是SQL Server的发布是建立在Sybase的基础上,那时候Sybase已经诞生了6年的时间。至于其他值得关注的开源数据库,PostgreSQL将在2009年达到20岁的生日。虽然MySQL并不是市场上最年轻的数据库,但是却有更多成熟的数据库可供我们选择。

  当然,或许这并不是我们拒绝MySQL的一个有说服力的理由,但是对于一些比较守旧的IT经理来说,在为一些关键业务选择平台的时候,平台的成熟性却是必须要考虑的一个因素,在这一点上,MySQL无疑毫无优势。

3、功能设置成熟性

  要想在MySQL与其他数据库之间进行一个面面俱到的功能设置对比,并不是一件容易的事情。随着新软件版本的发布或一些补丁的推出,曾经的功能列表可能会迅速变得过时了。而且,有些功能对有的应用程序非常重要,但是对别的应用程序则不一定。


  有的时候,一些缺失的功能可以通过别的办法来实现,例如,在MySQL 4.1以前,你可以通过使用join方法来替代子查询的功能。在MySQL 5.0中,大多数关系型数据库所要求的功能已经都具备,但是我们却有理由怀疑这些功能在MySQL 5.0中的成熟性。充其量它们在MySQL中被支持的时间也就一年左右,而在其他关系型数据库中则已经存在了近10年的时间。

  4、认证的作用

  尽管MySQL也有一个认证培训项目,但是它的培训却要比Oracle或MS-SQL相差很远。尽管有的使用MySQL的用户表示,MySQL很容易上手,但是对于具有企业级数据库需求的用户来说,无疑希望员工得到系统、有深度的培训,显然MySQL在这一点上还做得很不够。

  一个相关的问题是第三方支持的资格问题,尽管直接来自厂商的支持和服务可以一定程度上减缓这个问题,但是,对于有的企业来说,通过强有力的本地化支持显然更有吸引力。

  5、关于可扩展的看法

  关于这个理由我把它放在最后一位。在很多业界专家中有一个相当一致的观点:MySQL不能很好的扩展。关于这点可能有很大的分歧,争论的焦点主要集中于水平可扩展性和垂直可扩展性上。MySQL则更倾向于垂直可扩展性。

  据我的观察,现在有一个趋势,那些经过正式培训的数据库管理员DBA更倾向于选择一个专有关系数据库,例如Oracle。对于一些具有专门数据库管理员的比较大的环境来说,MySQL很难得到宠爱,这时候,关于MySQL是否真的具有良好的可扩展性的争论已经没有意义。

  不可否认,MySQL也是一个很好的关系型数据库,或许在技术上它与其他领先的关系数据库相差并不大,或不具有劣势。但是,对于一些企业环境来说,MySQL显然不具有优势。

推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
author-avatar
杀你哥_52544
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有