DB2 与 Ruby on Rails: DB2 与 Ruby on Rails 入门

来源:互联网 发布:网络主播新闻稿 编辑:程序博客网 时间:2024/06/11 16:51

Ruby 语言的出现并与强大的 Rails 框架结合,为 Web 解决方案的开发带来了巨大的机遇。随着 IBM_DB 适配器和驱动程序的引入,Rails 应用程序现在可以无缝地与 IBM 数据服务器进行交互。本文是 DB2 with Ruby on Rails 系列的第一篇文章。文中介绍了 Starter Toolkit for DB2 on Rails,谈到了安装 IBM_DB 驱动程序的多种方法以及使用 DB2 的 Rails 迁移。
简介

Ruby on Rails 发布于 2004 年,如今已快速成为 Web 应用程序开发中最流行的框架之一。这个开放源代码项目又名 Rails 或 RoR,它采用 Model-View-Controller (MVC) 架构和 Ruby 面向对象脚本编制语言,并遵循一些简单的原则,例如 “约定优于配置(convention over configuration)” 和 “不要重复自己(don't repeat yourself)”。因此,开发人员可以更快、更容易地构建应用程序,减少冗余的代码和配置文件,同时又能灵活地创建定制的扩展,以满足应用程序需求。通过对数据库持久性的支持,可以使用数据库服务器和内置的 WEBrick Web 服务器快速开发使用这种框架的 Web 应用程序。

IBM_DB 为 Rails 领域带来了什么?

随着 RubyForge 社区门户上开始提供 IBM_DB Rails 适配器和 Ruby 驱动程序,Ruby on Rails 框架经过官方测试,并且在所有 DB2 数据服务器上受支持。对于你们当中某些人来说这也许是个惊喜,社区还有一个免费版本的名为 DB2 Express-C 的 DB2 9 数据库可以使用。DB2 Express-C 数据服务器的开发、部署和分发是免费的,没有大小、时间或用户方面的限制,而且还包括了 Starter Toolkit for DB2 on Rails。这个包可以帮助开发人员在使用 DB2 的 RoR 环境中快速、轻松地设置和构建 Web 应用程序。

虽然在 Rails 框架中可以配置的数据存储有很多种,但 DB2 数据服务器可以带来一些独特的、突出的优点。由于 DB2 9 中引入了 pureXML™,使用 IBM 数据服务器的首要优点是,IBM_DB 适配器和驱动程序支持本地 XML 数据类型。

DB2 on Rails 入门

目前有两种方法可以设置使用 DB2 的 Rails 开发环境。如果您对 DB2 环境不熟悉,那么可以借助 Starter Toolkit for DB2,这是开始进行 DB2 on Rails 应用程序开发的最方便的方式。Starter Toolkit version 2.1 可以从 alphaWorks 下载,其中还有一个稍旧版本的 IBM_DB 适配器的安装程序。这个版本不支持 i5 和 zOS 平台上的 DB2,但是更新工作正在进行,很快就会有新版本可供下载。

在 IBM_DB 适配器和驱动程序 gem 及插件发布之后,如果要在一个已有的 DB2 环境中开发 Rails 应用程序,那么可以使用 “manual” 选项,这个选项使用起来同样也很轻松。请参阅 RubyForge rubyibm project 获得最新版本(从 4 月 30 日起,Production/Stable release 0.6.0 已经可用)。

手动逐步安装 DB2 Express-C 9

首先下载和配置 DB2 Express-C 数据服务器和 Rails 运行时环境。最新版本的 IBM_DB 适配器和驱动程序要求使用 DB2 9,FixPack 2 或 DB2 8,FixPack 15。为了下载和配置 DB2 Express-C 数据服务器和 Rails 运行时环境:

访问以下网站,并下载 DB2 Express-C 9 FixPack 2 。
下载 One-click Ruby Installer (包含 Ruby 和 Rubygems)。
安装 Rails gem 及其依赖项:

gem install rails --include-dependencies



注 1:由于与 IBM_DB 驱动程序和适配器中的一些重要更改有关联的 CLI 修复包(与数值引用相关)的缘故,需要使用 DB2 Client 9 FP2。

注 2:大多数 DB2 9 上的 Rails 应用程序都要求至少 1024 的 APPLHEAPSZ。 db2 update db cfg for using APPLHEAPSZ 1024



为了更新 db cfg,需要对 DB2 进行重启(db2stop 加 db2start 命令)。

只有手动安装 IBM_DB 适配器和驱动程序(方法 2)时才需要考虑这个问题,因为在最新的 Starter Toolkit for DB2 on Rails 中这个值是默认的。


将 IBM_DB 适配器和驱动程序安装为 Ruby gem,与 Rails plugin 比较

为了帮助理解 Ruby gem 安装与 Rails plugin 安装之间的区别,下面简要描述一下运行时环境。

RubyGems 是用于 Ruby 运行时环境中的库和应用程序的标准打包和安装框架。对于每个 bundle,在一个中央存储库中会发布并存储一个遵从打包格式的名为 gem 的文件,以允许同时部署同一个库或应用程序的多个不同的版本。与 Linux 发布打包管理和 bundle(.rpm、.deb)类似,通过 gem 终端用户实用程序也可以查询、安装、卸载和操作这些 gem。gem 实用程序可以无缝地查询远程 RubyForge 中央存储库,并且可以查找和安装任何已有的能使 Rails 开发人员更轻松的实用程序。安装了 IBM_DB gem 之后,马上便可以在 Ruby 运行时环境中通过以下命令从任何脚本(和应用程序)中访问其功能:

require 'rubygems'
gem 'ibm_db' (在 Rubygems 0.9 中,require_gem 已经不赞成使用,而被 gem 替代)
作为一个 ActiveRecord 适配器,在 Rails 框架中使用它之前,IBM_DB gem 需要由抽象适配器注册到它的 RAILS_CONNECTION_ADAPTERS (active_record.rb) 列表中。注册之后,会加载 IBM_DB gem 和它的依赖项(ibm_db Ruby driver、IBM Driver for ODBC 和 CLI)。这样便使得 Ruby 环境中的任何应用程序,包括 Rails,可以与 IBM 数据服务器交互。正如 IBM_DB gem README 文件(见本文 参考资料 小节)中描述的那样,每过几个简单的步骤,就要启用 Ruby 运行时,以访问 IBM 数据服务器。

注 3:在 Windows 环境中,当运行 “gem install ibm_db” 时,对于每种版本(mswin32 或 ruby)有两个选择。通过选择 “mswin32”,可以安装预先构建的用于 Windows 的二进制文件。

例子:

D:/>gem install ibm_db
Bulk updating Gem source index for: http://gems.rubyforge.org
Select which gem to install for your platform (i386-mswin32)
1. ibm_db 0.6.0 (mswin32)
2. ibm_db 0.6.0 (ruby)
3. ibm_db 0.4.6 (ruby)
4. ibm_db 0.4.6 (mswin32)
5. Skip this gem
6. Cancel installation





将 IBM_DB 适配器和驱动程序安装为 Ruby Gem

发出 gem 命令,安装 IBM_DB 适配器和驱动程序:

D:/>gem install ibm_db



将 ‘ibm_db’ 注册到 Rails 框架中的连接适配器列表中。

将 ibm_db 手动添加到 gems/1.8/gems/activerecord-1.15.3/lib/active_record.rb:

RAILS_CONNECTION_ADAPTERS = %w( mysql postgresql sqlite ... ibm_db )



Rails 插件为该框架自身提供了扩展机制。通过这种机制,Rails 可以在一个特定的 Rail 应用程序范围内扩展其功能。因此,当 Ruby 运行时环境中没有部署 IBM_DB gem 时,这提供了另一种访问 IBM 数据服务器的方法。虽然 Rails 插件没有提供特定于 Ruby gem 的版本管理,但是它们提供了一种有用的初始化机制,该机制允许 IBM_DB 插件在其初始化期间自己插入到 Rails 注册表中。因此,在应用程序中以插件形式安装 IBM_DB 之后,无需任何手动步骤,就可以让 Rails 框架加载它。正如 IBM_DB 插件 README 文件和 RubyForge 上的 rubyibm 项目文档 中描述的那样,只需注册插件源,并运行 Rails 应用程序安装脚本,就可以启用 Rails 应用程序,以便进行 IBM 数据服务器访问。虽然 RubyForge 可以启用到 Subversion (SVN) 库的 HTTP 访问(目前只支持 SVN 协议),在 Windows 上安装 Rails 插件时,仍然需要一个 SVN 客户机。在大多数 Linux® 和 UNIX® 发行版上,SVN 客户机是默认提供的,这使得 IBM_DB 插件安装具有很好的无缝性。






回页首




客户机环境

IBM_DB 适配器(ibm_db_adapter.rb)对 ibm_db 驱动程序存在直接依赖,它利用 IBM Driver for Open Database Connectivity (ODBC) and Call Level Interface (CLI) 连接到 IBM 数据服务器。 IBM CLI 是 IBM 数据服务器的可调用 SQL 接口,它遵从 ODBC。

对于 IBM_DB 适配器和驱动程序还有一些额外的注意事项。

IBM Driver for ODBC 和 CLI 的安装必需满足 IBM_DB 需求。

可以通过完全安装 DB2 数据库获得 IBM Driver for ODBC 和 CLI,也可以从 “IBM DB2 Driver for ODBC and CLI overview” 中单独获得这两个组件。

可以使用 CLI 关键词在任何 Ruby 应用程序之外修改驱动程序行为。

可以使用一些 CLI 关键词在 Rails 应用程序之外修改某些事务行为。例如,可以使用它们来设置当前模式或者修改一些事务元素,例如关闭自动提交行为。关于 CLI 关键词的细节可以参阅以下 DB2 Info Center 文档:

Version 8

Version 9

诊断信息的收集需要 CLI driver 跟踪实用程序。

由于通过 IBM_DB driver 的所有请求都是使用由 IBM Driver for ODBC 和 CLI 提供的 API 实现的,CLI 跟踪是识别使用 IBM_DB 适配器和驱动程序的应用程序中的问题的重要机制。

CLI 跟踪捕捉应用程序向 IBM driver for ODBC 和 CLI 发出的所有 API 调用(包括所有输入参数),并捕捉驱动程序返回给应用程序的所有值。它是设计用来捕捉应用程序如何与 IBM driver for ODBC 和 CLI 交互的一种接口跟踪,并提供关于驱动程序内部工作的信息。

Version 8

Version 9






回页首




数据库模式的变更

在一个多变的环境中,应用程序需要动态地做出调整,以解决新的需求和挑战。当应用程序开发人员更改他们的应用程序时,例如添加一个新的对象或类,就需要修改底层持久性,以确保数据库与应用程序同步。更改数据库模式的传统方法是生成新的 SQL 脚本。但是,通过 SQL 脚本难于按版本依次保存应用程序和数据库。而且,数据库开发人员很少构建 SQL 脚本来逆转数据库模式中做出的与应用程序更改相关联的更改。在大多数开发环境中,更改是通过删除所有数据库对象,并使用之前版本的 SQL(DDL)脚本重新创建它们来逆转的。

对于很多 Web 开发人员来说,在 Rails 上的主要发现是其内置的对通过迁移来变更模式的支持。虽然数据库开发人员肯定更倾向于通过 DDL 或数据操作语言(DML)使用 SQL,但大多数应用程序开发人员更乐意坚持使用他们的工具:Ruby 语言和它的库。这正是 Rails 通过迁移提供的东西:一个简单而有效的基础设施,它利用 ActiveRecord 抽象按版本依次创建和修改数据库对象,例如表和列。通过 Rails 迁移完成模式变更这一主要的数据库管理任务。Rails 框架简化了开发,但是相关的工具(rake 任务)在驱动数据库更改和使应用程序代码与表结构同步方面也非常有效。

 
原创粉丝点击