一种基于树状结构资源分布的实时状态数快速统计方法与流程

文档序号:22041869发布日期:2020-08-28 18:12阅读:159来源:国知局
一种基于树状结构资源分布的实时状态数快速统计方法与流程

本发明涉及业务系统技术领域,尤其涉及一种基于树状结构资源分布的实时状态数快速统计方法。



背景技术:

传统的业务系统特别是安防业务应用系统,对各类业务资源通常是呈树状结构分布和渲染展示的。当需要对各类资源的各类状态进行实时统计的时候,往往采用把所有资源的分布和所有状态保存在关系型数据库中,比如mysql,oracle,sqlserver等,然后通过sql语句检索统计的方式来得到每个组织或区域的资源状态统计结果;还有一种惯用方法是直接基于树状渲染和展示的资源进行遍历统计,是一种对树的所有结点进行按周期或按需实时遍历和统计的方式,每一次遍历和统计都会对子结点进行多次访问。以上两种常规统计方法在树状分布层次深和资源数多的时候,比如树的深度5、6层以上,且资源数有几万-几十万以上,这时这种方法的统计性能就非常低下,实时性也很差。



技术实现要素:

本发明的目的是为了解决现有技术中存在的缺点,而提出的一种基于树状结构资源分布的实时状态数快速统计方法。

为了实现上述目的,本发明采用了如下技术方案:

一种基于树状结构资源分布的实时状态数快速统计方法,包括以下步骤:

步骤s1、构造一个存储资源数据和展示资源分布的n叉树结构的组织树或区域树,其中各类业务资源作为树的叶子结点;

步骤s2、自下而上,按层统计树中每个非叶子结点下的所有叶子结点资源的状态;

步骤s3、向根结点寻找最短路径,对该路径下的非叶子结点触发一次资源状态统计。

优选的,所述n叉树包括表示组织或区域的结点,作为树的非叶子结点。

优选的,所述n叉树包括表示业务资源的结点,作为树的叶子结点。

优选的,所述n叉树中,每个非叶子结点保存了该组织或区域的关键属性,以及该结点的所有叶子结点资源状态统计数据集。

优选的,所述n叉树中,每个树结点可以准确访问父结点,也可以准确访问所有子结点。

优选的,所述步骤s2包括以下步骤:

步骤s21、初始化业务资源数据并构造n叉树时,按组织或区域结点对资源状态进行首次统计,并作为各自非叶子结点的资源状态统计数据集的初始值;

步骤s22、对树结点的资源状态统计集数据进行初始化或校验时,触发的按层统计;

步骤s23、每一层的每个结点的资源状态统计数据集的计算,都要依赖于该结点的所有子结点的资源状态统计数据集以及该结点下的叶子结点资源状态集;

步骤s24、每个叶子结点的资源状态只会遍历和统计一次。

优选的,所述步骤s3中,所述向根结点寻找最短路径并进行结点资源的状态统计的情况,出现在当某个叶子结点资源的状态发生变化时,以该结点的父结点为起点,向上到根结点寻找到最短路径,对该最短路径下的所有结点触发一次资源状态统计集的重新计算。

优选的,所述对最短路径中的结点统计,采用自下而上的方式,子结点先进行统计,使得父结点的资源状态统计数据集需要依赖于子结点的资源状态统计数据集来计算得到。

优选的,所述资源状态统计数据集按资源类型分类,按资源状态分类,对同类型的相同状态进行求和而得到的一个数据集合。

本发明的有益效果是:

本发明所提供的方案中采用按层统计以及按最短路径进行统计的方法:对初始状态的统计按层方式,每个结点至多访问一次;对资源状态的变化采用最短路径的方式,对关联结点才触发统计和更新,达到精确和快速统计的目的,有效解决了业务系统中对树状分布资源的状态统计性能低下和实时性不高的问题。

附图说明

图1为本发明提出的一种基于树状结构资源分布的实时状态数快速统计方法的逻辑示意图。

具体实施方式

为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的较佳实施方式。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施方式。相反地,提供这些实施方式的目的是使对本发明的公开内容理解的更加透彻全面。

需要说明的是,当元件被称为“固定于”另一个元件,它可以直接在另一个元件上或者也可以存在居中的元件。当一个元件被认为是“连接”另一个元件,它可以是直接连接到另一个元件或者可能同时存在居中元件。本文所使用的术语“垂直的”、“水平的”、“左”、“右”以及类似的表述只是为了说明的目的,并不表示是唯一的实施方式。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。

实施例

请参照图1,本实施例提供一种基于树状结构资源分布的实时状态数快速统计方法,包括以下步骤:

