Java Solaris 加入 SDN 参与讨论 我的社区 注册说明
 
 
 
 
 
 
Java API 文档中文版
Sun 与 MySQL:将为开发人员带来什么?
 
By Rick Palkovic, 3/9/08  

大多数业务分析师都对 Sun Microsystems 宣告收购开源数据库提供商 MySQL AB 拍手称快。除了 MySQL 为 Sun 带来的商业价值之外,许多开发人员都想知道这次收购的最终目的是什么。

开发人员对一款成熟产品的期望在于:易于在开发过程中使用、易于扩展到企业领域,并且生命周期足够长(足够回报掌握技术所需的时间投资)。一些 MySQL 社区成员想知道,这个合并企业是否能够继续提供优秀的开源产品,以及社区是否能够长盛不衰。

MySQL:开源首选

MySQL 引领着开源数据库市场,种种迹象表明,被 Sun 收购后的 MySQL 的未来离不开开源社区。根据 MySQL 的 CEO Mårten Mickos 的说法,Sun 已经承诺免费提供开源软件,这促进了合作的成功。Jonathan Schwartz 曾在他的 blog 中写道,在 4 年谈判期间,MySQL 的领导层已经看到,Sun 曾经对开放系统的承诺已经延伸到开源软件,Sun 将会成为 MySQL 社区繁衍的家园。Java 技术和 MySQL 都获得了 GPL Version 2 许可,并计划在 GPL Version 3 许可完善之后获得该许可。

对于 MySQL 开发人员来说,几乎没什么变化。但是 MySQL Enterprise 客户期望获得一个 Fortune 500 公司的更大的服务和支持。随着 MySQL 被更加广泛地采用,所有用户都将体验到更快的产品革新、更严格的测试,以及更出色的 MySQL 产品。

MySQL 和 Sun 软件栈

对 Sun 的开源承诺持怀疑态度者也许会害怕被强制(哪怕仅有一点)采用其他 Sun 产品 —— 特别是 Solaris OS,它本身也正经历着开源的复兴。Sun 这方面的事件,包括与 Intel、Microsoft、Oracle 和其他竞争者的合作关系,都表明 Sun 将会适应市场,而不是试图向开发人员强加任何类型的软件体制。

缩写词 LAMP(Linux 操作系统、Apache web 服务器、MySQL 数据库服务器、PHP/Perl/Python 语言)描述了开源开发人员喜爱的软件栈。栈里的每个元素都有备选方案,包括开源的和私有的,这使得 LAMP 作为描述性缩写词并没有多大意义。例如,在 MySQL 的每天 50,000 次下载量中,多数二进制文件是针对 Windows 操作系统的 —— 用于 WAMP 开发人员,或许?类似数量被应用到了 Sun 发起的其他开源工具和产品上,尤其是 GlassFish 应用服务器。在决定侵入性地抢占 LAMP 开发人员市场的同时,Sun 正将它的工具和软件移植到每一个流行平台。

热衷于 Sun 软件的开发人员同样想知道 MySQL 是否会取代其软件栈中的数据库备选方案,比如 PostgreSQL 和 JavaDB。此外,Sun 已经申明将支持开发人员想要引入数据库的任何流行管理软件,包括 Apache Derby。用 PostgreSQL 核心团队成员 Josh Berkus 的话说,“Sun 不会放弃对 PostgreSQL 的支持。Sun 的目标是成为首屈一指的数据中心开发商,而不是首屈一指的 MySQL 开发商……。在数据库领域中,还没有哪个团体的规模适合这一位置”。

如果您已经在 web 应用程序软件栈中使用 MySQL,那么 MySQL 将仍然是您正在使用的免费、基于社区的数据库,无论操作系统、web 服务器或语言是什么。当您希望扩展到企业级别的性能时,Sun 将会提供您需要的支持和服务。如果您热衷于另一个数据库,那么期望它与 Sun 产品友好合作吧。

MySQL 详细信息

如果在开发 web 应用程序期间没有尝试过 MySQL 或其他 Sun 产品,是时候重新考虑一下了。

尽管没有通用的数据库,MySQL 的流行也显示了它是多么接近这个目标。它的适应性和易用性很大程度上归因于其架构和伸缩能力。此架构帮助解释了为何 MySQL 是全世界超过 1100 万活动安装的选择,到目前为止,已经有 超过 1 亿份拷贝 被下载或发布。在写作本文时,每个 2 秒就会有一个新的 MySQL 副本被下载。

向外扩展能力

许多 MySQL 用户使用的成功策略被称为向外扩展。这个术语引用了一种架构设计,通过跨不同物理服务器复制数据,在常用硬件上分离并分散数据库工作负荷。此策略与向更少数量的独立服务器添加更多 CPU 功率、存储和内存相反 —— 后者有时称为向上扩展。经过 许多流量巨大的 MySQL web 站点 证实,向外扩展策略通常能够提供更好的容错和总体性能,降低成本。这些站点已经使用该方法实现了较长的运行时间。

图 1 演示了向外扩展架构。

向外扩展架构
图 1. 向外扩展架构
单击 此处 查看大图。

 

