将数据库从 MySQL 迁移到 IBM Informix Innovator-C Edition,第 1 部分: MySQL 和 IBM Informix Innovator-C Edition 的比较

如果您是 MySQL 用户,且正在考虑如何使用 MySQL 满足未来的业务需求,那么您完全有理由考虑使用 IBM® Informix® Innovator-C Edition 替代 MySQL。本文简要介绍这两个产品,重点描述它们的关键区别。通过阅读本文您会了解到,对于您的业务这两个产品分别有什么优势和不足。

Sanjit Chakraborty, 顾问软件工程师, IBM

Sanjit Chakraborty 是 IBM Informix 技术支持部 Down System and Diagnostics Team 的成员,该团队负责处理关键客户问题和开发供 Technical Support Organization 使用的支持工具。Sanjit 在信息技术行业的工作时间超过 15 年,担任过各种职务。他是一名 IBM 认证的 IDS 和 DB2 系统管理员,并且是指定的存档主题专家。Sanjit 开发了若干 Informix 特性和 Down System Support 工具。他还是一名作家兼技术审校,其作品包括许多关于各种 Informix 主题的技术文章、教程和培训课程资料。



2011 年 5 月 30 日

免费下载:IBM® Informix® 11.7 试用版(包括 Ultimate Edition、Developer Edition 和 Innovator-C Edition)
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

简介

对于为何选择 MySQL 作为数据库服务器,经常提到的两个原因是:“简便易用” 和 “免费”。但是,您知道 IBM Informix 提供了一个具有上述品质甚至更多优势的版本吗?Informix Innovator-C Edition 是一个 Informix 数据库服务器,提供强大可靠的数据库环境,能够支持要求很高的生产工作负载。这个版本提供一些广泛使用的数据处理功能(包括分布式数据复制),还提供一些选项来实现持续数据可用性,这些选项包括集群化和最近才引入的灵活的 Informix 网格。

Informix Innovator-C Edition 为构建随需应变 (on-demand) 解决方案提供了一个坚实基础,这些解决方案支持实现大容量在线事务处理 (OLTP)、几乎为零的事务响应时间、高可靠性、低管理成本以及 Informix 服务器远程管理。Informix Innovator-C Edition 是一个简便易用的 “专业级” 数据库服务器,支持广泛的平台,比如最流行的 Linux® 和 Microsoft® Windows® 平台版本。最让人动心的是,Informix Innovator-C Edition 允许免费下载和部署!但如果需要再分发,则需要单独的许可协议。Informix Innovator-C Edition 现在允许下载,用于开发、测试和终端用户生产工作负载,无需任何许可费用。

从特性角度看,MySQL 5.1 和 Informix Innovator-C Edition 在很多方面都很相似,包括支持的数据类型、存储过程、函数、高可用性解决方案、热备份、冷备份、全文本搜索、索引、视图等等。MySQL 和 Informix Innovator-C Edition 在其基于服务器线程的专用架构方面也很相似。这两个数据库系统都支持主键,以及支持加速查询和约束输入的键索引。就其基于成本的优化器和复杂的查询优化,以及其高并发性和对大型 SMP 机器的利用等方面而言,Informix 略胜一筹。Informix 还在集群化、数据复制和基于网格的计算方面领先一步。


常见的重要区别

除了 MySQL 是开源产品之外,这两个数据库产品还有哪些区别,哪一个更适合您?

开源与专利

比较这两个数据库时,它们的首要区别是 MySQL 是开源产品,而 Informix 是专利产品。MySQL 是一个可扩展的开放式存储数据库引擎。MySQL 起源于开源传统,其中,产品开发是一个 “自己动手(do-it-yourself)” 和 “自我发展(roll-your-own)” 模型,而 Informix 提供许多已命名和可靠的路径来解决具体问题。但是,Informix 和 MySQL 都能与若干编程语言和其他基于 web 的技术无缝集成。

许可

