Do more with less的压缩技术
随着数据库信息的不断膨胀,尤其是近几年新兴的数据仓库技术,数据库的存储似乎渐渐成了问题,在涉及大数据量提取、计算的领域I/O再次成为了制约数据库、数据仓库整体性能的瓶颈。DB2 9把压缩技术引入数据库的存储领域,通过建立压缩数据字典方式,很好的把现代商用数据库中大量使用的Char 和Varchar 类型字段进行压缩,大大节省了用户端查询时的网络延迟。
DB2 9的压缩原理其实非常简单,就是用单个数值代替尽量连续的更多容量的重复数据,例如下表:

压缩后,实际的表和压缩字典的保存结果:

通过压缩,在完成同样数据存储时根据IBM的统计资料往往可以节省50%——80%的空间,而且对于Internet 上的数据查询,普遍也可以减少响应时间。
RDBMS 层次的分区——表分区
DB2提供了新的分区技术——表分区,通过它将提高性能并减低数据仓库的管理时间,它可用于定义每个分区的数据范围并根据数据范围将数据存储为单独的对象,例如可以按照区域和时间段把同一个表分割为不同的存储对象,这些存储对象可以存放在不同的表空间、同一表空间中或两者的结合,如图6。 
图6:DB2 Viper 按照时间段划分的表分区
与以往“三大”所支持的数据库分区不同的是,此次DB2 9的表分区提供了更细颗粒度的RDBMS的分区技术,一方面大大提高了OLTP 的分段统计功能的要求,另一方面对于数据仓库而言可以更好的基于某一个轴提取分区的数据并用于聚合计算。
表分区可以单独使用,也可以与其它组织模式结合使用。在建立表分区的CREATE TABLE语句的每个子句都包括一个指示应如何组织数据的算法。以下三个子句说明了数据组织的级别,这些级别可以任何组合形式来使用:
◆ DISTRIBUTE BY:将数据均匀地存储在各个数据库分区中。此子句用于使内部查询平行和平衡每个数据库分区的负荷。此概念称为数据库分区,由DPF激活。
◆ PARTITION BY:依据同一数据分区中单个维的相似值来对行进行分组。此概念称为表格分区。
◆ ORGANIZE BY:依据同一表格范围中多个维的相似值来对行进行分组。此概念称为多维群集 (MDC)。
此外,在建立表分区的时候,如果采用的是DISTRIBUTE BY 或者PARTITION BY的时候,可以把不同的分区对象保存在不同的表空间之中。进一步通过分割I/O获得更好的并行效率。
恰逢其时的安全控制等级—— LBAC
根据公安部发文要求,今年是我国主要信息系统采取等级保护的第一年,其中对于每个重点行业核心及其核心辅助信息系统的按照重要程度一般会划分为3 级保护,刨除其中许多政策性、指导性的要求外,一个明确的目标——“可标识系统安全保护”是个硬性的指标,它意味着如果不满足这个要求的数据库产品很可能根本没有资格参与国内主要行业的集成或者开发项目的竞标。
Oracle 10g 在推出时已经把LBAC 从AdvancedSecurity Option中提出出来,作为Database Engine的安装选项,DB2 9今年发布时提供了LBAC的特性可以说恰逢其时。相形之下,SQL Server 2005似乎落后于我国的信息系统安全保护建设政策了。
DB2 9使用基于标签的访问控制(LBAC) 来解决安全问题,该访问控制在单个行和列级别上提供最精细的读写访问。较之以往基于角色的安全性而言,LBAC需要在初期定义更高层次的安全控制——安全策略,而且将明确的数据安全管理员角色引入到数据库的管理之中,他与数据库管理员相互制约,对于减少以往数据库管理员个人大权独揽之下的审计风险有很大的帮助。
创建安全策略之后,安全管理员可以创建所谓安全标签的对象,它们是该策略的一部分。受安全标签保护的数据称为受保护数据。安全管理员通过向用户授予安全标签来允许用户访问受保护数据。用户尝试访问受保护数据时,系统将对用户的安全标签与保护该数据的安全标签进行比较。如果用户尝试读取LBAC 不允许访问的受保护行,DB2将当作没有存在那些行来处理。那些行不能选择作为您运行的任何SQL语句的一部分,包括SELECT、UPDATE 或DELETE。更为重要的是,这些被忽略的行将不会参与聚合计算,例如:Count、Avg、Sum等。