在典型场景中,用户在面向客户的 web 或应用服务器上初始化会话。这些服务器通过负载调度器(load balancer)或其他控制请求的应用程序逻辑,根据需要向 MySQL 数据库服务器发送请求。当一个请求导致服务器向数据库写入数据时,服务器将其数据复制到其他 MySQL 中,以保持这些数据对于后续查询的最新性。

在高可用性、高容量设置中,任何 MySQL 服务器中的故障通常通过以下方式纠正:将故障服务器离线,然后将其转储到另一个服务器。几分钟之内,就可以将数据库复制到另一个服务器上,而且查询服务可以继续进行。常用服务器的低成本使得这种换出策略具有很高的成本效益。

存储引擎架构

存储引擎架构使得 MySQL 在数据库领域独树一帜。特别有趣的是可插入的存储引擎层,如图 2 所示。

存储引擎架构
图 2. 存储引擎架构
单击 此处 查看大图。

 

在存储引擎层之上,MySQL 具有任何数据库管理系统所具有的功能。可以通过一组连接器查询数据库。服务器中的一个连接池提供了身份验证,并管理线程、连接、内存和缓存。服务器中的模块解析查询、优化访问路径等等。

在此层下面,可以向架构插入多个存储引擎。存储引擎是数据库服务器的组件,在物理服务器层对被维护的底层数据执行操作。可插入的存储引擎架构可以将一组标准的管理和支持服务应用于所有底层存储引擎。其结果相当于一个管理员在管理多个数据库。

一些存储引擎(比如用于归档的存储引擎)本质上是非事务型的。这些存储引擎能够非常有效地插入和读取数据。其他存储引擎会在需要事务型操作时针对效率进行调优,还有一些存储引擎通过集群提供高可用性。这些存储引擎避免了专用系统的固有开销,这些系统通常伴随着表架构的事务性开销,甚至不需表架构时也是如此。

例如,一个主要用于查找数据的站点可以避免所有事务性开销,只需使用 MyISAM 存储引擎即可,这是 MySQL 的默认引擎。MyISAM 引擎提供了高速查询和插入功能,是非事务性的,还提供了表级别的锁定,支持索引。它是一个非常适合于传统数据仓库的引擎。

MySQL 数据库服务器附带提供了一组内部存储引擎。外部存储引擎针对特定产品和条件进行了性能优化,独立软件开发商和 MySQL 社区都有提供。

多个存储引擎可以提供多个数据库的性能。如果从其他数据库迁移到 MySQL,无需更改应用程序与数据库服务器交互的方式 —— SQL 代码是相同的。但是在 MySQL 服务器内部,可以挑选满足应用程序需求的存储引擎。

例如,如果发现您需要一个事务性数据库,可以使用一条语句将数据库由非事务性系统转换为事务性系统。如果随后发现需要一个数据仓库,使用一个命令就能够拥有一个针对数据检索进行调优的、面向列的、功能强大的数据库。如果您的主要活动是采集和存储数据,可以使用 Archive 存储引擎有效地处理大量插入,并压缩数据。

高可用性

ISP 和主流企业也许发现,MySQL 服务器的复制特性足够满足他们的高可用性需求。

要提高可用性,客户可以添加存储区域网络(Storage Area Network,SAN)技术或分布式复制块设备(Distributed Replicated Block Device,DRBC),这是一种在 MySQL 服务器之间进行同步复制的 MySQL 技术。MySQL Cluster 提供了最高的可用性 —— “五个九” 或者 99.999%,它可以在数据节点之间进行同步复制、自动故障恢复,以及在集群之间复制。

MySQL 能够为大多数流量巨大的站点提供最高级别的性能,再加上其在产品开发中的易用性,促进了 MySQL 的广泛流行。

如果它是免费的,为何要付费?

25% 的 MySQL 用户是开发人员。在许多小型企业(特别是刚成立的企业)中,开发人员也是数据库管理员。随着公司组件成熟、规模和效益不断增长,关键人员发现还有比数据库管理更好的活动值得他们去花时间。高可靠性和人员配备费用变得越来越重要。现在,购买 MySQL Enterprise 能够带来更好的经济效益,因为它提供了监控和支持功能。

注意,MySQL 的社区版本具有与 MySQL Enterprise 版完全相同的特性,但是 Enterprise 版本更新更加频繁。这些特性包括 GUI 管理工具、用于从其他服务器迁移数据的迁移工具集、针对 JDBC 和 ODBC 的连接器等等。社区成员也可以免费访问文档和用户论坛。可以免费使用 MySQL 进行开发,而且毫无疑问,你将开始扩展开发并转向付费的 MySQL 订阅版本。

结束语

借助针对 Java 技术的开源模型,Solaris 操作系统和其他特性使 Sun Microsystems 成为世界上对开源社区 贡献最大的团体。MySQL 已经是全球最流行的开源数据库,它给 Sun的软件栈带来了蓬勃生机。借助 Sun 的强大影响和丰富资源,MySQL 必将被越来越多的用户采用。Sun、MySQL、开发人员社区,以及各种规模的企业客户都会从中受益。

更多信息