利用DB2 V10.1中的全局变量实现全球化

本文的第 1 部分 展示了 DB2 V10.1 的安全性特性如何满足将来自多个国家(行政区)的数据整合到单独一组表中的组织的关键">业务需求:

1. 使本地用户仅能访问其所在国家(行政区)的数据
2. 使地区用户仅能访问其所在地区的数据
3. 针对地区用户,实现“地方敏感型”,自动将不同国家(行政区)的币种值转为通用币种(例如,为了汇总分别使用新加坡货币和中国香港货币的两种商品的价格,需要进行币种转换)
4. 根据用户是本地用户还是地区用户来屏蔽列数据

本文以第1 部分作为基础,展示了如何利用全局变量和数据库角色来降低代码复杂性、提高有用性,同时动态计算对地方敏感的日期/时间段。

提高指定日期/时间值时的有用性

全局变量可用于使 SQL 更易理解。您不必再在 SQL 语句中指定复杂的公式,而是可以为该公式创建一个全局变量,直接指定该变量。全局变量提供了共享的通用例程,可在任何 SQL 中使用它们,这些例程消除了重复编写相同代码的需要。除此之外,利用全局变量时,只需在指定公式的位置创建变量一次,因此可减少 SQL 中的错误。

全局变量支持使用描述性名称,这有助于用户或读者确定应执行哪些计算。例如,指定一周的第一天时,可以在查询中包含这样的计算:

SELECT … FROM REAL_ESTATE_SALES
WHERE PROPERTY_TYPE = ‘CONDO’
AND EFFECTIVE_DATE =
CURRENT_DATE – (DAYOFWEEK_ISO (CURRENT_DATE)-1) DAYS)

我们也可以创建一个全局变量来改善可读性。这允许任何查看 SQL 语句的用户确定查询执行的日期计算:

CREATE VARIABLE FIRST_DAY_OF_WEEK DATE
DEFAULT
(CURRENT_DATE – (DAYOFWEEK_ISO (CURRENT_DATE)-1) DAYS)

现在,可将查询写为:

SELECT … FROM REAL_ESTATE_SALES
WHERE PROPERTY_TYPE = ‘CONDO’
AND EFFECTIVE DATE = FIRST_DAY_OF_WEEK

全局变量允许我们指定一个“常量”,全局变量的名称表示业务查询执行的操作。下面给出了几个常用的日期/时间段:
1. 今天
2. 昨天
3. 明天
4. 一个月的第一天
5. 一个月的最后一天
6. 一个星期的第一天
7. 当前季度的第一天
利用全局变量,可以通过用户友好、易于阅读的格式表示这些时间段。下面给出了上述时间段的定义。
今天:

CREATE VARIABLE TODAY DATE DEFAULT CURRENT DATE

昨天:

CREATE VARIABLE YESTERDAY DATE DEFAULT CURRENT DATE – 1 DAY

明天:

CREATE VARIABLE TOMORROW DATE DEFAULT CURRENT DATE + 1 DAY

一个月的第一天:

CREATE VARIABLE FIRST_DAY_OF_CURRENT_MONTH DATE
DEFAULT
(CURRENT_DATE – (DAY (CURRENT_DATE)-1) DAYS)

一个月的最后一天:

CREATE VARIABLE LAST_DAY_OF_CURRENT_MONTH DATE
DEFAULT
(LAST_DAY (CURRENT DATE))

一个星期的第一天:

CREATE VARIABLE FIRST_DAY_OF_WEEK DATE
DEFAULT
(CURRENT_DATE – (DAYOFWEEK_ISO (CURRENT_DATE)-1) DAYS)

当前季度的第一天(请注意,定义中也使用了全局变量 FIRST_DAY_OF_THE_CURRENT_MONTH):