与流行的观点不同的是,MySQL 服务器并非总是免费的。将 MySQL 用于商业用途需要许可费用。Oracle 收购了 MySQL 之后,MySQL 的许可费用的前景尚不确定。Oracle 最近警告消费者,在不久的将来有可能会提高价格,但未说明具体数额;Oracle 还计划取消两个比较便宜的低级许可计划,这两个计划许可的数据库适用于预算较少的小型企业。请参阅 参考资料 部分,了解关于可能的 MySQL 许可成本上升的新闻。

Informix 产品系列同时提供 “收费” 和 “免费” 版本。这些版本在价格和功能方面进行了定制,能够满足各种规模的公司的广泛需求。Informix 收费版本提供一些子功能定价模型,允许灵活购买支持数据服务需求所需的功能,而不必担心安装 Informix 的硬件的总处理能力。

无论使用哪个版本,Informix 都提供一个动态伸缩架构,该架构提供无与伦比的性能、可靠性、易用性和可用性。在某些情况下,特别是对于免费版本而言,可用的伸缩性和功能的深度和广度会受到一些限制。但是,Informix Innovator-C Edition 是一个功能齐备的 Informix 数据服务器,提供强大可靠的数据库环境,以及所需的大部分使用最广泛的数据处理功能。


技术区别

开源/专利属性本身就是有些用户选择一种数据库服务器而不是另一种的首要原因。但是,在技术层面上,有一些区别。例如,MySQL 不提供全面的外键支持,这意味着它不具有 Informix 的所有关系特性,而 Informix 是一个完整的关系数据库。有些 MySQL 版本还缺乏完整的存储过程支持 — 意味着不支持事务,这是 MyISAM 系统的最大缺点。

性能

在性能方面,Informix 拥有明显的优势,这主要归功于大容量在线事务处理(OLTP)、应用程序集成以及较小的内存消耗,占用很少的磁盘空间、内存和 CPU。其稳定性和可靠性已经过验证,故 Informix 是零售商、银行和通信公司的理想选择。

MySQL 的优势是其 “插件” 架构支持从其他数据库服务器获取可扩展特性。但是,这也许也是 MySQL 的最大缺点。那些特性中的大部分设计用于一些 “花哨” 的功能,但通常以其他不可缺少的元素为代价。这里的代价是内存和存储器方面的复杂性和资源消耗,这通常会导致性能降低。

安全性

MySQL 提供简单、但非常有效的安全机制,但人们普遍认为,MySQL 的安全模型没有其他流行数据库精密。MySQL 的默认安装,特别是根密码空缺和缓冲区溢出的潜在漏洞,使得这个数据库服务器成为容易攻击的目标。

Informix 集成了操作系统安全性功能来对用户进行身份验证和管理网络权限。角色分离分离了管理员的安全职责。审计功能允许服务器记录用户和管理员执行的敏感操作,以便进行分析并识别系统误用。自主访问控制 (DAC) 是主要的访问控制机制,通过特权和角色支持访问 SQL 对象。

恢复

在恢复方面,Informix 对 MySQL 拥有绝对优势,后者即便使用 MyISAM 系统配置仍然差强人意。如果需要不间断运行,则 MyISAM 必须使用不间断电源 (UPS)。如果电源中断,那么 MySQL 数据库中存储的关键数据可能会面临损坏或丢失的风险。使用 Informix,数据损坏发生的可能性非常小,因为数据会定期通过各个检查点。另外,Informix 持续跟踪此过程以便成功实施恢复,即便是系统意外关闭。


架构概览和比较

