假设您的企业决定将所有单独的数据库和数据集市整合为单独一个企业">数据仓库。除了必要的技术工作之外,整合数据集市可能带来诸多挑战。构建企业数据仓库往往意味着改动现有策略、创建新策略、组织重组、审查和更改最佳实践,依此类推。
当然,整合同样也能带来许多优势。举例来说,通过消除数据孤岛,多个业务线将能够访问相同的信息,允许所有人根据相同的信息制作报表,最终提高报表准确性。
将来自多个国家(行政区)的数据整合到同一组物理表中时,面临的挑战与任何系统或数据集市整合项目并无二致,甚至还要更多一些。例如,遵守各国的安全性和法规要求,处理货币和汇率,这些都是极为复杂的问题。
在未来的文章中,我们将进一步讨论有关货币和汇率的主题。首先,我们来查看一下安全性。
行级和列级安全性
尽管隐私性和数据安全性始终是一个关键问题,但将来自多个国家(行政区)的数据并入单独一组表中时,隐私和安全性尤为敏感。职责分离和关注各国法规与安全合规性法律是不可妥协的要求。
DB2 V10.1 引入了行和列访问控制特性,可帮助组织满足这些要求。行和列访问控制有时也称为细粒度访问控制 (FGAC),它们提供了诸多优势:
分离 DBA 和安全性/访问控制职责
无需查看即可实施安全性,简化应用程序开发
能够控制用户可查看哪些行(以及这些行中的哪些数据)
在实施行和列安全性时,无需更改业务查询
为了演示行和列安全性,下面我们举例说明如何将不同国家(行政区)的数据整合到同一个表中。
表 REAL_ESTATE_SALES 存储着有关各国房地产销售的数据:
CREATE TABLE REAL_ESTATE_SALES
(
COUNTRY_CODE SMALLINT NOT NULL,
PROPERTY_TYPE SMALLINT NOT NULL,
ACCOUNT_NUMBER INTEGER NOT NULL,
TRANSACTION_TYPE VARCHAR (10),
TRANSACTION_AMOUNT DECIMAL (12, 2) NOT NULL,
TRANSACTION_DATE DATE NOT NULL,
EFFECTIVE_DATE DATE NOT NULL,
EXPIRY_DATE DATE NOT NULL
)
根据要求,用户应只能访问来自其自己国家(行政区)的数据。行访问数据安全性的业务需求如下:
1. 数据库角色将用于确定用户可以查询哪些行,而角色的名称包含该角色定义所对应的国家(行政区)名称(例如,SINGAPORE_ROLE 角色对应于新加坡)
2. 各国家(行政区)的行将按其国家编码识别(例如,65 是新加坡的国家编码)
3. 每名用户都会被添加到其所在国家(行政区)的数据库角色之中,因而都仅能访问来自其所在国家(行政区)的数据为了满足这项要求,需要使用 CREATE ROLE 和 CREATE PERMISSION 语句。因此,需要针对各国家(行政区)创建角色:
CREATE ROLE ARGENTINA_ROLE
CREATE ROLE AUSTRALIA_ROLE
CREATE ROLE BRAZIL_ROLE
CREATE ROLE CHINA_ROLE
CREATE ROLE EGYPT_ROLE
CREATE ROLE HONG_KONG_ROLE
CREATE ROLE INDIA_ROLE
CREATE ROLE KENYA_ROLE
CREATE ROLE MEXICO_ROLE
CREATE ROLE NEW_ZEALAND_ROLE
CREATE ROLE SINGAPORE_ROLE
CREATE ROLE SOUTH_AFRICA_ROLE
CREATE ROLE UNITED_ARAB_EMIRATES_ROLE