CREATE VARIABLE FIRST_DAY_OF_QUARTER DATE
DEFAULT
(ROUND (FIRST_DAY_OF_CURRENT_MONTH,’Q'))

时间: 2024-11-10 10:57:47

利用DB2 V10.1中的全局变量实现全球化的相关文章

如何在SAP环境下升级到DB2 V10.5

IBM DB2 V10.5 for Linux, Unix, and Windows,简称 DB2 V10.5,是 IBM 在 Linux,Unix 和 Windows 平台上的企业级数据库产品 DB2 for LUW 的http://www.aliyun.com/zixun/aggregation/29707.html">最新版本,它已于 2013 年 6 月正式发布.DB2 V10.5 提供了很多新的功能特性以及对一些老的 DB2 特性做了加强,很多用户由于业务系统的需要,希望将 DB

DB2 v10.5索引特性的功能和性能使用案例

索引是数据库的应用中提高查询性能的重要手段.DB2 v10.5 加入了多项关于索引方面的改进来,提升了索引的功能和性能,让索引的使用变得更加灵活和方便.这些新特性包括:排除空键索引(EXCLUDE NULL KEYS INDEX).表达式索引(INDEX ON EXPRESSION)以及新的索引键排序方式随机排序(Random)的支持. 在http://www.aliyun.com/zixun/aggregation/29707.html">最新版本的 Optim Query Worklo

DB2 LUW V10.1中多温度存储管理的特性说明

DB2 LUW V10.1 中引入了多温度http://www.aliyun.com/zixun/aggregation/14290.html">存储管理的特性,通过该特性,用户可以根据数据访问的频度来决定存放的存储设备,从而充分发挥各种存储设备的特长,使系统性能达到最优. 在用户数据不断爆炸增长的今天,对于数据库中存储数据所用设备的要求也不断提高,要求设备容量越来越大,速度越来越快.随着技术的不断进步和发展,为了满足这些需求,存储设备的种类不断增加,各类存储设备也不断更新换代.在已有的存

IBM Inforsphere Federation v10.1中“三部分名字”的支持

联邦数据库三部分名字简介 联邦数据库使用昵称访问和管理远程数据源,每一个昵称对应着远端数据源的一个对象.不过,在一个大型联邦数据库环境中,每一个远端数据源服务器上都包含了大量的数据库对象(例如:表,试图等),用户需要为每一个远端对象创建一个昵称.在这样的环境下,创建昵称就成了一件非常繁琐的事情.另外,管理这些昵称也加重了用户的管理工作. 为了解决这个问题,在联邦数据库最新版本 V10.1 中引入了一种全新的解决方法-"三部分名字".简单的说,就是在创建了包装器.服务器以及用户映射的基础

DB2 V10.5.0如何合理高效的收集数据库对象统计信息

DB2 优化器是基于成本的优化器,SQL 语句的访问计划是通过成本计算得到的,而成本的计算又是基于数据库对象的统计信息,所以实时准确的统计信息,对于查询效率至关重要. 那么到底应该何时收集统计信息呢?在 DB2 V10.5.0 之前,大部分用户主要会采取两种方式,一种是有经验的 DBA 根据业务的具体情况或通过一些估计来确定收集的时间,另一种就是定一个收集周期,即每间隔多长时间收集一次,显然这两种方法都存在问题,第一种方式需要对数据进行大量的评估和计算,费时费力,第二种方式则缺乏科学依据,假如在

DB2 V10.1将现有数据库升级为多温度存储数据库

在将现有数据库升级为多温度http://www.aliyun.com/zixun/aggregation/17326.html">存储数据库之前,必须先将它们升级到 DB2 V10.1.在升级 DB2 服务器和数据库之前,请备份数据库.请参阅 DB2 V10.1 文档中的"升级数据库"一节,了解有关的完整细节.下面的过程描述了将现有数据库升级为多温度存储数据库的步骤顺序. 1. 使用 UPGRADE DATABASE 命令将现有数据库升级到 DB2 V10.1 版本.

利用Kprobe探测内核中的变量

今天遇到一个问题,需要探测内核中buffer cache block的大小.我想到了Kprobe这个神奇的工具,并且很好的探测到了内核中的变量值,非常的方便,在此分享一下. 采用dd等工具写设备的时候,是需要经过块设备层的buffer cache,当请求块大小小于buffer cache的block_size时,Linux的策略是首先需要从磁盘load数据至buffer cache,然后再将新写入的"局部数据"写入buffer cache.这一步骤完成之后,会将整个buffer cac

c语言-有关C语言中基于全局变量对二叉树的创建和遍历的问题

问题描述 有关C语言中基于全局变量对二叉树的创建和遍历的问题 #include#include#define max 100typedef struct node{ char date; struct node lchild*rchild;}tree*TREE;tree *DLR=NULL;void creatDLR() { //先序递归方式创建树 char date; date=getchar(); if(date=='#')DLR=NULL; else { if(!(DLR=(tree)ma

DB2 V10.1多温度数据管理:备份和恢复考虑因素

当一个http://www.aliyun.com/zixun/aggregation/8302.html">数据仓库在廉价.更慢的存储设备上存储了大量冷数据时,与仅包含快速存储设备的环境相比,它会花更多的时间来进行完整的数据库备份.备份时间与存储设备的速度直接相关.因此,对于具有多温度数据的仓库,最佳实践建议是实现在线表空间备份.使用一种基于表空间备份的备份战略,而不是完整数据库备份,这样可以执行基于数据温度的细粒度备份.例如,您可以一个月备份一次冷数据和休眠数据(与数据从一个温度层到另一