一种分布式数据统一汇总报表展示的方法、系统及装置转让专利

申请号 : CN200910250645.X

文献号 : CN101719934B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张广奎

申请人 : 杭州华三通信技术有限公司

摘要 :

本发明公开了一种分布式数据统一汇总报表展示的方法,包括:A、上级节点获取所属下级节点的数据库IP地址;所述数据库IP地址存储于所述上级节点的数据库中或文件中;B、所述上级节点判断系统重建连接服务标识是否有效,如果无效,则所述上级节点建立所述下级节点的数据库IP地址与链接服务器的对应关系,并执行步骤C;否则,直接执行步骤D;C、所述上级节点执行建立数据展示的视图view脚本;D、利用所述view脚本通过所述链接服务器访问各个下级节点的数据库,根据各个层次来分组和汇总展示报表数据。本发明实现了上级节点简便、高效、灵活地汇总下级节点的数据。

权利要求 :

1.一种分布式数据统一汇总报表展示的方法,应用于包括多层分级节点的系统中,相邻两层节点互为上级节点和下级节点,其特征在于,所述方法包括以下步骤:A、上级节点获取所属下级节点的数据库IP地址,将所述获取到的下级节点的数据库IP地址存储于所述上级节点的数据库中或文件中;

B、所述上级节点判断系统重建连接服务标识是否有效,如果无效,则所述上级节点建立所述下级节点的数据库IP地址与链接服务器的对应关系,并执行步骤C;否则,直接执行步骤D;

C、所述上级节点执行建立数据展示的视图view脚本;

D、所述上级节点利用所述view脚本通过所述链接服务器访问各个下级节点的数据库,根据各个层次来分组和汇总展示报表数据;

其中,所述系统重建连接服务标识初始默认为无效。

2.如权利要求1所述的方法,其特征在于,通过所述链接服务器访问各个下级节点的数据库,具体包括:在下级节点上预先创建公共用户reportview,所述用户拥有下级数据库中所有业务访问权限;

所述上级节点使用所述公共用户reportview访问所述下级节点的数据库,获取报表数据,所述报表数据携带本级地区号、下级地区号、下级地区号对应的数据内容。

3.如权利要求1所述的方法,其特征在于,当有新下级节点的数据库IP地址增加到上级节点时,将所述系统重建连接服务标识设置为无效,所述上级节点重新创建下级节点的链接服务器和对应view。

4.如权利要求1所述的方法,其特征在于,还包括:步骤D中当展示报表数据成功后,设置系统重建连接服务标识为有效,使下次系统启动时不需要重新执行建立数据展示的视图view脚本。

5.如权利要求1、3或4所述的方法,其特征在于,所述系统重建连接服务标识具体为系统部署后的初始系统重建连接服务标识,当所述标识为0时设置为无效,当所述标识设置为1时则设置为有效。

6.一种分布式数据统一汇总报表展示的系统,包括多层分级节点,相邻两层节点互为上级节点和下级节点,其特征在于,所述上级节点,用于获取所属下级节点的数据库IP地址,所述数据库IP地址存储于所述上级节点的数据库中或文件中;判断系统重建连接服务标识是否有效,如果无效,则建立所述下级节点的数据库IP地址与链接服务器的对应关系,执行建立数据展示的视图view脚本,并利用所述view脚本通过所述链接服务器访问各个下级节点的数据库,根据各个层次来分组和汇总展示报表数据;如果系统重建连接服务标识有效,直接利用view脚本通过所述链接服务器访问各个下级节点的数据库,根据各个层次来分组和汇总展示报表数据;

其中,所述系统重建连接服务标识初始默认为无效;所述下级节点,用于预先创建公共用户reportview,所述用户拥有下级数据库中所有业务访问权限;当所述上级节点使用所述公共用户reportview访问所述下级节点的数据库时,将所述下级节点的数据库中的报表数据传递给所述上级节点,所述报表数据携带上级地区号、本级地区号、本级地区号对应的数据内容。

