掌桥专利:专业的专利平台
掌桥专利
首页

基于非关系型数据库的数据统计方法及装置

文献发布时间:2023-06-19 19:30:30


基于非关系型数据库的数据统计方法及装置

技术领域

本申请涉及数据库技术领域,具体涉及一种基于非关系型数据库的数据统计方法及装置。

背景技术

现有的一些数据统计产品通过Mybatis,执行提前写好的sql语句,并将查询结果返回值页面展示。此类产品可支持的数据库一般为关系型数据库,例如Oracle、MySql等,无法支持MongoDB等非关系型数据库,且查询速度较慢。且主要适用于原数据结构较为平面结构化数据,查询时所需条件也较为简单。在面对非结构化数据,以及更为复杂的查询条件的情况下,就显得有些单薄。

发明内容

本申请实施例针提出了一种基于非关系型数据库的数据统计方法及装置,以克服或部分克服现有技术的缺陷。

第一方面,提供了一种基于非关系型数据库的数据统计方法,所述方法包括:

接收数据统计指令,并获取与数据统计指令对应的目标数据;

根据所述数据统计指令,基于非关系型数据库的MapReduce方法,对目标数据进行初步统计;

基于Aggregate函数,对所述初步统计的结果进行多条件分析,并对分析结果进行再次统计,以得到目标数据的统计结果。

可选的,所述方法还包括:

基于lookup函数,对目标数据的统计结果中的多个数据表进行关联处理,以得到关于目标数据的再次统计结果。

可选的,所述方法还包括:

基于ECharts方法,对所述目标数据的统计结果进行可视化处理,并在前端展示所述可视化处理结果。

可选的,在上述方法中,所述基于ECharts方法,对所述目标数据的统计结果进行可视化处理,包括:

读取所述ECharts中内置的type参数;

根据所述type参数,确定目标展示类别;

根据所述目标展示类别,将所述目标数据的统计结果转化为可视化图形。

可选的,在上述方法中,所述对所述初步统计的结果进行多条件分析,包括:

将所述初步统计的结果转换为aggregate函数可识别的语法规则;

根据分析条件,对所述简单初步统计的结果进行过滤,以得到分析结果;其中,所述分析条件包括一下的至少一项:分组、排序、分页、过滤空值、以及等、不等、包含、不包含。

可选的,在上述方法中,所述对分析结果进行再次统计,以得到目标数据的统计结果,包括:

根据目标维度,将所述分析结果进行汇总,得到目标数据的统计结果。

可选的,在上述方法中,所述非关系型数据库为MongoDB数据库。

第二方面,提供了一种基于非关系型数据库的数据统计装置,所述装置包括:

接收单元,用于接收数据统计指令;

初步统计单元,用于根据所述数据统计指令,基于非关系型数据库的MapReduce方法,对目标数据进行初步统计;

结果统计单元,用于基于Aggregate函数,对所述初步统计的结果进行多条件分析,并对分析结果进行再次统计,以得到目标数据的统计结果。

第三方面,本申请实施例还提供了一种电子设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行上述任一的方法。

第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行上述任一的方法。

本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:

本申请根据数据统计指令,以非关系型数据库为基础,采用非关系型数据库固有的MapReduce方法,对目标数据进行初步统计,在该初步统计过程中,不添加复杂条件,然后基于Aggregate聚合函数,对初步统计的结果进行复杂的多条件分析,并对分析结果进行再次统计,以得到目标数据的统计结果。本申请整个统计过程,将复杂结构的数据统计为扁平数据,将此结果保存在数据库中,在外部应用访问数据库时,显著提高了数据库的查询速度;适用于复杂的数据结构和查询条件,尤其对于非结构化数据,有显著的效果;且适用范围广。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1示出根据本申请的一个实施例的非关系型数据库的数据统计方法的流程示意图;

图2示出根据本申请的一个实施例的非关系型数据库的数据统计装置的结构示意图;

图3为本申请实施例中一种电子设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

以下结合附图,详细说明本申请各实施例提供的技术方案。

现有技术中,常用的关系型数据库的统计原理,不适用于MongoDB非关系型数据库。且现有技术中的非关系型数据库的统计方案,所支持的原数据结构较为平面结构化数据,查询时所需条件也较为简单,无法适用于复杂的数据结构和条件。

