【IT168 技术文章】
我写这篇文章是为了帮助您决定使用哪种分布式 DB2 版本来为您的企业提供动力。随着时间的推移,服务器版本不断变化,还应该注意,从 DB2 8 到 DB2 9 有许多变更,本文不讨论这些变更,以免本文过分复杂。在某些情况下,您可能拥有在 DB2 9 中不存在的特性或许可证。例如,DB2 8 Express Edition 要求购买一个服务器许可证和许多指定的用户权利,这样才能支持环境中的用户集。在 DB2 9 和更高版本中,在使用用户许可方式时没有服务器许可证。关于版本之间的变更、迁移和更新权利的信息.
在与客户交谈时,常常有人问我许多关于高可用性的许可问题,或不同 DB2 版本之间的特性比较。关于这些主题和更多主题的详细信息,我曾经撰写的其他文章可能会有所帮助:
DB2 具有公共的代码库
在选择 DB2 版本来处理您的工作负载时,首先应该理解的是:除了 DB2 Everyplace? 和 Apache Derby(其 SQL API 与 DB2 完全兼容)以外,每个 DB2 版本对于不同的分布式平台都有相同的代码库。DB2 对于 Linux 的支持扩展到了所有的 IBM 服务器上:System i?、System z?、System x? 和 System p?,所有这些平台上的 DB2 也都是分布式版本。例如,DB2 for Linux on System z 与基于 Intel 或 AMD 的工作站上的 DB2 具有相同的代码库和许可方式。这意味着,尽管 DB2 for Linux on System z 服务器驻留在 System z 服务器上,但是访问数据并不需要 DB2 Connect。(请仔细理解这句话 —— 如果连接 System z 服务器上的 DB2 for z/OS 数据服务器,就需要 DB2 Connect;这里的差异在于 DB2 for Linux on a System z Integrated Facility for Linux(IFL)是一个分布式 DB2 版本。)
公共的代码库提供了可移植性,并确保如果需要扩展 DB2 解决方案,就可以无缝地完成,而无需考虑成本、平台或迁移工作量;因为 DB2 系列中的 SQL API 大约 95% 是公共的,所以在 DB2 系列成员之间迁移也很容易。除了 SQL API 之外,还有其他兼容性特性。例如,有一个公共的 Web 服务框架,它允许通过鼠标单击将业务逻辑组合进面向服务体系结构(SOA)框架中。实际上,这个框架(称为 IBM Data Web Services)适用于所有 IBM 数据服务器,包括 Informix!尽管听起来不可思议,但是许多 IBM 数据服务器特性在每个 DB2 版本上都是相同的。例如,所有 IBM 数据服务器都用一个公共的 API 处理 SQL。例如,DB2 for z/OS 和 DB2 for Windows 的 JDBC 驱动程序具有相同的代码。还有一个公共的客户机:从 DB2 9.5 开始,如果要连接 DB2 for z/OS、DB2 for AIX 或 Informix,那么只需安装一个客户机。另外,应用程序开发和管理工具(比如 Visual Studio 集成或 IBM Data Studio)也对整个系列有效。在所有平台上都启用了 pureQuery。如果决定更改关于硬件体系结构(例如,从基于 Intel 的体系结构更改为 POWER6 体系结构)、操作系统(比如从 Windows? 迁移到 Linux?)或编程体系结构(比如从 .NET 更改为 Java,或反过来)的策略方向,就可以依赖于 DB2 适合各种平台这一特点。很简单,您可以自由地做出选择,而 DB2 确实是世界上惟一真正允许您根据环境定制信息平台的广度和深度的数据服务器。如果需要使用支持触发器、存储过程等功能的更强大的数据库,但是空间限制仍然很严格,而且设备可以运行 Java,那么也可以考虑使用 Apache Derby,它的内存占用量只有大约 2 MB。Apache Derby 数据库可以充当 DB2 Everyplace 环境中的同步客户机。另一个选择是 DB2 Express-C FTL
DB2 Personal Edition……在个人平台上提供 DB2 的所有能力
DB2 Personal Edition(DB2 Personal)是运行在基于桌面的普通硬件上的单用户数据服务器。DB2 Personal 可用在基于 Intel 和 AMD 的 Windows 和 Linux 工作站上。DB2 Personal 具有 DB2 Express Edition 中的大多数特性,但是它无法用作中心数据库服务器,因为远程客户机不能连接到这个 DB2 版本的数据库。但是,DB2 管理工具可以连接到这个 DB2 版本以执行远程管理。这个 DB2 版本还包含对 64 位实例的支持并且没有内存限制。DB2 Personal 提供安装 DB2 Net Search Extender 和 Spatial Extender 的权利(它们在 DB2 9 和更高版本中是免费的),还支持基于 SQL 的复制。复制特性可以与 DB2 数据服务器相结合以支持偶尔连接的工作人员,也可以用来创建自己的 “发布/订阅” 体系结构。DB2 Personal 还免费包含 pureXML 特性
许可和定价
DB2 Personal 按照安装发放许可证,这与大多数 PC 工作站软件非常相似。即使多位用户轮流使用同一个安装 DB2 Personal 的端点(他们显然无法同时工作,因为只有一台机器),仍然只需要一个许可证,因为它是按照安装而不是授权用户发放许可证的。DB2 Personal 的每个安装不需要考虑 RAM、价值单元等因素。例如,如果您有 10 个工作站,它们在三个 8 小时时间段中由 30 位用户平等地共享,那么需要 10 个 DB2 Personal 许可证。对于需要将个人单用户数据库用于大量 PC 工作站的应用程序来说,DB2 Personal 将是一个非常好的选择,可以在每个工作站上安装一个 DB2 Personal 拷贝。如果需要与分布式 DB2 数据服务器百分之百兼容,或者需要支持高级特性(比如 pureXML),那么 DB2 Personal 是比 DB2 Everyplace 和 Apache Derby 更合适的选择。偶尔连接的用户可能希望利用 DB2 Personal 内置的 SQL 复制特性来设置同步的数据和管理环境,在这种环境中移动的员工或远程服务器可以与他们的企业保持联系。当然,这只适合于膝上型计算机用户和某些工作站,例如那些运行销售点(POS)应用程序或销售自动化(SFA)应用程序的机器。最后,开发人员也常常使用 DB2 Personal —— 但是,我个人认为 DB2 Express-C 更适合开发人员。
DB2 Express-C……它免费用于构建、开发和发布
在 2006 年 1 月 30 日,IBM 发布了一个特殊的免费 DB2 数据服务器版本,它称为 DB2 Express-C。注意,它并不是 “正式的” DB2 版本。DB2 Express-C 是为合作伙伴和开发社区设计的,但是这个版本几乎可以在任何环境中使用。相比之下,一些免费的 Express 竞争产品不但对 RAM 和处理器设置了严格的限制,还限制了在线实用程序、数据库对象、自治、自动维护、内存位模型等,但是 DB2 Express-C 没有这么多限制。如果您研究这个 DB2 版本,会为它提供的丰富特性感到吃惊。DB2 Express-C 非常适合开发人员和中小型部署、学术社区等等。
与 DB2 Express 相比,DB2 Express-C 中 不 包含的主要特性有:
* 不保证代码。例如,对这个产品不提供支持,也不提供 DB2 Spatial Extender 等的下载。注意,仍然可以下载并使用免费的 DB2 Extender(DB2 Spatial Extender 和 DB2 Net Search Extender);但是,您要自己解决在使用这个 DB2 版本时遇到的问题。
* 不能购买额外的 Feature Pack 来提供许多扩展服务。例如,不能购买 Storage Optimization Feature Pack,它提供深度行和备份映像压缩服务。但是您应该知道,DB2 Express-C 附带 pureXML 特性(稍后详细讨论),所以可以免费使用 DB2 XML 技术的所有功能。
* 不能使用集群软件(比如 HACMP、SteelEye 或 DB2 9.5 内置的集群服务)将多台 DB2 Express-C 数据服务器配置成集群来提供高可用性。如果需要在高可用性环境中设置 DB2 Express-C,必须至少购买 DB2 Express-C Fixed Term License(FTL),FTL 是在这个 DB2 版本上增加的订购选项。
* 没有复制服务。这个问题使许多人产生了混淆,因为以前的 DB2 Express-C 版本间接指出在这个包中可以使用 DB2 内置的 SQL 复制的 APPLY 组件。在 DB2 Express-C 中不能使用任何复制服务。
* 不能购买获奖的 24x7 IBM Passport Advantage 支持模型,而收费的 DB2 数据服务器可以使用这个模型。这可能是 DB2 Express-C 最大的限制之一(不能设置高可用性数据服务器集群是另一个主要限制)。
DB2 Express-C 的支持模型依赖于它的社区。这个社区的成员包括来自世界上最大型公司的最具经验的 DBA 以及众多的 DB2 开发人员和工程师,他们积极回答论坛上的提问,您可以在这里寻求 关于 DB2 Express-C 的帮助、建议和支持(这种方式就像是开放源码社区)。为了促进这个社区的发展,在 developerWorks Information Management 等网站上提供了实用的参考资料。
* DB2 Express-C 只提供当前版本。换句话说,当一个 DB2 Express-C 新版本发布时,就不再提供老版本。
如果希望使用上面列出的特性,至少需要购买 DB2 Express-C FTL(或者收费的其他 DB2 版本)。
关于 DB2 Express-C 的好消息是对它的限制不多:没有数据库大小限制,没有自动管理或工具限制,没有内存模型限制(可以使用 64 位内存模型),等等 —— 您使用的就是纯正的 DB2。而一些 Express 竞争产品往往设置了许多限制;但是,这超出了本文的范围。
DB2 Express-C 可以在运行 Linux 或 Windows 操作系统的服务器上使用。在 IBM DB2 Express-C 下载站点 上可以找到支持平台的完整列表。
开发人员喜欢 DB2 Express-C,因为可以使用它免费开发和部署应用程序。ISV 也喜欢 DB2 Express-C,因为可以使用它免费开发 DB2 并在他们的打包应用程序中部署和发布 DB2。请牢记,因为 DB2 Express-C 是纯正的 DB2,这意味着可以不加修改地将这些应用程序部署到任何 DB2 版本上,甚至可以迁移到 DB2 for z/OS 上(只要在编写应用程序时使用 DB2 系列 95+% 的公共 SQL API 集)。
许可和定价
DB2 Express-C 可以免费构建、部署和发布。因此,这个 DB2 版本没有相关联的许可费用。但是,在任何规模的服务器上,它限制 DB2 引擎只能使用最多 2 GB 的内存和 2 个处理器核心。可以在虚拟化环境中使用 DB2 Express-C。
DB2 9.5 中的变更
以前的 DB2 Express-C 版本被限制为最多 4 GB 的内存和 4 个处理器插槽。用户负责通过 DB2 配置设置和个人观察实施这些限制。在 DB2 9.5 中,这些资源将遵循前一节描述的新限制。
DB2 Express-C 可以用于许多不同的应用程序和项目 —— 尤其是因为它提供了收费 DB2 版本中的许多特性,而这些特性是其他 Express 竞争产品不具备的。
DB2 Express-C Fixed Term License(Subscription)……它不但可以免费构建、开发和发布,还可以设置 HA,而且它提供了支持!
在 2007 年 4 月 30 日,IBM 发布了另一个 DB2 Express-C 产品,DB2 Express-C Fixed Term License(FTL)。从本质上说,购买 DB2 Express-C FTL 会提供 DB2 Express-C 所不具备的三个特性:
* 每个 DB2 Express-C FTL 数据服务器都包含 IBM 的 24x7 支持。这可以帮助您解决问题,并提供与 DB2 数据服务器匹配的维护计划。尽管这些服务器提供支持,但是仍然必须访问 DB2 Express-C 论坛 和 DB2 Express-C Web page on Developer's Domain,因为在这些网站上可以了解关于 DB2 的许多信息。
* 与 DB2 Express-C 不同,DB2 Express-C FTL 为数据服务器增加了完整的 SQL 复制功能(包括 CAPTURE 和 APPLY 组件),因此适合偶尔连接的客户机或发布/订阅数据分布模型。
* DB2 Express-C FTL 允许在高可用性环境中将多台 DB2 Express-C FTL 数据服务器设置成集群。在高可用性环境中设置 DB2 Express-C FTL 数据服务器集群时,无论以何种方式使用备用 DB2 Express-C FTL 数据服务器,必须为每台 数据服务器购买许可证;例如,cold、warm 或 hot 备用。更多信息请参考 为高可用性环境中的分布式 DB2 9.5 服务器颁发许可。
* DB2 Express-C FTL 免费包含 High Availability Disaster Recovery(HADR)特性,这使建立高可用性 DB2 Express-C FTL 数据服务器集群的功能更加出众。
* DB2 Express-C FTL 具有与常规 DB2 数据服务器更新计划相关联的 Fix Pack。例如,当为 DB2 发布一个 Fix Pack 时,也会为 DB2 Express-C FTL 提供这个 Fix Pack。另外,同时提供多个 DB2 Express-C FTL 版本,而 DB2 Express-C 只提供一个版本,不提供以前的代码库。
DB2 Express-C 与 DB2 Express-C FTL 之间的差异
当然,因为 DB2 Express-C FTL 的代码库与 DB2 Express-C 相同(各个 DB2 版本的代码库都相同),只是增加了前面提到的功能,所以仍然具备 DB2 Express 的灵活性和健壮性。与 DB2 Express-C 一样,也不能为 DB2 Express-C FTL 购买 Feature Pack;例如,不能购买 Storage Optimization Feature Pack,它提供深度行和备份映像压缩服务。因为 DB2 Express-C FTL 提供支持,所以仍然可以使用免费的 Extender 并获得相关支持 —— 您不必自己解决问题,IBM 支持团队会帮助您。可以在运行 Linux 或 Windows 操作系统的服务器上使用 DB2 Express-C FTL。在 IBM DB2 Express-C 下载站点 上可以找到支持平台的完整列表。
许可和定价
DB2 Express-C FTL 的 FTL 部分实际上是一个预订许可证。在为 DB2 Express-C FTL 购买许可证时,实际上是为 FTL 部分付费。这个预订提供一年的支持,还授权使用前面提到的附加功能。所以,在为这个产品发放许可证时,不需要考虑处理器、处理核心、VU 等因素。只需为每台服务器购买一个支持合同;例如,如果您有两台 DB2 Express-C FTL 数据服务器,那么必须购买两份预订(FTL)合同。如果使用 HADR 将这两台DB2 Express-C FTL 数据服务器组合成集群,那么仍然要购买两份预订合同,因为对于 DB2 Express-C FTL,没有与高可用性相关的特殊许可规则。如果在一台机器上的两个 VMWare 会话中安装 DB2 Express-C FTL,就必须购买两个 DB2 Express-C FTL 许可证。为 DB2 Express-C FTL 购买许可证很简单吧?您应该知道,在任何规模的服务器上,DB2 Express-C FTL 只能使用最多 4 个处理内核和 4 GB 的内存。
DB2 9.5 中的变更
以前的 DB2 Express-C FTL 版本被限制为最多 4 GB 的内存和 4 个处理器插槽。用户负责通过 DB2 配置设置和个人观察实施这些限制。在 DB2 9.5 中,这些资源将遵循前面小节描述的新限制。
请考虑一下……
DB2 Express-C FTL 可以用于许多不同的应用程序和项目 —— 尤其是因为它提供了收费 DB2 版本中的许多特性,而这些特性是其他 Express 竞争产品不具备的。如果您对 DB2 Express-C 满意,但是需要高可用性、复制、24x7 支持、pureXML 等附加特性,那么可以考虑使用 DB2 Express-C FTL。
在 DB2 Express-C FTL 上可以实现的有趣功能
因为这个产品刚发布不久,我还没有从客户那里了解到相关的反馈(只是到目前为止还没有)。但是,在免费数据服务器上提供 HADR、24x7 支持、复制和 pureXML 意味着什么呢?实际上大量生产性 OLTP 工作负载在两个插槽的机器上运行,现在可以以与 MySQL 相同的价格获得出色的可用性特性(HADR)、支持和 pureXML。这真的 很酷!
DB2 Express Edition……简单、可靠且便宜
DB2 Express Edition(DB2 Express)是一个入门级的具有完整支持的 DB2 数据服务器,是专门定制的廉价、特性完整、达到工业级别和基于开放行业标准的关系数据库。这个 DB2 版本的目标用户通常是 SMB(中小型企业)和 ISV。对于使用运行 Linux、Solaris x86 和 Windows 的服务器的企业,DB2 Express 提供了非常诱人的切入点和富有竞争力的价格(前面的链接提供最新的平台支持信息)。
DB2 Express 还提供了大量可供选择的业务伙伴应用程序、服务和支持。它附带一组定价计划,合作伙伴可以利用这些计划为其企业产生可观的收入。当然,企业也可以选择在其环境中部署 DB2 Express,并且也经常这样做。
因为 DB2 Express 的核心是功能完整的 DB2 服务器(在这里找不到其他竞争产品中存在的技术性限制),所以 DBA 可以利用其内置的自主可管理性特性,如 IBM 的 Self Tuning Memory Manager(STMM)、Configuration Advisor、Health Center、Design Advisor、自主维护计划、自动备份调优和节流以及更多功能。这些服务有助于提高 DB2 解决方案的性能和可靠性,同时将管理复杂性、所需的技能和总拥有成本降到最低。
DB2 Express 支持高可用性(HA)体系结构,如 HA 集群技术和日志传送。DB2 9.5 中内置的 Tivoli System Automation(TSA)可用性技术和 HADR 不包含在基本的 DB2 Express 版本中,但是可以通过 Feature Pack 单独购买这些特性(稍后详细讨论)。考虑到其他以 SMB 为目标的流行数据库仅仅在其高级版本中包含高级在线和管理功能,加之 DB2 Express 的价格和自主功能,您可能从来不曾知道 DB2 Express 的存在,而且还可以包含在您的笔记本中!
这个 DB2 版本与用于 Linux、Windows 和 UNIX 平台的其他可伸缩 DB2 关系数据库产品完全兼容,您可以预先配制 DB2 Express,以便轻松透明地安装到应用程序中。客户会喜欢 DB2 Express,因为他们所看到的全部东西只是一个解决方案;业务伙伴也会喜欢它,因为他们可以信任它能够在真正无人值守的情况下运行。
DB2 Express 附带 DB2 Net Search Extender(在所有 DB2 9 版本中都是免费的)、Spatial Extender(在所有 DB2 版本中也是免费的)以及基于 SQL 的复制。
关于 DB2 Express 特别好的一点是,它具有 “企业可扩展性”。有许多 Feature Packs 可以添加到 DB2 Express 数据服务器上,从而用企业服务充实它的功能。同时,仍然可以享受这个 DB2 版本的低价格。设计这些附加 Feature Pack 的目的是避免中端市场解决方案被迫使用企业级产品,而市场上的其他竞争产品会出现这一问题。