本发明涉及电数字数据处理的技术领域,特别涉及一种基于mybatis的轻量级动态数据统计系统。
背景技术:
随着企业信息化的不断升级,各类企业都逐步为自己配备了一套或多套信息化管理系统以提升企业自身的生产和管理效率。在大多数的企业信息管理系统中,工作台待办是其必不可少的功能模块,它能非常直观的展示用户每日需要处理的工作事项。如何方便灵活的统计待办事项的数量,成了系统开发人员必须要思考的问题。
现有技术中,用的比较多的方案是单独设计待办事项表,在业务触发的时候向待办事项表中写入数据,然后在工作台中从该表中统计数据进行展示。然而,这种方案存在一系列弊端:
(1)对于业务代码的侵入性较大,基本每个待办业务模块都要做代码修改以实现对待办事项的统计,并且在业务状态发生变化的时候,还需要同步处理待办事项表中的统计数据,实现复杂且成本较高;
(2)可扩展性不高,当某个待办业务发生变化的时候,必须修改代码并重新发版;
(3)不太支持企业中现存的系统,如果这些现存的系统想要引入工作待办模块的功能,则需要分析现有系统的各个业务模块并做代码修改,整体可实施性不高。
技术实现要素:
本发明解决了现有技术中存在的问题,提供了一种优化的基于mybatis的轻量级动态数据统计系统,灵活、可插拔且轻量级。
本发明所采用的技术方案是,一种基于mybatis的轻量级动态数据统计系统,所述系统包括:
一个或多个数据库,用于配置动态业务sql模板;
对任一所述数据库以标定的特征进行预标识,将预标识的内容转换为系统统一的数字标签,作为数据库的标识;
一统计执行器,用于处理数据库中统计的数据;
一缓存库,用于缓存统计执行器执行的统计结果;
用户在对应的数据库中,基于动态业务sql模板,以数据库存储的具体待办业务的sql语句和配置属性进行数据动态增减;
统计执行器输入一个或同时输入多个带有动态数据的动态业务sql模板;若在缓存库中存在对应一个或多个所述统计sql语句的缓存结果,则直接获取,否则,解析形成最终可执行的统计sql语句,以线程池的方式并行执行解析后的sql语句,获取统计结果;
将统计结果基于数据库的标识缓存至缓存库的不同区域。
优选地,所述动态业务sql模板支持跨数据库查询数据;所述查询基于不同的数据库的标识进行。
优选地,所述动态业务sql模板中动态增加的数据与对应的数据库间设有相同的数据库的标识,任一数据库在动态业务sql模板的表名前配置数据库名称或数据库的标识。
优选地,所述统计执行器从运行时的文本、上下文环境中动态获取业务参数。
优选地,所述统计执行器将统计结果按配置的缓存时间缓存至缓存库中。
优选地,在缓存库中,设置不同的特征区,基于数据库的标识和/或特征的近似度进行统计结果的缓存。
优选地,不同的特征区间的统计结果间,以数据库的标识顺次设置指针。
优选地,所述统计执行器只执行满足统计格式的业务sql,当数据库中配置的业务sql不满足统计格式时,统计执行器将此不满足统计格式的业务sql转化为满足统计格式的业务sql,执行统计。
优选地,所述统计执行器的工作包括以下步骤:
s.1:解析统计sql模板语句,替换其中的数据源变量标识,确定执行sql语句的目标数据库服务;
s.2:解析统计sql模板语句,用上下文中的同名参数值替换其中的业务变量;
s.3:检查解析后的统计sql语句是否为满足统计格式的sql,若否,转化非统计型sql为满足统计格式的业务sql,进行下一步,否则,直接进行下一步;
s.4:基于mybatis框架调用目标数据源对象执行解析后的统计sql。
优选地,所述系统还包括用于展示统计结果的可视化界面。
本发明涉及一种优化的基于mybatis的轻量级动态数据统计系统,以一个或多个数据库配置动态业务sql模板、对应不同的用户,对任一数据库以标定的特征进行预标识,将预标识的内容转换为系统统一的数字标签,作为数据库的标识,以统计执行器处理数据库中统计的数据,以缓存库缓存统计执行器执行的统计结果;用户在对应的数据库中,基于动态业务sql模板,以数据库存储的具体待办业务的sql语句和配置属性进行数据动态增减;统计执行器输入一个或同时输入多个带有动态数据的动态业务sql模板;若在缓存库中存在对应一个或多个所述统计sql语句的缓存结果,则直接获取,否则,解析形成最终可执行的统计sql语句,以线程池的方式并行执行解析后的sql语句,获取统计结果,并将统计结果基于数据库的标识缓存至缓存库的不同区域。
本发明原理简单,配置灵活,对原有系统的侵入性、耦合性小,后期的维护、升级和扩展都很方便,整体的实现成本很低,特别适用于需要控制研发成本的中小型企业,采用了多线程和缓存的机制,大大的提升了系统的处理性能。
附图说明
图1为本发明的系统结构示意图,其中,箭头表示数据传输的方向。
具体实施方式
下面结合实施例对本发明做进一步的详细描述,但本发明的保护范围并不限于此。
本发明涉及一种基于mybatis的轻量级动态数据统计系统,所述系统主要包括用于配置动态业务sql模板的数据库、用于处理数据统计的统计执行器。
一个或多个数据库,用于配置动态业务sql模板;
对任一所述数据库以标定的特征进行预标识,将预标识的内容转换为系统统一的数字标签,作为数据库的标识;
用户在对应的数据库中,基于动态业务sql模板,以数据库存储的具体待办业务的sql语句和配置属性进行数据动态增减;
所述动态业务sql模板支持跨数据库查询数据;所述查询基于不同的数据库的标识进行。
所述动态业务sql模板中动态增加的数据与对应的数据库间设有相同的数据库的标识,任一数据库在动态业务sql模板的表名前配置数据库名称或数据库的标识。
本发明中,数据库主要用于存储具体的待办业务sql语句和配置属性,同时也维护着用户与待办事项的关联关系,不同的用户可以在自己工作台面板上自主增减待办事项,用户登录并打开工作台的时候,工作台上会展示自己添加的待办事项。
本发明中,动态业务sql模板是可以按需按量配置的,可以带上业务参数变量,可以在表名前动态配置数据库名称,支持跨数据库查询数据;在这个前提下,对任一数据库以标定的特征进行预标识,将预标识的内容转换为系统统一的数字标签,作为数据库的标识,便于跨数据库查询。
本发明中,为了保证新增数据的有效性,将动态增加的数据与对应的数据库间设置相同的数据库的标识,便于统计和认证。
一统计执行器,用于处理数据库中统计的数据;
所述统计执行器从运行时的文本、上下文环境中动态获取业务参数。
所述统计执行器将统计结果按配置的缓存时间缓存至缓存库中。
所述统计执行器只执行满足统计格式的业务sql,当数据库中配置的业务sql不满足统计格式时,统计执行器将此不满足统计格式的业务sql转化为满足统计格式的业务sql,执行统计。
所述统计执行器的工作,确切地说,是对无在先缓存结果的部分的工作包括以下步骤:
s.1:解析统计sql模板语句,替换其中的数据源变量标识,确定执行sql语句的目标数据库服务;
s.2:解析统计sql模板语句,用上下文中的同名参数值替换其中的业务变量;
s.3:检查解析后的统计sql语句是否为满足统计格式的sql,若否,转化非统计型sql为满足统计格式的业务sql,进行下一步,否则,直接进行下一步;
s.4:基于mybatis框架调用目标数据源对象执行解析后的统计sql。
一缓存库,用于缓存统计执行器执行的统计结果;
在缓存库中,设置不同的特征区,基于数据库的标识和/或特征的近似度进行统计结果的缓存。
不同的特征区间的统计结果间,以数据库的标识顺次设置指针。
统计执行器输入一个或同时输入多个带有动态数据的动态业务sql模板;若在缓存库中存在对应一个或多个所述统计sql语句的缓存结果,则直接获取,否则,解析形成最终可执行的统计sql语句,以线程池的方式并行执行解析后的sql语句,获取统计结果;
将统计结果基于数据库的标识缓存至缓存库的不同区域。
本发明中,统计执行器支持同时输入一个或多个带有业务参数的sql模板,支持从运行时上下文环境中动态获取这些业务参数,解析形成最终可执行的统计sql语句,以线程池的方式并行执行解析完的sql语句并获取统计结果;但同时,为了加快统计的速度、降低运算量,统计执行器可以将统计结果按配置化的缓存开关和缓存时间缓存起来,并在再次对同一个业务sql执行统计的时候,先从缓存中获取缓存结果值,如果未命中缓存,则执行业务sql,然后再将统计结果缓存起来。
本发明中,在实际的缓存过程中,可以在缓存库中设置不同的特征区,基于数据库的标识和/或特征的近似度进行统计结果的缓存,这表示,除了可以统计某个特征的数据结果外,还可以对相关的统计内容进行一并统计,增加操作的多样性和灵活性。
本发明中,再进一步,在不同的特征区间的统计结果间,以数据库的标识顺次设置指针,这表示,除了可以统计某个特征的数据结果外,还可以对相关的统计内容进行指引,便于进行关联统计及关联统计的提示。
本发明中,出于安全性的考虑,统计执行器只执行满足统计格式的业务sql,举例来说,满足统计格式“selectcount(*)from‘业务sql’”。
本发明中,统计执行器是本专利发明的核心,它负责初始化自身的上下文环境、识别系统中的可用数据源、计算业务参数值、并将这些信息放入上下文的参数库中;负责从数据库中载入用户添加的待办事项信息、解析待办事项的统计sql模板语句(检查合法性、用实际的业务参数替换统计sql模板中的变量占位符);负责检查缓存,在缓存未命中的情况下,启动线程执行统计sql计算待办数;负责将统计结果以接口的形式返回给调用方。
所述系统还包括用于展示统计结果的可视化界面。
本发明中,显而易见地,需要配置可视化界面,用于负责从统计执行器读取统计结果并渲染展示给终端用户。
本发明中,基于上述内容整理得到系统的完整处理流程:
初始化上下文环境,加载业务参数;
从数据库加载用户待办事项集合;
检查缓存是否开启,若是,则首先检查缓存是否命中,命中的结果放入待返回结果集;若缓存未开启或无命中,则启动子线程统计待办数量;其中,子线程统计待办数量即为统计执行器的工作步骤s.1至s.4。
等待子线程的计算结果并将计算结果放入待返回结果集;
将待返回结果集中所有数据返回。
本发明以一个或多个数据库配置动态业务sql模板、对应不同的用户,对任一数据库以标定的特征进行预标识,将预标识的内容转换为系统统一的数字标签,作为数据库的标识,以统计执行器处理数据库中统计的数据,以缓存库缓存统计执行器执行的统计结果;用户在对应的数据库中,基于动态业务sql模板,以数据库存储的具体待办业务的sql语句和配置属性进行数据动态增减;统计执行器输入一个或同时输入多个带有动态数据的动态业务sql模板;若在缓存库中存在对应一个或多个所述统计sql语句的缓存结果,则直接获取,否则,解析形成最终可执行的统计sql语句,以线程池的方式并行执行解析后的sql语句,获取统计结果,并将统计结果基于数据库的标识缓存至缓存库的不同区域。
本发明原理简单,配置灵活,对原有系统的侵入性、耦合性小,后期的维护、升级和扩展都很方便,整体的实现成本很低,特别适用于需要控制研发成本的中小型企业,采用了多线程和缓存的机制,大大的提升了系统的处理性能。