7.一种分布式节点,应用于包括多层分级节点的系统中,相邻两层节点互为上级节点和下级节点,其特征在于,所述分布式节点包括:IP地址获取模块,用于当分级节点为上级节点时,获取所属下级节点的数据库IP地址,将所述获取到的下级节点的数据库IP地址存储于所述上级节点的数据库中或文件中;

判断模块,与所述IP地址获取模块连接,用于当所述节点为上级节点时,判断系统重建连接服务标识是否有效,如果无效,则触发对应关系建立模块,如果系统重建连接服务标识有效,则直接触发显示模块;对应关系建立模块,与所述IP地址获取模块和所述判断模块连接,用于系统重建连接服务标识无效时建立所述下级节点的数据库IP地址与链接服务器的对应关系;其中,所述系统重建连接服务标识初始默认为无效;

view脚本建立模块,与所述对应关系建立模块连接,用于执行建立数据展示的视图view脚本;

显示模块,分别与所述view脚本建立模块和所述判断模块连接,用于利用所述view脚本通过所述链接服务器访问各个下级节点的数据库,根据各个层次来分组和汇总展示报表数据。

8.如权利要求7所述的节点,其特征在于,还包括:

设置模块,与所述对应关系建立模块和所述判断模块连接,用于当展示报表数据成功后,设置系统重建连接服务标识为有效,使下次系统启动时不需要重新执行建立数据展示的视图view脚本。

9.如权利要求8所述的节点,其特征在于,

所述设置模块,还用于当有新下级节点的数据库IP地址增加到所述上级节点时,将所述系统重建连接服务标识设置为无效。

10.如权利要求7、8或9所述的节点,其特征在于,所述系统重建连接服务标识具体为系统部署后的初始系统重建连接服务标识,当所述标识为0时设置为无效,当所述标识设置为1时则设置为有效。

11.如权利要求7所述的节点,其特征在于,还包括:

用户创建模块,用于当分级节点为下级节点时,预先创建公共用户reportview,所述用户拥有下级数据库中所有业务访问权限;

数据上报模块,与所述用户创建模块连接,用于当上级节点使用所述公共用户reportview访问所述下级节点的数据库时,将所述下级节点的数据库中的报表数据传递给所述上级节点,所述报表数据携带上级地区号、本级地区号、本级地区号对应的数据内容。

说明书 :

一种分布式数据统一汇总报表展示的方法、系统及装置

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及一种分布式数据统一汇总报表展示的方法、系统及装置。

背景技术

[0002] 报表展示的数据是所有专业的管理软件展示给用户最专业、最有代表性、最全面、最准确的数据。
[0003] 但是,网络是有层次的,每个层次的每个节点都可能存在大量的管理元素。如图1所示,按照行政区域从低到高可以划分为县、市、省等,如果在省中心只有一套管理软件去管理全省的所有数据,复杂度和对管理软件的性能要求,都是难以想象和很难实现的。所以,在多层次网络的情况下,分级分层次的配合管理比较合适。
[0004] 在分级分层次的配合管理中,虽然节点管理可以分布的,但是作为报表展示的数据应该是统一的、汇总的。这样的数据才是用户在企业管理和工作中真正需要的报表数据。比如在市级需要汇总其下的所有县的数据,在省级则需要汇总其下所有市的数据。另外,需要这样的层次汇总数据并用报表展示的场景很多,比如一个部门汇总其下各个小组的数据,一个公司汇总其下各个部门的数据,一个集团汇总其下各个公司的数据等。
[0005] 现有技术中,下级节点的数据汇总到上级节点的方案是:下级节点将需要上报的数据写入报表文件,以纸件或电子件的方式上报给上级节点;上级节点收集到下级节点传递上来的报表文件后,通过人工或者运行专门的处理程序对各个下级节点的数据进行汇总统计,整理出一份本级节点的报表文件,如果本级节点不是最上级节点,还需要将该报表文件上报给自己的上级节点,然后一层一层类似处理。
[0006] 然而,现有技术存在如下问题:
[0007] 1,由于下级节点需要把需要上报的数据写入报表文件上报给上级节点,报表文件中记录数据的格式需要事先约定,且所有的下级节点上报的报表文件的格式需要一致,否者上级节点处理数据极其不便。
[0008] 2,下级节点如果需要上报的数据量巨大,无论是通过纸件上传还是通过电子件的上报,报表文件都会比较大,在上级节点处理完这些报表文件后的数据将无用,会产生大量的临时文件占用系统空间。
[0009] 3,由于上级节点在收到所有下级节点上报的报表文件后开始处理数据,需要处理手工指定或程序写死多个下级节点的报表文件,如果需要实时增加一个新的下级节点,需要繁琐的手工操作或者修改程序。
[0010] 因此,现有技术虽然能解决上级节点汇总下级节点数据的问题,但同时也存在了复杂程度较高、执行效率低、资源浪费、不易调整和变更的问题。

