二、报表数据库的使用限制
虽然说报表数据库有一系列的特点,不过可惜的是,其在使用的过程中仍然有不少的限制。这些限制主要体现在如下几个方面。
(一) 是这个解决方案对于操作系统有一定的要求。虽然说大部分情况下操作系统与数据库是各自独立的两个系统。不过SQLServer2008是一个例外。其很多特性都需要依赖于特定的操作系统才能够实现。这个通过可缩放数据库来实现报表服务器的解决方案就是如此。根据笔者的测试,发现这个数据库必须部署在2003 SP1版本或者以上版本才可以。否则的话,就无法实现。这一点数据库管理员必须要引以足够的重视。
(二) 是对于报表服务器实例的限制。虽然说对于可缩放共享数据库的数量上没有一个严格的限制。但是从性能上考虑,对此还是有一个要求。一般情况下,最好能够将其服务器实例控制在8个以内。如果超过这个数量的话,则服务器的性能会有明显的下降。可以说,这是一个临界点。当然,如果企业报表查询的数据量特别大,则需要适当的降低这个数量。具体服务器实例的数量设置多少为宜没,主要还是需要根据日常的应用来定。如可以设置不同的数量来设置其对于服务器的影响,从而确定最合理的个数。
(三) 是需要注意一些技术功能上的限制。如对于可缩放的共享数据库,使不支持数据库快照的。再如数据库必须位于只读卷上,等等。虽然这些内容比较细小,但是都是管理员在部署这个方案时必须要注意的内容。否则的话,就可能会遇到一些莫名其妙的问题。
三、使用更新循环来更新数据
在上面的叙述中,笔者多次强调表表数据库是只读的。那么如何保证报表服务器中的数据同数据库服务器中的数据是同步的呢?如果不及时同步的话,则报表服务器中的数据最终会变得非常的陈旧。故必须要有一种机制,可以实现刷新数据库从而使得报表数据保持为最新的状态。这个机制在SQLServer2008种就叫做更新循环。
更新循环从分离阶段开始,在卸除万所有报表服务器中的所有报表卷时结束。通常情况下,更新循环包括三个阶段,分别为分离阶段、刷新阶段与附加阶段。
在分离阶段的时候,数据库引擎会从每台报表服务器的可缩放共享数据库配置中删除陈旧的数据库。在给定的报表服务器中必须完成这个阶段后,才能够使报表数据库的新版本在这个服务器中变为可用。这里需要注意的是,在删除陈旧数据库的时候,数据库工程师必须要停止从每个服务uqi实例进入到这个数据库的查询工作负荷。然后工程师才能够在每台报表服务器中分离数据库。当报表数据库从最后一个服务器实例分离的时候,便可以停止用作可缩放共享数据库。这个阶段的核心人物,就是需要卸除包含陈旧数据库的一组报表卷。
当分离阶段完成后,便进入到了刷新阶段。顾名思义,这个阶段主要是用来更新同一组报表卷上的数据库。刷新数据主要是通过两种方式来实现。一是通过导入当前数据库中的数据来更新;二是通过还原最近生产数据库备份来重新生成数据库。到底采用哪种方式,主要取决于企业的需求以及数据库管理员的爱好。一般来说,没有强制的规定。
最后一个阶段是附加阶段。如果要完成一组报表卷的更新循环,则管理员必须要要扩展已经刷新的数据库。如果有一组报表卷用户可缩法共享数据库的配置,则更新期间的福建过程等同于最初的附加过程。虽然这听起来比较拗口,但是数据库管理员只需要知道这个过程的存在既可。因为这个过程跟上面讲到的其他两个过程不同,不需要管理员进行手工的配置或者干预,系统会自动完成。
总之在采用这个解决方案的时候,笔者认为数据库工程师主要需要了解三个问题。一是在什么情况下需要采用;二是实现这个方案时的一些限制条件,三是这个方案中的关键环节“更新循环”中的配置细节。掌握这三部分关键内容之后,再去实施这个方案应该难度不会很大。