本系列的前几篇文章重点探讨了如何将应用程序部署到 IBM PureApplication System 上。部署应用程序后,您需要考虑应用程序如何存储和访问数据。关系数据库管理系统提供了一种标准的数据存储和检索接口、一个围绕数据访问的高级安全模型,以及对多个用户同时访问存储的数据的并发性支持。
如果使用了 PureApplication System,则可以使用一个企业级关系数据库管理系统 (RDBMS) 以 IBM DB2 软件的形式部署应用程序。本文将介绍 DB2、在 PureApplication System 中包含 DB2 的不同方式,以及在包含在 PureApplication System 中一起部署 DB2 数据库和企业应用程序的流程和最佳实践。
回页首
PureApplication System 中的 DB2
IBM DB2 是一款 RDBMS 产品,支持不同的操作系统,比如 Linux、UNIX、Windows® 和 z/OS。具体来讲,PureApplication System 包含产品的 DB2 Linux, UNIX, and Windows (LUW) 版本。
截至 2012 年 4 月,DB2 LUW 的最新版本是 DB2 10.1。这个新版本引入了自适应压缩,进一步改进了现有的数据压缩技术;引入了连续数据摄入,可以在不中断持续数据访问和可用性的情况下填充数据表;还引入了时间旅行查询,从而可以查看并轻松报告过去某个时间点的数据。您在 DB2 10.1 中还可以找到其他增强功能,包括一般查询优化和性能改进,以及安全性和工作负载管理方面的改进。PureApplication System 包含 DB2 10.1 以及 DB2 9.7,用它们防止应用程序未在更新的版本上经过验证。
DB2 LUW 10.1 家族的产品组合中包含不同的版本,从 DB2 Express-C(一个具有社区支持功能的免费 DB2 版本)到高级 Enterprise 版(按照标准配备了多个附加功能)。但是,因为 DB2 LUW 家族的所有 DB2 版本都使用相同的基础数据库引擎,所以为一个 DB2 LUW 版本开发的任何应用程序都适用于所有 DB2 LUW 版本。在 DB2 Express 和具有不同附加功能的 Enterprise 版中,都提供了 DB2 虚拟系统模式,而 DB2 数据库工作负载模式为您提供了 DB2 Enterprise 版。
回页首
为 PureApplication System 中的应用程序选择一个数据库
在 PureApplication System 上下文中,可采用多种方式部署或配置数据库。因为 IBM DB2 软件集成在 PureApplication System 内,所以将 DB2 用作一个已部署应用程序的数据库不会涉及额外的成本,从而减少了开销和其他许可跟踪机制。PureApplication System 中的 DB2 的这种内在优势减少了该平台的总体拥有成本。而且,PureApplication System 中的 DB2 的统一性质支持在应用程序使用 DB2 作为数据库后端服务的过程中应用和遵循专注于集成的最佳实践和专家经验。
DB2 虚拟系统模式
像其他在 IBM PureApplication System 上运行的应用程序一样,DB2 可用作一种 DB2 虚拟系统模式或用作一种 DB2 数据库工作负载模式中的一部分。正如本系列前面的文章中所述,DB2 虚拟系统模式支持更灵活地控制和配置中间件环境。目前,可将多个映像部署为 DB2 虚拟系统模式:
DB2 数据库工作负载模式
除了可用的 DB2 虚拟系统模式,还可以在对特定上下文应用了一些配置和最佳实践的 PureApplication System 中找到 DB2 数据库工作负载模式。DB2 数据库工作负载模式的部署非常简单,而且能够灵活地更改数据库层中的一些配置参数。有关 DB2 数据库工作负载模式的数据库工作负载标准功能的更多信息,请参阅 数据库模式 一节。目前,有两种不同的数据库工作负载模式可用于 DB2:
IBM 事务数据库模式 用于容纳部门级在线事务处理 (OLTP) 应用程序,这些应用程序不需要很高的数据库优化水平。此数据库工作负载模式包含针对部门级 OLTP 部署、虚拟机部署调整模板和数据库备份计划的自动配置。此模式中使用了 DB2 Enterprise 版,对数据压缩启用了存储优化功能。
对于配备和管理 PureApplication System 中以数据为中心的应用程序的数据集市基础架构而言,IBM 数据集市模式 提供的一些功能是不可或缺的。IBM 数据集市模式针对数据集市工作负载所需的独特的 I/O 吞吐量进行了调节,IBM 数据集市模式包含数据压缩功能和数据移动工具,所有这些功能和工具都旨在使用急需的信息帮助推动业务发展。此模式中使用了 DB2 Enterprise 版,对数据压缩启用了存储优化功能。此模式中包含用于创建和修改目标数据集市的物理模式、控制流和数据流的 SQL 仓库工具。
DB2 SQL 兼容性功能
对于之前未使用 IBM DB2 软件作为数据库解决方案的用户,PureApplication System 是一个与现有企业应用程序一起评估 DB2 的生产部署的不错的示例。除了前面介绍的在 PureApplication System 中使用 DB2 的优势之外,DB2 虚拟系统和数据库工作负载模式还允许您打开 SQL 兼容性模式,帮助迁移为使用其他竞争数据库软件而编写的应用程序。打开此功能后,为其他竞争数据库编写的原生 SQL 可在 DB2 引擎中进行原生编译,无需使用运行缓慢的模拟软件。此外,还可以使用一种兼容的数据并发性模型,并且 DB2 包含兼容现有的脚本和个人技能的工具,这简化了向 DB2 的过渡。
有关 DB2 SQL 兼容性功能的更多信息,请参阅 在 DB2 9.7 for Linux, UNIX, and Windows 上运行 Oracle 应用程序。
使用 PureApplication System 外的远程数据库
在某些用例中,可能需要使用一个部署在 PureApplication System 内的应用程序来访问和链接远程系统上的数据库系统。例如,可能性能 (perhaps performance) 和其他条件将一个特定的数据库工作负载分类到一个任务关键型的数据库类别中,因此需要一个专门的物理系统来托管这样一个数据库系统。
在定义虚拟应用程序模式时,可以将现有的远程数据库组件附加到该模式。这些数据库将位于 PureApplication System 之外,这些组件的配置属性将定义该远程数据库的连接参数。
选择数据库的步骤
有了上述信息后,以下是为 PureApplication System 中一个关联的应用程序选择数据库部署的简化的过程:
回页首
在 PureApplication System 中部署 DB2 的最佳实践
本节将介绍如何在 PureApplication System 内创建 DB2 虚拟系统和数据库模式。这些说明还包含如何调整 DB2 虚拟系统或数据库模式,以便使用可用于创建表、填充数据和预先调节数据库的脚本包来操作这些资源的配置。
DB2 虚拟系统模式
当使用 DB2 虚拟系统模式时,通常会创建一个脚本包来更改 DB2 虚拟系统的某些特征,满足关联应用程序的需求。在下面的示例中,我们创建了一个脚本包,以便能够创建一个数据库并更新数据库参数 LOGBUFSZ
。然后,将脚本包上传到 PureApplication System,并将它用于 DB2 虚拟系统模式中。
创建和上传脚本包
脚本包通常包含两个脚本文件、一个 JSON 文件和一个 Shell 脚本文件。JSON 文件包含有关脚本需求的结构信息,比如包名称、描述、执行命令和工作目录。Shell 脚本文件包含调用其他文件的命令或脚本。要创建一个示例脚本包,请执行以下操作:
cbscript.json
。清单 1 给出了该文件的一个示例。 { "name": "Create Database and Tune ", "version": "1.0.0", "description": "This script package creates a database and update db parameter in a DB2 instance", "command": "/bin/sh /tmp/createDatabase/createDatabase.sh", "log": "/tmp/createDatabase", "location": "/tmp/createDatabase", "timeout": "0", "commandargs": "", "keys": [ { "scriptkey": "DATABASE_NAME", "scriptvalue": "", "scriptdefaultvalue": "" } ] } |
createDatabase.sh
。在文件中输入以下代码行,如清单 2 所示。 echo "DB2INSTANCE=db2inst1" >> /etc/virtualimage.properties source /etc/virtualimage.properties export DB2INSTANCE=$DB2INSTANCE su db2inst1 -c "/opt/ibm/db2/V9.7/bin/db2 CREATE DATABASE $DATABASE_NAME" su db2inst1 -c "~/sqllib/bin/db2 connect to $DATABASE_NAME;~/sqllib/bin/ db2 update db cfg using logbufsz 1000;~/sqllib/bin/db2 terminate;" |
cbscript.json
文件中,如果字段位置的值为 /tmp/createDatabase/
,那么包名称应该为 createDatabase.zip
。该文件被提取到文件夹 /tmp/createDatabase/
中。cbscript.json
文件中定义的名称相同,例如 Create Database and Tune
(参见图 1)。 cbscript.json
文件中定义的参数会加载到页面上,如图 2 所示。 脚本包已上传到 PureApplication System,现在可以在虚拟系统模式中使用它了。
创建虚拟系统模式
本节将介绍如何创建包含一个 DB2 Enterprise 数据库服务器的虚拟系统模式,以及如何使用刚刚上传的脚本包。要创建虚拟系统模式,请执行以下操作:
数据库模式
本节将介绍如何在 PureApplication System 上使用数据库模式。有一项名为 “数据库工作负载标准” 的功能支持管理员创建工作负载标准,并配置数据库的大部分内容。本节中的说明包括如何创建示例工作负载标准,使用它部署一个数据库和更新参数。有关数据库工作负载标准的更多信息,请参阅 IBM Workload Deployer 信息中心。
创建数据库工作负载标准
数据库工作负载标准是一个 zip 文件,包含以下 5 个一级目录。每个目录包含一个入口脚本,该脚本还可以调用其他脚本或文件。create_db 目录和它的入口脚本 create_db.sh 是强制性的。其他所有目录都是可选的。
以操作系统用户 “db2inst1” 的身份执行这些脚本,并按表 1 中所示的顺序调用它们。
表 1. 数据库工作负载标准的脚本调用顺序
目录 | 入口脚本 |
tune_inst | tune_inst.sh |
post_start_inst | post_start_inst |
create_db | create_db.sh(强制性) |
tune_db | tune_db.sh |
init | init.sh |
示例工作负载标准包含两个目录 “create_db” 和 “tune_db”。每个目录仅拥有入口脚本 create_db.sh 和 tune_db.sh。脚本 create_db.sh 使用用户输入的数据库名称创建数据库。脚本 tune_db.sh 在创建数据库后更新数据库参数。有关参数和脚本的其他需求的更多信息,请参阅 IBM Workload Deployer 信息中心。
创建工作负载标准:
#!/bin/sh inst_name=$1 db_name=$2 outStr=$(db2 "CREATE DATABASE ${db_name} ON /home/${inst_name} USING CODESET UTF-8 TERRITORY US COLLATE USING SYSTEM PAGESIZE 8192") if [ $? -ne 0 ] ; then echo "database creation failed, aborting: ${outStr}" exit -1 else exit 0 fi |
#!/bin/sh db_name=$2 db2 connect to ${db_name} db2 UPDATE DB CFG USING LOGBUFSZ 1000 db2 terminate |
该脚本将数据库参数 LOGBUFSZ
更新为 1000。您可以根据需要添加更多命令。
上传数据库工作负载标准
创建包之后,将它上传到 PureApplication System。
创建一个数据库模式并部署它
将数据库工作负载标准上传到 PureApplication System 后,使用此标准创建一个数据库模式。要从一个数据库模式创建和部署,请执行以下操作:
mydb
,选择要部署的云分组或环境配置文件,如图 10 所示。 db2 catalog tcpip node <node name> remote <Host IP address> server <Port number> db2 catalog db <Database name> at node <Node name> |
db2 catalog tcpip node rnode remote 9.26.167.36 server 50000 db2 catalog db mydb at node rnode |
执行清单 6 中所示的命令来获取数据库参数 LOGBUFSZ
的值。
清单 6. 连接远程数据库并获取 LOGBUFSZ 配置参数
db2 connect to mydb user appdba using <appdba password> db2 get db cfg | grep LOGBUFSZ |
清单 7 显示了相关输出。
清单 7. LOGBUFSZ 配置参数的示例输出
Log buffer size (4KB) LOGBUFSZ) = 1000 |
LOGBUFSZ
的默认值为 256。它依据 tune_db.sh 脚本中的定义更改为了 “1000”。回页首
结束语
本文介绍了 IBM DB2 数据库软件和它在 IBM PureApplication System 中的应用。DB2 为 PureApplication System 用户提供了一个可免费使用的集成的关系数据库系统,为关联的应用程序提供了一种安全且强大的应用程序数据存储解决方案。因为可通过多种方式在 PureApplication System 中部署 DB2 数据库,所以建议首先从一个 DB2 数据库模式开始,如果有必要,可以使用一个自行定义的数据库工作负载标准来应用配置更改。做出选择之后,请按照本文中的说明完成 DB2 在 PureApplication System 中的部署。