发明内容

[0011] 本发明提供了一种分布式数据统一汇总报表展示的方法、系统及装置,以实现上级节点简便、高效、灵活地汇总下级节点的数据。
[0012] 本发明提供了一种分布式数据统一汇总报表展示的方法,应用于包括多层分级节点的系统中,相邻两层节点互为上级节点和下级节点,所述方法包括以下步骤:
[0013] A、上级节点获取所属下级节点的数据库IP地址;所述数据库IP地址存储于所述上级节点的数据库中或文件中;
[0014] B、所述上级节点判断系统重建连接服务标识是否有效,如果无效,则所述上级节点建立所述下级节点的数据库IP地址与链接服务器的对应关系,并执行步骤C;否则,直接执行步骤D;
[0015] C、所述上级节点执行建立数据展示的视图view脚本;
[0016] D、利用所述view脚本通过所述链接服务器访问各个下级节点的数据库,根据各个层次来分组和汇总展示报表数据。
[0017] 优选地,所述通过所述链接服务器访问各个下级节点的数据库,具体包括:
[0018] 在下级节点上预先创建公共用户reportview,所述用户拥有下级数据库中所有业务访问权限;
[0019] 所述上级节点使用所述公共用户reportview访问所述下级节点的数据库,获取报表数据,所述报表数据携带本级地区号、下级地区号、下级地区号对应的数据内容。
[0020] 优选地,当有新下级节点的数据库IP地址增加到上级节点时,
[0021] 将所述系统重建连接服务标识设置为无效,所述上级节点重新创建下级节点的链接服务器和对应view。
[0022] 优选地,步骤D中当展示报表数据成功后,设置系统重建连接服务标识为有效,使下次系统启动时不需要重新执行建立数据展示的视图view脚本。
[0023] 优选地,所述系统重建连接服务标识具体为系统部署后的初始系统重建连接服务标识,当所述标识为0时设置为无效,当所述标识设置为1时则设置为有效。
[0024] 本发明提供了一种分布式数据统一汇总报表展示的系统,包括多层分级节点,相邻两层节点互为上级节点和下级节点,
[0025] 所述上级节点,用于获取所属下级节点的数据库IP地址,所述数据库IP地址存储于所述上级节点的数据库中或文件中;判断系统重建连接服务标识是否有效,如果无效,则建立所述下级节点的数据库IP地址与链接服务器的对应关系;执行建立数据展示的视图view脚本,并利用所述view脚本通过所述链接服务器访问各个下级节点的数据库,根据各个层次来分组和汇总展示报表数据;如果系统重建连接服务标识有效,直接利用所述view脚本通过所述链接服务器访问各个下级节点的数据库,根据各个层次来分组和汇总展示报表数据;
[0026] 所述下级节点,用于预先创建公共用户reportview,所述用户拥有下级数据库中所有业务访问权限;当所述上级节点使用所述公共用户reportview访问所述下级节点的数据库时,将所述下级节点的数据库中的报表数据传递给所述上级节点,所述报表数据携带上级地区号、本级地区号、本级地区号对应的数据内容。
[0027] 本发明提供了一种分布式节点,应用于包括多层分级节点的系统中,相邻两层节点互为上级节点和下级节点,所述分布式节点为上级节点时,包括:
[0028] IP地址获取模块,用于当所述节点为上级节点时,获取所属下级节点的数据库IP地址,将所述获取到的下级节点的数据库IP地址存储于所述节点的数据库中或文件中;
[0029] 判断模块,与所述IP地址获取模块连接,用于当所述节点为上级节点时,判断系统重建连接服务标识是否有效,如果无效,则触发所述对应关系建立模块,如果系统重建连接服务标识有效,则直接触发所述显示模块;
[0030] 对应关系建立模块,与所述IP地址获取模块和所述判断模块连接,用于系统重建连接服务标识无效时建立所述下级节点的数据库IP地址与链接服务器的对应关系;
[0031] view脚本建立模块,与所述对应关系建立模块连接,用于执行建立数据展示的视图view脚本;
[0032] 显示模块,分别与所述view脚本建立模块和所述判断模块连接,用于利用所述view脚本通过所述链接服务器访问各个下级节点的数据库,根据各个层次来分组和汇总展示报表数据。
[0033] 优选地,
[0034] 所述设置模块,与所述对应关系建立模块和所述判断模块连接,用于当有新下级节点的数据库IP地址增加到所述节点时,将所述系统重建连接服务标识设置为无效。
[0035] 优选地,所述设置模块,还用于当有新下级节点的数据库IP地址增加到所述节点时,将所述系统重建连接服务标识设置为无效。
[0036] 优选地,所述系统重建连接服务标识具体为系统部署后的初始系统重建连接服务标识,当所述标识为0时设置为无效,当所述标识设置为1时则设置为有效。
[0037] 优选地,所述分布式节点还包括:
[0038] 用户创建模块,用于当所述节点为下节级点时,预先创建公共用户reportview,所述用户拥有下级数据库中所有业务访问权限;
[0039] 数据上报模块,与所述用户创建模块连接,用于当上级节点使用所述公共用户reportview访问所述节点的数据库时,将所述节点的数据库中的报表数据传递给所述上级节点,所述报表数据携带上级地区号、本级地区号、本级地区号对应的数据内容。
[0040] 与现有技术相比,本发明具有以下优点:
[0041] 本发明中,上级节点在用户创建的视图中可以自由使用链接服务器,实时从多个下级节点中获取报表展示数据,保证了数据的正确性和实时性,并降低了开发的复杂度,人工参与度、在用户层面上完全屏蔽了分布式数据的不足;
[0042] 用户可以创建新的视图支持报表显示,也可以对原有视图做修改而不影响具体的业务数据,实现对报表展示数据的灵活定制和调整,及对下级节点的动态扩展;
[0043] 且由于再主流数据库服务器都可以支持上述功能,可以本发明广泛应用。

