为 IBM PureApplication System 做好准备,第 3 部分: 选择数据库选项

本系列的第 3 部分介绍 IBM PureApplication® System 中提供的集成的 IBM® DB2® 数据库格式。文中将介绍 PureApplication System 中不同形式的 DB2,帮助您决定在不同的条件下选择使用哪些形式的 DB2,本文还将介绍在 PureApplication System 中使用 DB2 的一些推荐的最佳实践。

Jason Chan, 技术经理, IBM

Jason Chan 的照片Jason Chan 是 Information Management Technology Ecosystem 团队的一名技术经理,专攻包含 IBM Information Management 产品的平台和解决方案。他的日常工作涉及许多使用 IM 产品的不同平台,比如操作系统、虚拟化平台和云计算。Jason 和他的团队还应用他们的平台知识生成包含 IM 产品的集成解决方案套件,比如 IBM Smart Analytics System 5710,这是一个面向中小型业务市场的工作负载优化的数据仓库解决方案。



Hua Lu, 软件开发人员, IBM

<strong>Hua Lu</strong> 是 Information Management Technology Ecosystem 团队的一名软件开发人员。他的任务包括在各种 Linux 发行版和虚拟化平台上为 IBM Information Management 产品提供技术支持。他最近在重点研究 IBM PureApplication System 和 IM 产品与这个集成系统的各种交互,包括帮助 ISV 将应用程序集成到 IBM PureApplication System 中。



2012 年 5 月 09 日

简介

本系列的前几篇文章重点探讨了如何将应用程序部署到 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 Enterprise
  • DB2 Express
  • DB2 Enterprise(用于高可用性灾难恢复 (HADR) 功能的主要节点)
  • DB2 Enterprise(用于 HADR 的辅助节点)
  • DB2 Express(用于 HADR 的主要节点)
  • DB2 Express(用于 HADR 的主要节点)

DB2 数据库工作负载模式

除了可用的 DB2 虚拟系统模式,还可以在对特定上下文应用了一些配置和最佳实践的 PureApplication System 中找到 DB2 数据库工作负载模式。DB2 数据库工作负载模式的部署非常简单,而且能够灵活地更改数据库层中的一些配置参数。有关 DB2 数据库工作负载模式的数据库工作负载标准功能的更多信息,请参阅 数据库模式 一节。目前,有两种不同的数据库工作负载模式可用于 DB2:

  • IBM 事务数据库模式
  • IBM 数据集市模式

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 中一个关联的应用程序选择数据库部署的简化的过程:

  1. 在默认情况下,会先使用 DB2 数据库工作负载模式。这些模式已将最佳实践指南合并到它们的 DB2 实现中。如果需要,可以创建并引用一个新数据库工作负载标准,将配置中的更改应用到关联的应用程序。
  2. 如果(由于性能或其他条件)您选择将数据库放在 PureApplication System 之外,那么可以使用一个适当的接口将现有的远程数据库组件附加到虚拟应用程序模式中。
  3. 如果 DB2 数据库工作负载模式具有只能使用一个应用程序的严格限制,那么您可以使用一种 DB2 虚拟系统模式。这使您能够更灵活地控制这个中间件环境。

在 PureApplication System 中部署 DB2 的最佳实践

本节将介绍如何在 PureApplication System 内创建 DB2 虚拟系统和数据库模式。这些说明还包含如何调整 DB2 虚拟系统或数据库模式,以便使用可用于创建表、填充数据和预先调节数据库的脚本包来操作这些资源的配置。

DB2 虚拟系统模式

当使用 DB2 虚拟系统模式时,通常会创建一个脚本包来更改 DB2 虚拟系统的某些特征,满足关联应用程序的需求。在下面的示例中,我们创建了一个脚本包,以便能够创建一个数据库并更新数据库参数 LOGBUFSZ。然后,将脚本包上传到 PureApplication System,并将它用于 DB2 虚拟系统模式中。

创建和上传脚本包