步骤s1、构造一个存储资源数据和展示资源分布的n叉树结构的组织树或区域树,其中各类业务资源作为树的叶子结点;

步骤s2、自下而上,按层统计树中每个非叶子结点下的所有叶子结点资源的状态;

步骤s3、向根结点寻找最短路径,对该路径下的非叶子结点触发一次资源状态统计。

进一步的,所述n叉树包括表示组织或区域的结点,作为树的非叶子结点。

进一步的,所述n叉树包括表示业务资源的结点,作为树的叶子结点。

进一步的,所述n叉树中,每个非叶子结点保存了该组织或区域的关键属性,以及该结点的所有叶子结点资源状态统计数据集。

进一步的,所述n叉树中,每个树结点可以准确访问父结点,也可以准确访问所有子结点。

进一步的,所述步骤s2包括以下步骤:

步骤s21、初始化业务资源数据并构造n叉树时,按组织或区域结点对资源状态进行首次统计,并作为各自非叶子结点的资源状态统计数据集的初始值;

步骤s22、对树结点的资源状态统计集数据进行初始化或校验时,触发的按层统计;

步骤s23、每一层的每个结点的资源状态统计数据集的计算,都要依赖于该结点的所有子结点的资源状态统计数据集以及该结点下的叶子结点资源状态集;

步骤s24、每个叶子结点的资源状态只会遍历和统计一次。

进一步的,所述步骤s3中,所述向根结点寻找最短路径并进行结点资源的状态统计的情况,出现在当某个叶子结点资源的状态发生变化时,以该结点的父结点为起点,向上到根结点寻找到最短路径,对该最短路径下的所有结点触发一次资源状态统计集的重新计算。

进一步的,所述对最短路径中的结点统计,采用自下而上的方式,子结点先进行统计,使得父结点的资源状态统计数据集需要依赖于子结点的资源状态统计数据集来计算得到。

进一步的,所述资源状态统计数据集按资源类型分类,按资源状态分类,对同类型的相同状态进行求和而得到的一个数据集合。

具体的,本实施方式中,以双链表的方式构建一个n叉树结构的组织树,组织结点按层次自上而下,分为xxx省、xxx市公安局、xxx区(县)分局、xxx派出所、xxx街道,其中xxx省作为树的根结点;把省、市、区(县)、派出所、街道下的摄像头、解码器、nvr等设备资源挂到相应的结点上,作为组织树的叶子结点;设备资源作为树的叶子结点,保存着设备当前的在线、离线、录像、报警、异常、正常等状态信息;对组织结点按层自下而上,从最深一层的组织结点开始,统计每个组织结点下的所有叶子结点(包括后代叶子结点)中设备资源的状态数。

优选地,所述按层统计每个组织结点的资源状态数,包括:

(1)计算组织结点下的所有叶子结点设备资源的状态数。

(2)取得组织结点下的所有子组织结点的资源状态统计数据集。

(3)按设备类型和状态类别分类,对组织结点的叶子结点的资源状态数和子组织结点的资源状态统计数据集归类并求和,得到每一层的每一个组织结点的资源状态统计数据集。

(4)把上述资源状态统计数据集以二维数组的结构方式存储到各自组织结点上,作为该组织结点的资源状态统计结果。

进一步地,当某个叶子结点设备资源的状态发生变化时,只需找到该叶子结点的父结点,并以该父结点为起点,向根结点xxx省寻找一条最短路径,找到该设备资源所属的街道、派出所、区(县)、市、省,然后对该路径下的这些组织结点触发一次设备资源状态的统计。

优选地,上述对最短路径下的组织结点进行设备资源状态的统计,包含:

(1)自下而上,必须先统计子组织结点下的设备资源状态数,并更新资源状态统计数据集。

(2)父组织结点统计出叶子结点设备资源状态数。

(3)父组织结点获取得到子组织的资源状态统计数据集。

(4)按设备类型和状态类别分类,对该父组织结点的叶子结点的资源状态数和子组织结点的资源状态统计数据集归类并求和,得到该父组织结点的资源状态统计数据集,并更新。

该方法利用n叉树的结构特点,分别采用按层次和按最短路径的方式,对树状分布的资源及其状态进行实时统计,有效解决了基于sql语句和关系型数据库或通过反复遍历结点树这种性能低下且实时性差的统计问题。

假设树的组织结构有5层以上,摄像机摄像头、解码器、nvr等设备数量有30万个(台)以上,本方法在资源状态统计的性能和实时性上将有很大的提升和改善。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1