附图说明

[0044] 图1是现有技术中按照行政区域从低到高划分网路层次图;
[0045] 图2是本发明中一种分布式数据统一汇总报表展示的方法流程图;
[0046] 图3是本发明中一种分布式节点结构图。

具体实施方式

[0047] 本发明提出了一种分布式数据统一汇总报表展示的方法,从用户和开发的角度出发,可以使上级节点实时从多个下级节点的数据中获取报表展示数据,保证了数据的正确性和实时性;不需要在生成报表时去针对下级节点的数据进行特殊处理,就像处理本级节点的数据一样;同时也提供了操作简单的扩展下级节点功能。使用本发明以后,可以为类似的上下级节点分布数据的统一报表展示提供支持,大大提升了系统的智能性,降低了实现的复杂度、同时也为用户的定制需求提供技术支持。
[0048] 本发明提供了一种分布式数据统一汇总报表展示的方法,应用于包括多层分级节点的系统中,相邻两层节点互为上级节点和下级节点,每个节点具有对应的数据库,用于存储该节点的报表数据。所述方法如图2所示,包括以下步骤:
[0049] 步骤201,系统部署或安装时,上级节点获取所属下级节点的数据库IP地址;将获取到的下级节点的数据库IP地址存储于该上级节点的数据库中或文件中。
[0050] 步骤202,上级节点判断系统重建连接服务标识是否有效,如果无效,则所述上级节点事先建立所述下级节点的数据库IP地址与链接服务器的对应关系,并执行步骤203;否则,直接执行步骤204;其中,判断系统重建连接服务标识是否有效具体为:检验系统部署后的初始系统重建连接服务标识sys_rebuild_link_server,该参数默认为0(无效),如果为0则执行建立下级节点的数据库IP地址与链接服务器的对应关系。具体地,链接服务器通过OLE(Object Link and embed,对象连接与嵌入)DB(Data Base,数据库)的访问接口在预先设置的根据下级数据库地址信息中建立的OLE DB数据源上,执行分布式查询来获取所需要的访问数据。其中所述OLE DB访问接口具体为管理特定数据源并与其交互的DLL(Dynamic Link Library,动态链接库),所述OLE DB数据源是指标识可通过OLE DB访问的特定数据库。
[0051] 步骤203,所述上级节点执行建立数据展示的视图view脚本;其中,视图脚本是在控制器的控制和指挥下,对程序逻辑进行呈现,例如在浏览器里看到的文字、图片、表单等各种网页元素及其字体、颜色、样式等各种效果。
[0052] 步骤204,所述上级节点利用所述view脚本通过所述链接服务器访问各个下级节点的数据库,根据各个层次来分组和汇总展示报表数据。另外,当步骤204执行成功后,设置系统重建连接服务标识sys_rebuild_link_server为1,使下次系统启动时不需要重新执行建立数据展示的视图view脚本。
[0053] 其中,上级节点通过链接服务器访问下级节点的数据库时,需要通过下级节点的数据库的用户认证,所以为实现本发明,在下级节点上需要先创建了一个公共用户reportview,这个用户拥有下级节点的数据库中所有业务数据的访问权限,所以在上级节点部署时只需要指定下级节点的数据库IP地址即可。
[0054] 另外,主流数据库SQLSERVER、Oracle都支持链接服务器,通过在步骤201获取的数据库IP地址信息和预先设定的公共用户权限,在本级节点的数据库中建立链接服务器,在建立view时直接通过下级节点数据库的链接服务器访问下级数据库对象。
[0055] 以SQLSERVER为例,如下语句可以创建链接服务器“192.168.0.1”。
[0056] EXEC sp_addlinkedserver N′192.168.0.1′;
[0057] GO
[0058] 如下语句创建链接服务器的登录信息:
[0059] EXEC sp_addlinkedsrvlogin N ′ 192.168.0.1 ′,N ′ false ′,null,N′reportview′,N′reportviewpas swd′
[0060] 之后就可以通过如下语句访问数据库test_db中dba用户的tbl_test表。其中的“[]”是SQLSERVER中避免和关键字冲突的括号,可不需要关心。
[0061] Select*from[192.168.0.1].test_db.dba.tbl_test;
[0062] 那么创建view如口下
[0063] CREATE VIEW test_v_test
[0064] AS
[0065] Select[上级地区号],[本级地区号],*from[192.168.0.1].test_db.dba.tbl_test
[0066] union
[0067] Select[上级地区号],[本级地区号],*from[192.168.0.2].test_db.dba.tbl_test;
[0068] 查看这个视图时就同时查看了下级节点192.168.0.1和下级节点192.168.0.2上的数据。
[0069] 作为报表展示,报表模板可以直接从上述创建的视图中获取数据,在报表展示时根据对应的上级节点地区号和本级节点地区号字段等信息,就可以在展示时区分是哪里的数据,但在获取上是不区分的。从展示层面上完全不需要知道数据是分布式的还是本身就是集中在一起的。这样的方式也保证了即使在视图中新增加了一个下级,但报表模板不需要做任何的修改。
[0070] 另外,当增加新的下级节点时,增加新下级节点的数据库IP地址信息上报到上级节点;修改重建链接服务器的系统重建连接服务标识sys_rebuild_link_server为0,这样在启动系统时会重新创建下级的链接服务器和对应view。由于view重新创建了,新的链接服务器增加了,查询view获取的数据就是包含了新的下级节点的数据,报表模板不需要修改,还是按照地区码等信息分组和汇总,报表中展示了正确的数据。
[0071] 本发明提供了一种分布式数据统一汇总报表展示的系统,包括多层分级节点,相邻两层节点互为上级节点和下级节点,
[0072] 所述上级节点,用于获取所属下级节点的数据库IP地址,所述数据库IP地址存储于所述上级节点的数据库中或文件中;判断系统重建连接服务标识是否有效,如果无效,则建立所述下级节点的数据库IP地址与链接服务器的对应关系,执行建立数据展示的视图view脚本,并利用所述view脚本通过所述链接服务器访问各个下级节点的数据库,根据各个层次来分组和汇总展示报表数据;如果系统重建连接服务标识有效,直接利用view脚本通过所述链接服务器访问各个下级节点的数据库,根据各个层次来分组和汇总展示报表数据;
[0073] 所述下级节点,用于预先创建公共用户reportview,所述用户拥有下级数据库中所有业务访问权限;当所述上级节点使用所述公共用户reportview访问所述下级节点的数据库时,将所述下级节点的数据库中的报表数据传递给所述上级节点,所述报表数据携带上级地区号、本级地区号、本级地区号对应的数据内容。
[0074] 本发明提供了一种分布式节点,应用于包括多层分级节点的系统中,相邻两层节点互为上级节点和下级节点,所述每一节点如图3所示,包括:
[0075] IP地址获取模块310,用于当所述节点为上级节点时,获取所属下级节点的数据库IP地址,将所述获取到的下级节点的数据库IP地址存储于所述节点的数据库中或文件中;
[0076] 判断模块350,与IP地址获取模块连接310,用于当所述节点为上级节点时,判断系统重建连接服务标识是否有效,如果无效,则触发所述对应关系建立模块320,如果系统重建连接服务标识有效,则直接触发显示模块340;
[0077] 对应关系建立模块320,与IP地址获取模块310和判断模块350连接,用于系统重建连接服务标识无效时建立所述下级节点的数据库IP地址与链接服务器的对应关系;其中,链接服务器通过OLE(Object Link and embed,对象连接与嵌入)DB(Data Base,数据库)的访问接口在预先设置的根下级数据库地址信息中建立的OLE DB数据源上,执行分布式查询来获取所需要的访问数据。其中所述OLE DB访问接口具体为管理特定数据源并与其交互的DLL,所述OLE DB数据源是指标识可通过OLE DB访问的特定数据库。
[0078] view脚本建立模块330,与对应关系建立模块320连接,用于执行建立数据展示的视图view脚本;其中,视图脚本是在控制器的控制和指挥下,对程序逻辑进行呈现,例如在浏览器里看到的文字、图片、表单等各种网页元素及其字体、颜色、样式等各种效果。
[0079] 显示模块340,分别与view脚本建立模块330和判断模块350连接,用于利用所述view脚本通过所述链接服务器访问各个下级节点的数据库,根据各个层次来分组和汇总展示报表数据。
[0080] 设置模块380,与对应关系建立模块320和判断模块350连接,用于当展示报表数据成功后,设置系统重建连接服务标识sys_rebuild_link_server为有效,使下次系统启动时不需要重新执行建立数据展示的视图view脚本。还用于当有新下级节点的数据库IP地址增加到所述节点时,将所述系统重建连接服务标识设置为无效。
[0081] 对应关系建立模块320,还用于当有新下级节点的数据库IP地址增加到上级节点时,将所述系统重建连接服务标识设置为无效,所述上级节点重新创建下级节点的链接服务器和对应view。
[0082] 用户创建模块360,用于预先创建公共用户reportview,所述用户拥有下级数据库中所有业务访问权限;
[0083] 数据上报模块370,与用户创建模块360连接,用于当所述上级节点使用所述公共用户reportview访问所述下级节点的数据库时,将所述下级节点的数据库中的报表数据传递给所述上级节点,所述报表数据携带上级地区号、本级地区号、本级地区号对应的数据内容。
[0084] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0085] 本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0086] 本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0087] 上述本发明序号仅仅为了描述,不代表实施例的优劣。
[0088] 以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。