脚本包通常包含两个脚本文件、一个 JSON 文件和一个 Shell 脚本文件。JSON 文件包含有关脚本需求的结构信息,比如包名称、描述、执行命令和工作目录。Shell 脚本文件包含调用其他文件的命令或脚本。要创建一个示例脚本包,请执行以下操作:

  1. 打开一个编辑器并创建一个 JSON 文件 cbscript.json。清单 1 给出了该文件的一个示例。
    清单 1. 一个 JSON 文件的示例,cbscript.json
    {
       "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": ""
          }
       ]
    }
  2. 保存并退出此文件。
  3. 使用先前在 JSON 文件中定义的名称创建一个 Shell 脚本文件,例如 createDatabase.sh。在文件中输入以下代码行,如清单 2 所示。
    清单 2. 包中的 Shell 脚本示例
    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;"
  4. 保存并退出 Shell 脚本文件。
  5. 将这两个文件压缩到一个 zip 包中,确保包名称与 JSON 文件中定义的相同。例如,在 cbscript.json 文件中,如果字段位置的值为 /tmp/createDatabase/,那么包名称应该为 createDatabase.zip。该文件被提取到文件夹 /tmp/createDatabase/ 中。
  6. 以管理员身份登录到 PureApplication System,导航到 Catalog,然后导航到 Script packages 页面。
  7. 单击左上角的 New 图标添加一个新脚本包。
  8. 输入包名称并单击 OK。确保它与 cbscript.json 文件中定义的名称相同,例如 Create Database and Tune(参见图 1)。
    图 1. 包名称对话框
    包名称对话框
  9. 在 “Create Database and Tune” 页面上,单击 Script package files 旁边的输入框。选择刚刚创建的脚本包并单击 Upload
  10. 上传和编译该程序包需要一定的时间,具体时间取决于包大小。结束这个过程之后,cbscript.json 文件中定义的参数会加载到页面上,如图 2 所示。
    图 2. 上传的程序包的信息网页
    上传的程序包的信息网页
  11. 仔细检查这些参数,确保它们能够满足需求。

脚本包已上传到 PureApplication System,现在可以在虚拟系统模式中使用它了。

创建虚拟系统模式

本节将介绍如何创建包含一个 DB2 Enterprise 数据库服务器的虚拟系统模式,以及如何使用刚刚上传的脚本包。要创建虚拟系统模式,请执行以下操作:

  1. 打开虚拟系统模式页面,方法是单击 Patterns,然后从菜单中选择 Virtual Systems
  2. 单击左上角的 New 图标创建一个新虚拟系统模式。
  3. 输入模式的名称和描述,如图 3 所示。单击 OK 继续操作。
    图 3. 虚拟系统模式名称对话框
    虚拟系统模式名称对话框
  4. 在刚刚创建虚拟系统模式的详细信息页面上,单击右上角的 Pencil 图标调出模式编辑器。
  5. 在模式编辑器页面上,从左侧菜单选择 Parts 部分以展开它,然后将 DB2 Enterprise 项拖放到右侧面板上。
  6. 单击左侧菜单中的 Scripts 部分以展开它。将刚刚创建的脚本包 Create Database and Tune 拖放到 DB2 Enterprise 上,如图 4 所示。
    图 4. 将包附加到虚拟系统模式
    将包附加到虚拟系统模式
  7. 单击 DB2 Enterprise 部分上的 Edit 并输入有关系统的必要信息,如图 5 所示。单击 OK 继续操作。
    图 5. DB2 虚拟系统模式配置对话框
    DB2 虚拟系统模式配置对话框
  8. 单击脚本报上的 Edit 并输入脚本所需的 DATABASE_NAME,如图 6 所示。单击 OK 继续。
    图 6. 数据库名称对话框
    数据库名称对话框
  9. 单击右上角的 Done editing 保存和退出模式编辑器。
  10. 在 “VSpattern” 页面上,单击右上角的 Deploy,从此模式部署一个虚拟系统。
  11. 单击 Instances,然后从顶部菜单选择 Virtual Systems。这一页显示了虚拟系统的部署状态,如图 7 所示。完成部署后,可以从此页面获取连接信息。
    图 7. DB2 虚拟系统模式的网页部署状态
    DB2 虚拟系统模式的网页部署状态