针对上述情况,本申请提出了一种非关系型数据库的数据统计方法,图1示出根据本申请的一个实施例的非关系型数据库的数据统计方法的流程示意图,从图1可以看出,本申请至少包括如下步骤:

步骤S110:接收数据统计指令,并获取与数据统计指令对应的目标数据。

本申请适用于现有技术的所有的非关系型数据库,由于MongoDB数据库是非关系数据库当中功能最丰富,它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型;它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。因此本申请一下均以MongoDB数据库作为示例进行说明。

首先,接收数据统计指令,并获取与数据统计指令对应的目标数据。数据包括但不限于结构化数据、半结构化数据或非结构化数据。

如关系数据表就是一种结构化数据,其通常以表格的形式呈现,在表格中包含字段,以及字段对应的具体值等信息,由于结构化数据的规整性,对其进行统计是比较容易的。

网页的页面源码的数据可以理解为一种非结构化数据,由于其规整性差,采用关系型数据库对其进行统计,往往得不到较为理性的效果,为此,提出了本申请,本申请的数据统计方法不仅适用于结构化数据,也适用于非结构化数据,尤其对后者具有较好的效果。

对于与数据统计指令对应的目标数据可采取现有技术中的任意一种,根据数据源的不同类型,具体采用的抽取技术不同,主要包括数据库访问技术、远程过程调用(RemoteProcedure Call,RPC)技术以及网页抓取技术。通信设备采集到本地的数据通常存储在数据库中,主要通过数据库访问技术进行抽取。RPC是一种用于创建分布式客户机/服务器应用的高效技术,使用RPC的用户只需关注应用程序的细节,而无需过多关注网络通信的细节。对于网页形式的数据,通常使用网页抓取技术进行抽取。网页抓取技术的一般步骤是:首先通过HTTP(Hypertext Transport Protocol)协议访问目标页面,获取页面内容;其次使用预定义的模板与获取的页面内容进行匹配,抽取出所需数据。对于上述没有描述到的技术方法,或者各方法的详细技术,均可参考现有技术。

步骤S120:根据数据统计指令,基于非关系型数据库的MapReduce方法,对目标数据进行初步统计。

本发明利用了MongoDB数据库自带的MapReduce特性,用来替代传统关系型数据库通过Mybatis执行预设sql的统计方案。MapReduce具有以下2个特性:第一,MapReduce有2个阶段:map和reduce,mapper处理每一行数据并加入筛选条件,然后reducer将map操作的结果进行分组累加操作。第二,MapReduce使用javascript语法编写,其内部也是基于javascript V8引擎解析并执行,javascript语言的灵活性也让MapReduce可以处理更加复杂的业务场景。

基于以上2个特性,本申请使用javascript语法编写MapReduce中的map和reduce处理逻辑,最终调用MongoDB数据库内置的db.collection.mapReduce()方法,将复杂结构的数据统计为扁平数据,并将此结果保存在数据库中,以供查询。

需要说明的是,在本步骤中,采用MapReduce对目标数据进行初步统计时,不附加复杂的条件过滤逻辑,专注于提供初步统计结果。

步骤S130:基于Aggregate函数,对初步统计的结果进行多条件分析,并对分析结果进行再次统计,以得到目标数据的统计结果。

在得到初步统计结构后,本申请基于Aggregate聚合函数,对初步统计的结果进行多条件分析,Aggregate聚合函数对数据进行聚合操作,其可根据数据统计指令中的统计要求,通过条件筛选的方式,将所需数据进行聚合。aggregate()方法的语法如下:aggregate(operators,[options],callback)。

其中,operators参数是聚合运算符的数组,包括但便于$project、$match、$limit和$skip等等,它允许定义对数据执行什么汇总操作。options参数允许你设置readPreference属性,它定义了从哪里读取数据。callback参数是接受err和res。

Aggregate聚合函数专注于多条件分析和查询,对MapReduce提供的初步统计结果进行二次统计,从而得到范围更精确的统计结果。