Informix Innovator-C Edition 和 MySQL 之间有一些重要区别。我们首先检查这两个数据库服务器之间的一些相似和不同的基本架构方式。(注意:在本文撰写之时,我们使用 MySQL 5.1 和 Informix Innovator-C Edition 11.7 版本来进行比较。)

  • 架构模型
    • Informix Innovator-C Edition 和 MySQL 数据库服务器都使用基于服务器线程的专用架构。
  • 存储器访问
    • Informix Innovator-C Edition 使用 RSAM 作为存储器访问方法。
    • MySQL 数据库使用可插拔存储引擎架构。
  • 表空间模型
    • Informix Innovator-C Edition 表空间能跨多个数据库。
    • MySQL 对 InnoDB 和 NDB 存储引擎使用表空间。
  • 架构支持
    • Informix Innovator-C Edition 拥有真正的架构支持。
    • MySQL 没有真正的架构支持。MySQL 中的架构可视为 MySQL 数据库。
  • 数据库对象名称的大小写敏感性
    • 使用 Informix Innovator-C Edition,表和列在 UNIX 和 Windows 上区分大小写,以小写形式存储。
    • MySQL 在 Linux 上的数据库、表和列名区分大小写。
  • 身份验证
    • Informix Innovator-C Edition 使用数据库用户/角色执行身份验证,向所有数据库维度(包括单独的行、列和数据库)提供访问控制和加密级别。还可以使用各种外部安全模式,比如操作系统、PAM、Kerberos、Active Directory 等等。
    • MySQL 在数据库级别实现身份验证,并对密码进行加密。
  • 实例架构
    • Informix Innovator-C Edition 提供在一台机器上使用多个数据库服务器实例的灵活性,一个实例能够管理多个不同数据库。
    • 一个 MySQL 实例能管理多个不同数据库,一台机器上可能有多个 MySQL 实例。

图 1图 2 展示了 MySQL 和 Informix Innovator-C Edition 的架构图。参阅若干文档之后,我们尽我们所能绘制了 MySQL 的架构图。如果您发现有任何问题,请告诉我们,我们将及时更正。

MySQL

MySQL 和 Informix Innovator-C Edition 都使用一个基于线程的架构。一个 MySQL 实例(如 图 1 所示)能管理多个数据库。一个实例中的所有 MySQL数据库共享一个名为 INFORMATION_SCHEMA 的公共系统目录。

Informix Innovator-C Edition 中的实例与 MySQL 中的实例类似,但它包含自己的系统目录、存储空间、缓冲区池、线程等等。

包含多个数据库的单个实例可以在 MySQL 和 Informix Innovator-C Edition 中可视化。当您有几个 MySQL 实例运行在一台机器上且每个实例管理几个数据库时,可以将每个 MySQL 实例作为 Informix Innovator-C Edition 进行迁移。

MySQL 的一个有趣特性是可插拔存储引擎。可以选择 MyISAM、InnoDB、Archive、Federated、Memory、Merge、Cluster、NDB 或 Custom 存储引擎。每个存储引擎都具有不同的特征,可以根据具体需求选择特定存储引擎。

图 1. MySQL 架构和进程概览
图 1 是 MySQL 架构和进程的高级设计示意图。每个客户机应用程序请求由 MySQL 服务器端上的一个 mysqld 线程处理。根据具体操作,mysqld 线程使用一个不同的服务器进程从使用内存的数据库检索数据。

一个 MySQL 服务器进程 (mysqld) 能创建几个线程:

  • 一个全局线程(每个服务器进程一个)负责创建和管理用户连接线程。
  • 一个线程被创建来处理每个新用户连接。
  • 每个连接线程还执行身份验证和查询执行。
  • 在 Windows 上,有一个已命名管道处理程序线程,其作用等同于用于已命名管道连接请求的连接线程。
  • 一个信号线程处理警报并在闲置时间过长的连接上强制执行超时。
  • 一个线程被分配为处理关机事件。
  • 一些线程用于处理主从服务器的同步,以便执行复制。
  • 一些线程用于表刷新、维护任务等。

MySQL 使用一个数据缓存、记录缓存、键缓存、主机名缓存和特权缓存,缓存和检索服务器进程中执行的所有线程使用的不同数据类型。

另外,MySQL 主进程 (mysqld) 使用一些线程来处理备份、恢复和并发控制等管理活动。

Informix Innovator-C Edition

图 2 提供了 Informix Innovator-C Edition 架构的一个视觉概览。Informix Innovator-C Edition 数据库服务器基于一种名为动态伸缩架构(Dynamic Scalable Architecture,DSA)的高级技术,该技术几乎支持高效使用所有当今硬件和软件资源。通过一些相似的数据库活动类型,比如I/O、复杂查询、索引构建、日志恢复、插入和备份/恢复,这种技术充分利用 SMP 环境中可用的处理能力。DSA 设计架构包含内置多线程功能、动态和自调优共享内存组件以及智能逻辑数据存储功能,支持最有效地利用所有可用系统资源。