数据库模式

本节将介绍如何在 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 信息中心

创建工作负载标准:

  1. 创建一个名为 “create_db” 的目录,在此目录下,创建一个名为 “create_db.sh” 的 Shell 脚本文件。此文件的内容类似于清单 3。
    清单 3. create_db.sh 脚本示例
    #!/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
  2. 保存文件并退出。
  3. 创建另一个名为 “tune_db” 的目录,在此目录下创建一个名为 “tune_db.sh” 的 Shell 脚本文件。此文件的内容类似于清单 4。
    清单 4. tune_db.sh 脚本的示例
    #!/bin/sh
    db_name=$2 
    
    db2 connect to ${db_name}
    db2 UPDATE DB CFG USING LOGBUFSZ 1000
    db2 terminate

    该脚本将数据库参数 LOGBUFSZ 更新为 1000。您可以根据需要添加更多命令。

  4. 保存文件并退出。
  5. 将两个目录压缩到一个 zip 文件中,例如 WLDstandard.zip。

上传数据库工作负载标准

创建包之后,将它上传到 PureApplication System。

  1. 以管理员身份登录。
  2. 选择 Catalog,然后从顶部菜单选择 Database Workload Standards,以便打开工作负载标准页面。
  3. 单击页面上的 New 图标创建一个新工作负载标准。输入所有必要的字段并上传刚刚创建的 zip 包,如图 8 所示。
    图 8. 数据库工作负载标准配置对话框
    数据库工作负载标准配置对话框
  4. 单击 Save 保存此标准并退出。

创建一个数据库模式并部署它

将数据库工作负载标准上传到 PureApplication System 后,使用此标准创建一个数据库模式。要从一个数据库模式创建和部署,请执行以下操作:

  1. 以管理员身份登录。
  2. 单击 Patterns,然后从顶部菜单选择 Database Patterns
  3. 单击 New 图标,创建一个新数据库模式。
  4. 输入所有必要的字段并选择刚刚创建的工作负载标准,如图 9 所示。
    图 9. 使用自定义数据库工作负载标准部署 DB2 数据库模式
    使用自定义数据库工作负载标准部署 DB2 数据库模式
  5. 单击 Save 保存模式并退出。
  6. 单击刚刚创建的模式 Dev DB Pattern 打开模式页面。
  7. 单击 Deploy 调出部署窗口。输入数据库名称,比如 mydb,选择要部署的云分组或环境配置文件,如图 10 所示。
    图 10. 数据库模式配置对话框
    数据库模式配置对话框
  8. 单击 OK 开始部署,转到 Instances> Databases 页面来检查部署状态。
  9. 部署完成后,可以在 “My databases” 页面上获取连接信息,如图 11 所示。
    图 11. 部署的数据库模式状态网页
    部署的数据库模式状态网页
  10. 通过执行清单 5 中所示的命令,在本地数据库目录上对此数据库进行编目。
    清单 5. 对远程 DB2 节点和数据库进行编目的命令
    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
  11. LOGBUFSZ 的默认值为 256。它依据 tune_db.sh 脚本中的定义更改为了 “1000”。

结束语

本文介绍了 IBM DB2 数据库软件和它在 IBM PureApplication System 中的应用。DB2 为 PureApplication System 用户提供了一个可免费使用的集成的关系数据库系统,为关联的应用程序提供了一种安全且强大的应用程序数据存储解决方案。因为可通过多种方式在 PureApplication System 中部署 DB2 数据库,所以建议首先从一个 DB2 数据库模式开始,如果有必要,可以使用一个自行定义的数据库工作负载标准来应用配置更改。做出选择之后,请按照本文中的说明完成 DB2 在 PureApplication System 中的部署。

参考资料

学习

获得产品和技术

讨论

条评论

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=WebSphere, Information Management, Cloud computing
ArticleID=813549
ArticleTitle=为 IBM PureApplication System 做好准备,第 3 部分: 选择数据库选项
publish-date=05092012