数据架构师:DB2 程序员已经出现了
2009-11-16 00:00:00 来源:WEB开发网递归式 SQL 是一种以关系方式处理层次化数据的方法,它使 DB2 能够通过遍历数据的逻辑层次结构生成所需的结果集。递归式 SQL 实际上包含三个 SELECT 语句,第一个 SELECT 语句以通用表表达式 (CTE) 的形式生成最初的结果集。第二个 SELECT 语句也是 CTE 的一部分,它通过 UNION ALL 与第一个 SELECT 语句联结在一起,引用它所属的 CTE(CTE 也可以与另一个表联结)。第二个 SELECT 语句最终会在 CTE 中添加一行或多行。它会反复执行(这就是递归部分),每次都根据此语句前一次递归执行所添加的行在 CTE 中添加一行或多行。当递归结束时(因为某一条件成立,或者因为到了层次结构的 “底部”),第三个 SELECT 语句获取动态构建的 CTE 中的行,这样就获得了组成特定产品的所有部件(包括子部件和子 - 子部件)。
递归式 SQL 非常强大。由于篇幅的限制,这里就不详细讨论。可以在 Application Programming and SQL Guide 和 SQL Reference, Volume 1 中找到递归式 SQL 的示例(参见 “参考资料”)。
在使用 SQL 以外的语言编写(而不是使用 SQL 本身作为编程语言)的程序中,能够用 SQL 语句实现本文提到的功能吗?当然能。既然如此,DB2 编程又有什么意义呢?
位置是极其重要的
这个问题就涉及到功能在应用程序系统中的逻辑位置。应用程序中常常有多个松散耦合的层,它们分别处理表示(用户界面层)、业务逻辑和数据访问。 SQL 不适合编写用户界面和业务逻辑,但是在 DB2 作为系统的数据服务基础的情况下,以我的观点,SQL 是编写数据层程序的理想语言。
尤其是在 SQL 过程中,SQL 具备以下优势:
高效
SQL 过程是经过编译的数据服务器端代码,包含预先优化的(即与包绑定的)与表直接相关的 SQL 语句。
安全
业务层应用程序授权 ID 只需具有对 SQL 过程和相关包的 EXECUTE 特权,而不需要直接访问表的特权。 SQL 过程还能避免用户接触到数据库模式信息,从而防止恶意用户利用这些信息入侵数据库。
有助于开发人员的合理分工
因为数据层程序员可以用 SQL 编写代码,所以可以满足业务层开发人员的各种数据访问需求(用各种语言编写的程序都可以调用 SQL 过程,既可以直接调用存储过程,也可以通过 Web 服务调用),从而将他们的精力集中在编写高效数据操作语句上。
DB2 SQL 为构建高效、健壮和先进的数据访问应用程序提供了强大的功能和灵活性。让那些知道如何处理关系数据的程序员编写与 DB2 交互的代码,并让他们使用 SQL 编写程序。这些人就是 DB2 程序员,他们在注重信息服务系统的战略意义的组织中工作。我希望 DB2 程序员越来越多。
更多精彩
赞助商链接