从图1所示的方法可以看出,本申请根据数据统计指令,以非关系型数据库为基础,采用非关系型数据库固有的MapReduce方法,对目标数据进行初步统计,在该初步统计过程中,不添加复杂条件,然后基于Aggregate聚合函数,对初步统计的结果进行复杂的多条件分析,并对分析结果进行再次统计,以得到目标数据的统计结果。本申请整个统计过程,将复杂结构的数据统计为扁平数据,将此结果保存在数据库中,在外部应用访问数据库时,显著提高了数据库的查询速度;适用于复杂的数据结构和查询条件,尤其对于非结构化数据,有显著的效果;且适用范围广,本申请不仅能够面向企业级医疗数据的抽取、计算、统计,还可以应用于其他企业级项目;还可以通过大数据预测对消费者习惯进行甄别推荐其需要的信息,可以通过对海量数据的汇总分析,提升企业决策能力,切实为用户降低成本。

在本申请的一些实施例中,所述方法还包括:基于lookup函数,对目标数据的统计结果中的多个数据表进行关联处理,以得到关于目标数据的再次统计结果。

在更加复杂的场景下,还可以引入lookup函数,将多个初步统计结果进行联表操作,从而适应更复杂的统计场景。通过联表操作,允许人们通过转换和合并多个文档中的数据来生成新的单个文档中不存在的信息。

lookup函数的主要功能是将每个输入待处理的文档,这里指经过Aggregate聚合函数获得的多个统计文档,经过$lookup阶段的处理,输出的新文档中会包含一个新生成的数组列。

lookup函数的基本语法为:

lookup函数中,语法的含义可参考现有技术。对于lookup函数的应用场景,比如,对于两个文档,可以以字段“商品名称”为主题,基于lookup函数,将两个文档中关于一个特定商品的内容呈现在一个文档里,在这个文档里,如果有不同于原始文档的维度的信息,人们就能够获取到这个特定商品的新的信息。

在本申请的一些实施例中,所述方法还包括:基于ECharts方法,对所述目标数据的统计结果进行可视化处理,并在前端展示所述可视化处理结果。

ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。在执行本申请的电子设备中,可以增加ECharts组件,用于将统计结果进行可视化操作,使用ECharts将统计数据展示为折线图、柱状图、散点图、饼图、K线图等可视化图,使用户一目了然的获知统计结果。

具体的,在本申请的一些实施例中,所述基于ECharts方法,对所述目标数据的统计结果进行可视化处理,包括:读取所述ECharts中内置的type参数;根据所述type参数,确定目标展示类别;根据所述目标展示类别,将所述目标数据的统计结果转化为可视化图形。也就是说,ECharts展示图形的类别由其内置的type参数决定,例如type:'bar'代表柱状图,type:'line'代表折线图。由此本申请将type参数设计成一个可传入的参数,页面加载ECharts图时,同时获得统计数据和图类型type参数,后将type参数传入ECharts,用以实现图标展示的可配置,用户可以通过配置type参数,获取自己想要的图标类型。

在本申请的一些实施例中,在上述方法中,对初步统计的结果进行多条件分析,包括:将初步统计的结果转换为aggregate函数可识别的语法规则;根据分析条件,对简单初步统计的结果进行过滤,以得到分析结果;其中,分析条件包括一下的至少一项:分组、排序、分页、过滤空值、以及等、不等、包含、不包含。

在采用aggregate聚合函数对初步统计结果进行二次统计时,先将初步统计结果转化为aggregate函数可识别的语法规则,然后依据分组、排序、分页、过滤空值、以及等、不等、包含、不包含条件等复杂条件进行分析,从而实现对初步统计结果的过滤分析,得到进一步的目标数据的统计结果。

在现有技术中,对于上述复杂的多条件查询,通常是由MapReduce直接实现的,MapReduce是从原始数据抽取、统计目标数据的步骤,在这个阶段附件复杂的条件过滤逻辑,无疑严重增加了MapReduce的负担,影响了查询的速度和精度。而在本申请中,不同于现有技术之处在于,MapReduce只是从原始数据进行简单的统计,而Aggregate聚合函数在MapReduce的初步统计的结果之上,主要专注于多条件查询,这将原本由MapReduce负担的工作量,转移至下游的Aggregate聚合函数中,而Aggregate聚合函数已经有了MapReduce的初步统计的基础,能够实现快速、准确的统计,这种方式尤其对非结构化数据效果显著。