Informix Innovator-C Edition 进程被称为虚拟处理器(VP),原因是它的工作方式与计算机 CPU 的工作方式类似。与一个 CPU 运行多个操作系统线程、服务多个用户一样,一个 Informix 虚拟处理器运行多个线程,服务多个 SQL 客户机应用程序。

虚拟处理器是操作系统计划处理的进程。Informix Innovator-C Edition 虚拟处理器是多线程的,因为它们运行多个并发线程。图 2 展示了客户机应用程序与虚拟处理器之间的关系。少数几个虚拟处理器服务大量客户机应用程序或查询。

与一个服务单个客户机应用程序的数据库服务器进程相比,Informix 的动态、多线程特性有以下优势:

  • 虚拟处理器可以共享处理。
  • 虚拟处理器可以节约内存和资源。
  • 虚拟处理器可以执行并行处理。
  • 可以在运行数据库服务器时启动其他虚拟处理器并终止活动的 CPU 虚拟处理器。
  • 可以将虚拟处理器绑定到 CPU。

虚拟处理器代表 SQL 客户机应用程序(会话线程)并为了满足内部需要(内部线程)而运行线程。在多数情况下,对于一个客户机应用程序的每个连接,Informix 运行一个 sqlexec 线程。Informix 运行内部线程以完成数据库 I/O、日志 I/O、页面清理和任务管理等任务。

用户线程是服务来自客户机应用程序的请求的数据库服务器线程。用户线程包括会话线程(称为 sqlexec 线程),会话线程是数据库运行来服务客户机应用程序的主要线程。

图 2. Informix Innovator-C Edition 架构和进程概览
图 2 是 Informix 架构和进程的高级设计示意图。每个客户机应用程序请求由 Informix 服务器端上的一个 sqlexec 线程处理。sqlexec 线程使用不同的 VP 类型,具体取决于操作种类。CPU、AIO、ADM、Crypto 和 Java 是一些 VP 示例。VP 使用共享内存段从不同的存储空间访问数据。

数据大小限制比较

表 1 比较了 MySQL 和 Informix Innovator-C Edition 数据大小限制。这并不是完整列表,只包含一些最重要的限制。

表 1.MySQL 和 Informix 数据大小限制
MySQLInformix Innovator-C Edition
最大数据库大小无限128PB
最大表大小MyISAM 存储限制:256TB
Innodb 存储限制:64TB
128PB
最大行大小64KB¹32765 字节
(大对象除外)
每行的最大列4KB²32765 字节
最大 blob/clob 大小4GB4TB
最大 CHAR 大小64KB(文本)32765 字节
最大 NUMBER 大小64 字节10^32
最小 DATE 值100012/31/1900
最大 DATE 值999912/31/9999

1. InnoDB 仅限于 8000 字节(VARBINARY、VARCHAR、BLOB 和 TEXT 列除外)。
2. InnoDB 仅限于 1000 列。


结束语

本文描述了 MySQL 和 Informix 之间的许多架构区别,展示了这两种数据库技术之间的一些区别。本系列 第 2 部分是一个教程,逐步演示实际迁移过程。熟悉 Informix 并适当计划,您就能在一个世界级的可伸缩复杂数据库平台上运行了:享受 Informix 吧!

参考资料

学习

获得产品和技术

  • IBM Migration Toolkit:深入了解并获取这个简便易用的工具,该工具用于将您的数据从广泛的源数据库迁移到 DB2 或 Informix — 无论使用什么平台。
  • 使用可以直接从 developerWorks 下载的 IBM 产品评估试用版软件 构建您的下一个开发项目。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


这是您第一次登陆到 developerWorks,已经自动为您创建了您的概要文件。 选择您概要文件中可以公开的信息的信息(如姓名、国家/地区,以及公司),这些信息同时也会与您所发布的内容相关联。 您可以随时更新您的 IBM 账号。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=664798
ArticleTitle=将数据库从 MySQL 迁移到 IBM Informix Innovator-C Edition,第 1 部分: MySQL 和 IBM Informix Innovator-C Edition 的比较
publish-date=05302011