在本申请的一些实施例中,在上述方法中,对分析结果进行再次统计,以得到目标数据的统计结果,包括:根据目标维度,将分析结果进行汇总,得到目标数据的统计结果。

在采用MapReduce形成的初步统计结果中,由于没有进行条件过滤,数据是相对杂乱的,在采用Aggregate聚合函数的二次统计中,可以将具有共性的数据汇总在一起,如目标维度为一个目标商品的相关信息,则可以根据Aggregate聚合函数将还有该目标商品的数据整合在一起,到的最终的统计结果。

图2示出根据本申请的一个实施例的非关系型数据库的数据统计装置的结构示意图,从图2可以看出,该装置200包括:

接收单元210,用于接收数据统计指令,并获取与数据统计指令对应的目标数据;

初步统计单元220,用于根据所述数据统计指令,基于非关系型数据库的MapReduce方法,对目标数据进行初步统计;

结果统计单元230,用于基于Aggregate函数,对所述初步统计的结果进行多条件分析,并对分析结果进行再次统计,以得到目标数据的统计结果。

在本申请的一些实施例中,上述装置还包括:联表单元,用于基于lookup函数,对目标数据的统计结果中的多个数据表进行关联处理,以得到关于目标数据的再次统计结果。

在本申请的一些实施例中,上述装置还包括:可视化单元,用于基于ECharts方法,对所述目标数据的统计结果进行可视化处理,并在前端展示所述可视化处理结果。

在本申请的一些实施例中,上述装置还包括:可视化单元,用于读取所述ECharts中内置的type参数;根据所述type参数,确定目标展示类别;根据所述目标展示类别,将所述目标数据的统计结果转化为可视化图形。

在本申请的一些实施例中,在上述装置中,结果统计单元230,用于将所述初步统计的结果转换为aggregate函数可识别的语法规则;根据分析条件,对所述简单初步统计的结果进行过滤,以得到分析结果;其中,所述分析条件包括一下的至少一项:分组、排序、分页、过滤空值、以及等、不等、包含、不包含。

在本申请的一些实施例中,在上述装置中,结果统计单元230,用于根据目标维度,将所述分析结果进行汇总,得到目标数据的统计结果。

在本申请的一些实施例中,在上述装置中,所述非关系型数据库为MongoDB数据库。

能够理解,上述基于非关系型数据库的数据统计装置,能够实现前述实施例中提供的非关系型数据库的数据统计方法的各个步骤,关于非关系型数据库的数据统计方法的相关阐释均适用于非关系型数据库的数据统计装置,此处不再赘述。

图3是本申请的一个实施例电子设备的结构示意图。请参考图3,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。

处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。

处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成非关系型数据库的数据统计装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:

接收数据统计指令,并获取与数据统计指令对应的目标数据;

根据所述数据统计指令,基于非关系型数据库的MapReduce方法,对目标数据进行初步统计;

基于Aggregate函数,对所述初步统计的结果进行多条件分析,并对分析结果进行再次统计,以得到目标数据的统计结果。

上述如本申请图2所示实施例揭示的非关系型数据库的数据统计装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(CentralProcessing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

该电子设备还可执行图2中非关系型数据库的数据统计装置执行的方法,并实现非关系型数据库的数据统计装置在图2所示实施例的功能,本申请实施例在此不再赘述。

本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行图2所示实施例中非关系型数据库的数据统计装置执行的方法,并具体用于执行:

接收数据统计指令,并获取与数据统计指令对应的目标数据;

根据所述数据统计指令,基于非关系型数据库的MapReduce方法,对目标数据进行初步统计;

基于Aggregate函数,对所述初步统计的结果进行多条件分析,并对分析结果进行再次统计,以得到目标数据的统计结果。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

相关技术
  • 一种非关系型数据库多表场景分页显示方法及其装置
  • 基于ETL工具从关系型数据库向非关系型数据库更新的方法
  • 将非关系型数据库数据转换到关系型数据库的方法及装置
技术分类

06120115937957