CN117349323B - 数据库的数据处理方法及装置、存储介质及电子设备 - Google Patents

数据库的数据处理方法及装置、存储介质及电子设备 Download PDF

Info

Publication number
CN117349323B
CN117349323B CN202311655917.0A CN202311655917A CN117349323B CN 117349323 B CN117349323 B CN 117349323B CN 202311655917 A CN202311655917 A CN 202311655917A CN 117349323 B CN117349323 B CN 117349323B
Authority
CN
China
Prior art keywords
data
query
sub
database
service
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202311655917.0A
Other languages
English (en)
Other versions
CN117349323A (zh
Inventor
孙辽东
李世刚
张书博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202311655917.0A priority Critical patent/CN117349323B/zh
Publication of CN117349323A publication Critical patent/CN117349323A/zh
Application granted granted Critical
Publication of CN117349323B publication Critical patent/CN117349323B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供了一种数据库的数据处理方法及装置、存储介质及电子设备,其中,该方法包括:响应于获取到的业务查询指令,确定指定数据库中业务查询指令所查询的业务数据存储在的多个第一数据分片;根据多个第一数据分片中的每个第一数据分片对应的时间段将业务查询指令拆分为多个子查询指令;使用多个子查询指令中的每个子查询指令并行查询对应的第一数据分片,得到多个子查询结果,其中,多个子查询结果中的每个子查询结果包含从对应的第一数据分片中查询到的业务数据;将多个子查询结果合并为目标查询结果,并将目标查询结果发送给目标设备,其中,目标设备为发送业务查询指令的设备。通过本申请提高了业务数据的查询效率。

Description

数据库的数据处理方法及装置、存储介质及电子设备
技术领域
本申请实施例涉及大数据技术领域,具体而言,涉及一种数据库的数据处理方法及装置、存储介质及电子设备。
背景技术
时序数据是随时间不断产生的一系列数据,即时序数据是携带有时间戳的数据。时序数据库(Time Series Database,简称为TSDB)是优化用于摄取、处理和存储时间戳数据的数据库,此类数据可能包括来自服务器和应用程序的指标、来自物联网传感器的读数、网站或应用程序上的用户交互等。
在实际的业务场景中,时序数据库需要满足海量数据的存储、跨时间段的数据导出;针对海量数据处理的时序数据库需要部署多个物理节点,虽然能够提高时序数据库的负载能力,但会导致运维成本较高且资源浪费较多;而单机模式下的时序数据库虽然便于维护与部署,但数据查询响应速度较慢无法满足海量数据的快速查询。
由此可见,相关技术中数据库的数据处理方法,存在单机情况下数据查询响应速度较慢的技术问题。
发明内容
本申请实施例提供了一种数据库的数据处理方法及装置、存储介质及电子设备,以至少解决相关技术中数据库的数据处理方法存在单机模式下数据处理效率不高的技术问题。
根据本申请的一个实施例,提供了一种数据库的数据处理方法,包括:响应于获取到的业务查询指令,确定指定数据库中所述业务查询指令所查询的业务数据存储在的多个第一数据分片,其中,所述指定数据库中的业务数据按照所属的时间段被分别存储到对应的数据分片内,所述指定数据库中的每个数据分片用于存储一个时间段内的业务数据,所述多个第一数据分片所覆盖的时间范围包含所述业务查询指令所查询的业务数据所属的指定时间段;根据所述多个第一数据分片中的每个第一数据分片对应的时间段将所述业务查询指令拆分为多个子查询指令,其中,所述多个子查询指令中的子查询指令与所述多个第一数据分片中的第一数据分片一一对应;使用所述多个子查询指令中的每个子查询指令并行查询对应的第一数据分片,得到多个子查询结果,其中,所述多个子查询结果中的每个子查询结果包含从对应的第一数据分片中查询到的业务数据;将所述多个子查询结果合并为目标查询结果,并将所述目标查询结果发送给目标设备,其中,所述目标设备为发送所述业务查询指令的设备。
根据本申请的又一个实施例,提供了一种数据库的数据处理装置,其特征在于,包括:确定单元,用于响应于获取到的业务查询指令,确定指定数据库中所述业务查询指令所查询的业务数据存储在的多个第一数据分片,其中,所述指定数据库中的业务数据按照所属的时间段被分别存储到对应的数据分片内,所述指定数据库中的每个数据分片用于存储一个时间段内的业务数据,所述多个第一数据分片所覆盖的时间范围包含所述业务查询指令所查询的业务数据所属的指定时间段;拆分单元,用于根据所述多个第一数据分片中的每个第一数据分片对应的时间段将所述业务查询指令拆分为多个子查询指令,其中,所述多个子查询指令中的子查询指令与所述多个第一数据分片中的第一数据分片一一对应;使用单元,用于使用所述多个子查询指令中的每个子查询指令并行查询对应的第一数据分片,得到多个子查询结果,其中,所述多个子查询结果中的每个子查询结果包含从对应的第一数据分片中查询到的业务数据;合并单元,用于将所述多个子查询结果合并为目标查询结果,并将所述目标查询结果发送给目标设备,其中,所述目标设备为发送所述业务查询指令的设备。
根据本申请实施例的又一个方面,提供了一种计算机可读的存储介质,计算机可读的存储介质包括存储的程序,其中,程序运行时执行上述任一项方法实施例中的步骤。
根据本申请实施例的又一个方面,提供了一种电子设备,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
通过本申请实施例,响应于获取到的业务查询指令,确定指定数据库中所查询的业务数据与所属时间段对应的多个第一数据分片,由此,能够确定所查询的业务数据在指定数据库中的具体存储区域;根据多个第一数据分片对应的时间段将业务查询指令拆分为多个与第一数据分片分别对应的子查询指令,由此,能够将业务查询指令拆分为多个子查询指令以便于后续进行并行查询;使用多个子查询指令并行查询多个对应的第一数据分片,得到包含从对应的第一数据分片中查询到的业务数据的多个子查询结果,由此,通过与业务查询指令对应的多个子查询指令进行并行查询能够提高业务数据的查询效率;将多个子查询结果合并为目标查询结果并发送给目标设备,能够在提升查询效率的同时返回与业务查询指令对应的目标查询结果;在单一数据库处理海量数据的情况下,提高了业务数据的查询效率,进而解决了相关技术中数据库的数据处理方法存在单机情况下数据查询响应速度较慢的技术问题。
附图说明
图1是本申请实施例的一种数据库的数据处理方法的计算机终端的硬件结构框图;
图2是根据本申请实施例的一种数据库的数据处理方法的流程示意图;
图3是根据本申请实施例的另一种数据库的数据处理方法的流程示意图;
图4是根据本申请实施例的又一种数据库的数据处理方法的流程示意图;
图5是根据本申请实施例的一种数据写入过程的设备交互流程示意图;
图6是根据本申请实施例的一种数据库的数据处理装置的模块交互示意图;
图7是本申请实施例提供的一种可选的数据库的数据处理装置的结构框图;
图8是本申请实施例提供的一种可选的电子设备的计算机***的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1、InfluxDB,一种开源时序型数据库,专注于海量时序数据的高性能读、高性能写、高效存储与实时分析等。
2、Retention Policies,InfluxDB中的一种保留策略,可以定义数据的保留时长以及分片数据(shard)的划分方式。
3、Telegraf,一种指标采集组件,用于数据采集并且写入到InfluxDB中。
4、对象关系映射(Object Relational Mapping,简称为ORM),作用是在关系型数据库和业务实体对象之间作一个映射,这样,在具体的操作业务对象的时候,就不需要复杂的SQL语句,只需简单的操作对象的属性和方法。
5、结构化查询语言(Structured Query Language,简称为SQL),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库***。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本申请实施例的一种数据库的数据处理方法的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器或可编程逻辑器件等的处理装置)和用于存储数据的存储器104,其中,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的消息的传输方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在一些实施例中,本申请实施例中的数据库可以实施为时序数据库,具体可以是InfluxDB数据库。
InfluxDB是一个开源分布式时序、时间和指标数据库,使用Go语言编写,无需外部依赖。InfluxDB的设计目标是实现分布式和水平伸缩扩展。InfluxDB常用于在人工智能训练平台中用于存储监控数据和报表数据。InfluxDB本身在单机模式下无法支持部分类型的数据特性,例如,每秒超过75万个字段写入、每秒超过100个中度查询(多种聚合复杂查询)、超过1000万的级数基数。
相关技术中,InfluxDB针对海量数据推出企业版本,不仅可以解决大数据存储和查询问题,同时还提供高可用方案;但是企业版本收费较高,维护性较差,并且企业版本必须部署多个物理节点,从而导致资源浪费和运维成本的浪费。
相关技术中,采用部署多个InfluxDB的方式实现请求负载,不仅可以提高InfluxDB负载能力,并且同时还提供高可用方案;但是此类方法需要更多的资源消耗,并且需要基于InfluxDB开源版本做二次开发,导致无法与InfluxDB发布版本保持一致。
在实际的业务场景中需要满足海量数据的存储、多维度报表统计以及跨时间段数据导出;基于以上问题,本申请实施例提出一种数据库的数据处理,不仅可以节省研发成本、客户成本,还提高了产品的可扩展性、稳定性和安全性。
根据本申请实施例的一个方面,提供了一种数据库的数据处理方法,能够在单一数据库的情况下提高业务数据的查询效率,以由计算机终端来执行本实施例中的数据库的数据处理方法为例,图2是根据本申请实施例的一种数据库的数据处理方法的流程示意图,如图2所示,该流程包括如下步骤:
在步骤S202中,响应于获取到的业务查询指令,确定指定数据库中业务查询指令所查询的业务数据存储在的多个第一数据分片,其中,指定数据库中的业务数据按照所属的时间段被分别存储到对应的数据分片内,指定数据库中的每个数据分片用于存储一个时间段内的业务数据,多个第一数据分片所覆盖的时间范围包含业务查询指令所查询的业务数据所属的指定时间段。
为了对业务查询指令进行快速响应,在接收到业务查询指令之后,确定业务查询指令所查询业务数据存储在的多个第一数据分片,在这里,第一数据分片是指定数据库(时序型数据库)中所存储的业务数据按照时间段被存储到的数据分片,指定数据库中的每个数据分片用于存储一个预设时间段内的业务数据,多个第一数据分片包括与所查询的业务数据所属的指定时间段对应的数据分片。
在这里,数据分片(Data Sharding)是一种将数据分散存储在多个节点上的技术,它将大型数据集分成较小的数据块,每个数据块被分配到不同的节点上进行存储和处理。数据分片的目的是提高***的可扩展性和性能,避免单点故障,同时也可以提高数据的安全性和可靠性。
在一些实施例中,指定数据库可以为时序型数据库(Time Series Database,简称为TSDB),例如,Influxdb,可以用于存储时序数据,而业务查询指令所查询的业务数据可以是时序数据,即随时间不断产生的一系列数据(携带有时间戳的数据),时序型数据库以库为单位进行业务数据存储,时序型数据库中的每个库中允许存储的业务数据所属的时间段大于时序型数据库中的每个数据分片中允许存储的同种业务数据所属的时间段。数据分片可以理解为时序型数据库中的碎片文件,通过分片位置(数据分片在指定数据库中的位置,例如,在指定数据库中的数据表中的位置),可以定位到数据分片,从而实现业务数据按照数据分片进行写入和读取。这里,时序数据库用于摄取、处理和存储时间戳数据的数据库,此类数据可能包括来自服务器和应用程序的指标、来自物联网传感器的读数、网站或应用程序上所产生的实时数据。
例如,指定数据库可以是Influxdb,业务查询指令可以是针对在人工智能开发平台管理大规模集群中存储硬件相关的性能数据以及相关的多维度报表数据。
通过本申请提供的实施例,能够在响应于接收到业务查询指令之后,先行确定业务查询指令所查询业务数据具体存储在的多个第一数据分片,以便于后续对业务查询指令进行拆分。
在步骤S204中,根据多个第一数据分片中的每个第一数据分片对应的时间段将业务查询指令拆分为多个子查询指令,其中,多个子查询指令中的子查询指令与多个第一数据分片中的第一数据分片一一对应。
为了提高单节点的数据库在海量数据下的查询效率,按照业务查询指令所查询的业务数据存储在的第一数据分片对应的时间段,将业务查询指令拆分为分别与每个第一数据分片相对应的子查询指令,以便于后续进行并行查询提高查询效率。
在一些实施例中,在待写入数据写入数据库时,数据库会按照待写入数据的数据特性(例如,按照待写入数据的采集频率)对待写入数据进行分级处理,得到与待写入数据对应的多个第一数据分片,在这里,多个第一数据分片包括唯一标识、数据库名称标识、数据库表名标识、分片标识。
在一些实施例中,第一数据分片对应的时间段对应于待写入数据的开始时间(即开始进行数据采集的时间)至待写入数据的截止时间(即截止进行数据采集的时间),即第一数据分片对应的时间段是由预先设置的数据分级策略所确定的。
在这里,数据采集时会定义数据采集的频率,并按照采集的频率对采集到的待写入数据进行分级处理,例如,数据分级策略可以是秒级(以秒为单位进行数据采集)、分钟级(以分钟为单位进行数据采集)、小时级(以小时为单位进行数据采集)、天级(以天为单位进行数据采集)等。例如,当数据分级策略为小时级时,每一个小时生成一个数据分片(数据分片标识)并且包括与数据分片标识对应的开始时间与截止时间(时间段),在这里,采集间隔可以是秒级或分钟级等。
通过本申请提供的实施例,能够根据第一数据分片对应的时间段将业务查询指令进行拆分为与第一数据分片对应的多个子查询数据,以便于后续进行并行查询。
在步骤S206中,使用多个子查询指令中的每个子查询指令并行查询对应的第一数据分片,得到多个子查询结果,其中,多个子查询结果中的每个子查询结果包含从对应的第一数据分片中查询到的业务数据。
相关技术中,单节点的时序型数据库在响应于业务查询指令进行数据查询时,仅能针对整体的业务查询指令对指定数据库进行查询,导致在数据库存储海量数据的情况下,查询响应速度慢。
在本申请实施例中,能够按照第一数据分片对应的时间段将业务查询指令拆分为与第一数据分片对应的多个子查询指令,从而通过使用多个子查询指令进行并行查询指定数据库中对应的第一数据分片,以得到多个子数据查询结果,提高了数据查询效率。
这里,相对于以库为单位的数据查询,以数据分片为单位进行数据写入和读取,可以提高数据定位的速度。多个第一数据分片分别存储了业务查询指令所查询的业务数据,多个子查询结果中的每个子查询结果包含从对应的第一数据分片中查询到的业务数据,而使用多个子查询指令并行查询对应的第一数据分片,可以同时查询所需业务数据的不同部分,提高数据查询的效率。
通过本申请提供的实施例,能够通过对多个子查询进行并行查询,以从多个第一数据分片中分别获取子查询结果,提高了数据查询的效率。
在步骤S208中,将多个子查询结果合并为目标查询结果,并将目标查询结果发送给目标设备,其中,目标设备为发送业务查询指令的设备。
为了在提升查询效率的同时返回与业务查询指令对应的目标查询结果,需要将多个子查询结果进行合并,以得到与业务查询指令对应的目标查询结果,并将目标查询结果返回至目标设备。
相关技术中,业务场景下需要存储各种类型的数据,比如CPU性能数据、GPU性能数据,每种性能数据的数据结构都不一样;因此,数据库并发查询控制器面向该场景要动态返回不同性能数据的不同对象,例如,根据不同的数据结构(数据类型)定义不同的并发查询控制器,但此类方法无法动态扩展新的功能(性能),并且由于需要侵入业务代码逻辑,增加了代码的维护成本,或是,使用统一并发查询控制器但数据统一使用Map(Map用于保存具有映射关系的数据,Map集合里保存着两组值,一组值用于保存Map里的key,另外一组值用于保存Map里的value,key和value都可以是任何引用类型的数据)结构存储,但此类方法导致无法更直观的提供北向接口对接,业务属性信息不明确。
在本申请实施例中,在数据库的配置文件中按照数据库名称、数据库表名(性能数据)维护业务对象与关系型数据库(例如Influxdb)中的存储属性信息,得到业务数据转换文件,以使得查询得到的多个子查询结果,能够在数据库的执行引擎中完成数据的转换,得到统一格式的数据(例如JSON格式,Java中的对象概念),以对多个子查询结果进行合并,得到目标查询结果(即目标业务数据转换文件)。
在一些实施例中,当数据库实施为Influxdb数据库时,在lnfluxDB数据库中,可以通过网络接口(HTTP API)或InfluxDB客户端库将JSON格式的数据写入数据库。同时,InfluxDB数据库也支持查询和读取JSON格式的数据,并可以将查询结果以JSON格式返回。即,JSON数据可以被存储在InfluxDB中,通过InfluxDB的查询语言和接口(API)进行读取和操作。
通过本申请提供的实施例,将多个子查询结果转换为特定的数据格式并进行汇总得到目标查询结果,能够在提升查询效率的同时返回与业务查询指令对应的目标查询结果。
通过本申请实施例的上述步骤,响应于获取到的业务查询指令,确定指定数据库中所述业务查询指令所查询的业务数据存储在的多个第一数据分片,其中,所述指定数据库中的业务数据按照所属的时间段被分别存储到对应的数据分片内,所述指定数据库中的每个数据分片用于存储一个时间段内的业务数据,所述多个第一数据分片所覆盖的时间范围包含所述业务查询指令所查询的业务数据所属的指定时间段;根据所述多个第一数据分片中的每个第一数据分片对应的时间段将所述业务查询指令拆分为多个子查询指令,其中,所述多个子查询指令中的子查询指令与所述多个第一数据分片中的第一数据分片一一对应;使用所述多个子查询指令中的每个子查询指令并行查询对应的第一数据分片,得到多个子查询结果,其中,所述多个子查询结果中的每个子查询结果包含从对应的第一数据分片中查询到的业务数据;将所述多个子查询结果合并为目标查询结果,并将所述目标查询结果发送给目标设备,其中,所述目标设备为发送所述业务查询指令的设备。在单一数据库处理海量数据的情况下,提高了业务数据的查询效率,进而解决了相关技术中数据库的数据处理方法存在单机情况下数据查询响应速度较慢的技术问题。
在一个示例性实施例中,响应于获取到的业务查询指令,确定指定数据库中业务查询指令所查询的业务数据存储在的多个第一数据分片,包括:
S11,响应于获取到的业务查询指令,确定指定数据库中业务查询指令待查询的第一数据表以及指定时间段。
S12,根据与第一数据表包含的每个数据分片对应的时间段以及指定时间段,确定与业务查询指令所查询的业务数据存储在的多个第一数据分片。
在获取到业务查询指令之后,为了便于后续对业务查询指令根据业务数据对应的时间段进行拆分,需要确定业务查询指令所查询的业务数据存储在的多个第一数据分片的第一数据表以及业务数据对应的指定时间段;并根据第一数据表包含的每个数据分片对应的时间段以及业务查询指令中所查询业务数据的指定时间段进行匹配,以确定业务查询指令所查询的业务数据存储在的多个第一数据分片。
在一些实施例中,数据库包括多个数据表(Table),数据表中存储着业务数据,数据表由行(row)和列(column)组成,是一个二维的网格结构,每个列都是一个字段。字段由字段名称和字段的数据类型以及一些约束条件组成。
在一些实施例中,指定时间段是数据采集过程中的开始时间与截止时间之间的时间区间,在这里,指定时间段为业务查询指令所查询的业务数据被写入(采集)至数据库时的时间区间(与第一数据分片对应)。
通过本申请提供的实施例,在获取到业务查询指令时,首先确定与业务查询指令对应的业务数据的第一数据表以及指定时间段,以便于后续确定所查询的业务数据存储在的多个第一数据分片。
在一个示例性实施例中,第一数据表中的数据分片按照时间段的先后顺序依次存储业务数据,根据与第一数据表包含的每个数据分片对应的时间段以及指定时间段,确定与业务查询指令所查询的业务数据存储在的多个第一数据分片,包括:
S21,确定第一数据表中对应的时间段包含指定时间段的开始时间的第一目标数据分片,以及对应的时间段包含指定时间段的截止时间的第二目标数据分片。
S22,将第一数据表中由第一目标数据分片至第二目标数据分片的多个数据分片,确定为多个第一数据分片。
由于第一数据表的数据分片时按照时间段的先后顺序依次存储业务数据的,故可以确定第一数据表中对应的指定时间段的开始时间的第一目标数据分片、第一数据表中对应的指定时间段的截止时间的第二目标数据分片;将第一目标数据分片至第二目标数据分片之间的多个数据分片确定为业务查询指令所查询的业务数据存储在的多个第一数据分片。
在一些实施例中,时间段可以按照业务数据的采集频率进行划分,例如秒级时间段、分钟级时间段、小时级时间段等,在这里,每个时间段内的数据采集间隔可以是秒级。例如,在分钟级时间段内每秒采集一次业务数据。
在一些实施例中,在业务数据采集时,会确定采集业务数据写入的数据库与数据表(第一数据表),即数据库中存储的业务数据包括业务数据对应的数据库名称、数据表名、写入时间段等信息。
通过本申请提供的实施例,能够根据第一时间表中对应时间段的开始时间与截止时间,确定与业务查询指令所查询的业务数据存储在的多个第一数据分片,提高了数据查询效率。
在一个示例性实施例中,响应于获取到的业务查询指令,确定指定数据库中业务查询指令所查询的业务数据存储在的多个第一数据分片,包括:
S31,响应于获取到的业务查询指令,从业务查询指令中解析出一组指令参数信息。
其中,一组指令参数信息包含指定数据库的指定数据库标识、指定数据库中的第一数据表的第一数据表标识以及指定时间段的指定时间段标识。
S32,使用指定数据库标识、第一数据表标识以及指定时间段标识查询关系型数据库,得到多个第一数据分片的数据分片标识。
其中,关系型数据库用于存储数据库中的数据表所包含的数据分片和数据分片所存储的业务数据所属的时间段之间的对应关系。
在一些实施例中,业务查询指令携带有一组指令参数信息包括与所查询的业务数据对应的指定数据库的数据库标识、指定数据库中的第一数据表的第一数据表标识、指定时间段的指定时间段标识;在这里,通过数据库标识、第一数据表标识、指定时间段标识能够查询到对应的多个第一数据分片标识。
在一些实施例中,指令参数信息携带有多组相对应的指定数据库标识、第一数据表标识、指定时间段标识,每组标识均可查询到多个对应的第一数据分片。
在一些实施例中,关系型数据库存储数据库中的数据表所包含的数据分片和数据分片所存储的业务数据所属的时间段之间的对应关系,关系型数据库的数据结构参考表1:
表1
其中,唯一标识为数据分片的标识,不同数据表中的分片标识可以重复,业务数据所属的时间段为开始时间至截止时间之间的时间段。
通过本申请提供的实施例,通过关系型数据库存储数据库(时序数据库)中的数据表所包含的数据分片和数据分片所存储的业务数据所属的时间段之间的对应关系,使得能够根据业务查询指令确定所查询的业务数据存储在的多个第一数据分片。
在一个示例性实施例中,根据多个第一数据分片中的每个第一数据分片对应的时间段将业务查询指令拆分为多个子查询指令,包括:
S41,将每个第一数据分片对应的时间段与指定时间段的交集分别作为待查询的时间段,生成与每个第一数据分片对应的子查询指令,得到多个子查询指令。
其中,与每个第一数据分片对应的子查询指令中携带有每个第一数据分片的数据分片标识。
多个第一数据分片存储了与业务数据按照所属的时间段对应的业务数据,但第一数据分片还可能存储有其他的数据,因此,将业务数据的指定时间段与第一数据分片对应时间段的交集作为待查询时间段,根据待查询时间段生成与第一数据分片对应的子查询指令。
在一些实施例中,在获取业务查询指令之后,首先,解析出需要执行数据库语句(待执行SQL语句)的关键信息,包括:数据库名称、表名、时间范围;其次,根据数据库名称、表名读取关系型数据库以获取数据分片信息;再次,根据数据分片信息中的时间范围,待执行数据库语句的时间范围(即所查询的业务数据所属的指定时间段)来完成业务查询指令语句的切割,得到多个子查询语句(切割后的待执行SQL语句);最后,将多个子查询语句(切割后的SQL语句)放入缓存队列中(例如java中的ArrayList)。
例如,业务查询指令(待执行SQL语句)可以是:
“select * from databaseX.tableX where time >=2021-11-26 01:10:00 andtime <=2021-11-26 02:30:59”。
检索关系型数据库返回得到多个第一数据分片,参考表2:
表2
将每个第一数据分片对应的时间段与指定时间段的交集分别作为待查询的时间段,生成与每个第一数据分片对应的子查询指令,得到多个子查询指令,多个子查询指令如下:
select * from databaseX.tableX where time >=2021-11-26 01:10:00 andtime <=2021-11-26 01:59:59 on shard = 1
select * from databaseX.tableX where time >=2021-11-26 02:00:00 andtime <=2021-11-26 02:30:59 on shard = 2
通过本申请提供的实施例,能够根据关系型数据库中存储的数据库中的数据表所包含的数据分片和数据分片所存储的业务数据所属的时间段之间的对应关系,对业务查询指令按照所属时间段进行拆分,得到多个子查询指令,以提高查询效率。
在一个示例性实施例中,在响应于获取到的业务查询指令,确定指定数据库中业务查询指令所查询的业务数据存储在的多个第一数据分片之前,上述方法还包括:
S51,通过指令***对进行指令拦截,得到拦截到的业务查询指令。
其中,指令***用于拦截读取指定数据库中所存储的业务数据指令。
为了对业务查询指令进行拆分,在获取到业务查询指令时,需要通过指令***进行指令拦截,以得到拦截到的业务查询指令。
在一些实施例中,当数据库实施为Influxdb数据库时,指令***可以实施为Aspect***,在业务层代码中通过Aspect***,拦截所有涉及InfluxDB读取的业务。
通过本申请提供的实施例,设置指令***以对指定数据库中所存储的业务数据指令进行拦截,避免业务查询指令直接被指定数据库执行导致的查询相应速度慢。
在一个示例性实施例中,指令***用于按照以下至少之一的拦截方式进行指令拦截:按照文件进行拦截,按照方法名称进行拦截,按照指定的文件通配符进行拦截;指令***使用环绕通知的方式切入到指定业务,以与指定业务进行解耦,业务查询指令所查询的业务数据为指定业务的业务数据。
在一些实施例中,当数据库实施为Influxdb数据库时,指令***可以实施为Aspect***;在Influxdb数据库的业务层代码中通过Aspect***,拦截所有涉及InfluxDB读取的业务,主要包括:定义切入点(例如,按照文件定义统一拦截、按照方法名称定义拦截、按照文件通配符定义拦截)、核心业务处理(使用Aspect中的环绕通知的方式切入具体业务,以与实际业务解耦,环绕通知中调用数据库语句(SQL)执行逻辑的公共方法)。
在一些实施例中,当数据库实施为Influxdb数据库时,指令***可以实施为Aspect***,Aspect是spring框架中的一种概念(AOP切面的概念,面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术)可以理解为平台定义一个全局的方法,这个方法中包含拦截的地址,所有实际业务的执行都会被该方法拦截,拦截处理完成之后返回,例如,实例可以是:Before()---Aspect***需要进行的处理;实际业务()---会被spring框架直接抓取;After()---Aspect***需要进行的处理,通过Aspect***进行业务指令拦截可以实现整个过程对业务代码无侵入。
通过本申请提供的实施例,通过指令***按照指定的拦截方式对业务查询指令进行拦截,能够在实现拦截的同时对业务代码无侵入且与指定业务解耦。
在一个示例性实施例中,使用多个子查询指令中的每个子查询指令并行查询对应的第一数据分片,得到多个子查询结果,包括:
S61,使用每个子查询指令并行调用指令执行引擎,得到指令执行引擎返回的、与每个子查询指令对应的子查询结果。
其中,指令执行引擎用于使用获取到的查询指令从指定数据库中进行业务数据检索,多个子查询结果包括与每个子查询指令对应的子查询结果。
在一些实施例中,指令执行引擎基于子查询指令中携带的多个第一数据分片信息与业务数据对应的指定时间段从指定数据库中进行业务数据并行检索,得到与每个子查询指令对应的子查询结果。
在一些实施例中,指令执行引擎是指定数据库中的数据库语句执行引擎,该引擎主要通过数据分片信息与所查询的业务数据的时间范围完成快速检索。
在一个示例性实施例中,参考图3,在使用每个子查询指令并行调用指令执行引擎之后,上述方法还包括:
S71,响应于获取到的每个子查询指令,通过指令执行引擎将每个子查询指令分别作为当前子查询指令执行数据检索操作。
针对于每个子查询指令,可以通过指令执行引擎将每个子查询指令分别作为当前子查询指令执行数据检索操作,从而得到与每个子查询指令对应的子查询结果。上述的数据检索操作可以包括以下步骤,其中,与当前子查询指令对应的第一数据分片为当前数据分片,当前数据分片为指定数据库中的第一数据表包含的数据分片,当前子查询指令待查询的业务数据所属的时间段为当前时间段:
S711,从当前子查询指令中提取出指定数据库的指定数据库标识、第一数据表的第一数据表标识、当前数据分片的当前数据分片标识以及当前时间段的当前时间段标识;
S712,根据指定数据库标识、第一数据表标识、当前数据分片标识以及当前时间段标识定位出当前子查询指令当前待查询的业务数据所存储在的当前磁盘文件;
S713,使用指定数据库标识、第一数据表标识、当前磁盘文件的文件标识以及当前时间段标识查询指定数据库,得到与当前子查询指令对应的当前子查询结果。
当数据库实施为Influxdb数据库时,由于InfluxDB本身不支持直接按照数据分片信息进行检索(相关技术中,仅能通过业务查询指令对指定数据库进行检索),为了在业务层完成数据分片信息与原生数据库语句的解耦,在Influxdb数据库中增加了查询的***(即指令***),通过数据分片(数据分片标识、数据库标识、数据表标识)定位到influxdb本身要检索的磁盘文件,然后将指定数据库标识、第一数据表标识、当前磁盘文件的文件标识以及当前时间段标识查询指定数据库传入influxdb本身的方法继续执行,以得到与当前子查询指令对应的当前子查询结果。
通过本申请提供的实施例,实现了基于时序数据库(InfluxDB)的数据分片进行并发查询,以得到与子查询指令对应的子查询结果,在整个实现过程中与实际业务层代码解耦(不侵入业务),提高了数据查询效率,且便于维护。
在一个示例性实施例中,使用指定数据库标识、第一数据表标识、当前磁盘文件的文件标识以及当前时间段标识查询指定数据库,得到与当前子查询指令对应的子查询结果,包括:
S81,使用指定数据库标识、第一数据表标识、当前磁盘文件的文件标识以及当前时间段标识按照超文本传输协议生成目标查询信息;
S82,调用指定数据库的超文本传输协议接口,将目标查询信息传入指定数据库,得到指定数据库返回的当前子查询结果,其中,当前子查询结果为JSON数据。
为了提高子查询结构的易用性,需要在返回子查询结果的过程中主要完成数据库中数据到页面数据转换。
在一些实施例中,调用指令执行引擎使用所查询的业务数据对应的指定数据库标识、第一数据表标识、当前磁盘文件的文件标识以及当前时间段标识,按照超文本传输协议(HyperText Transfer Protocol,简称为HTTP)生成目标查询信息;通过指令执行引擎调用数据库的超文本传输协议接口,将目标查询信息传入指定数据库,并返回当前子查询结果(即JSON数据)。
例如,使用https协议直接调用InfluxDB的接口的程序代码可以是“Get 'http://localhost:8086/query?pretty=true' --data-urlencode "db=databaseX" --data-urlencode "q=SELECT * FROM \"tableX\" WHERE time >=2021-11-26 01:10:00 andtime <=2021-11-26 01:59:59" –shard “1””。
在这里,调用指定数据库的超文本传输协议接口是Influxdb数据库的标准请求方式,以使得Influxdb数据库基于目标查询信息返回JSON数据。
在lnfluxDB中,可以通过超文本传输协议接口或InfuxDB客户端库将JSON格式的数据写入数据库。同时,lnfluxDB也支持查询和读取JSON格式的数据,并可以将查询结果以JSON格式返回。因此,JSON数据可以被存储在InfluxDB中,通过InfluxDB的查询语言和接口进行读取和操作。
在一个示例性实施例中,在调用指定数据库的超文本传输协议接口,将目标查询信息传入指定数据库,得到指定数据库返回的当前子查询结果之后,上述方法还包括:
S91,将当前子查询结果转换为对象化的JSON数据,得到转换后的当前子查询结果。
其中,对象化的JSON数据为允许通过页面进行展示的JSON数据。
为了提高子查询结果的易用性,需要在返回子查询结果的过程中主要完成数据库中数据到页面数据转换,以得到对象化的JSON数据。
在一些实施例中,在得到返回的子查询结果(JSON数据)之后,通过指令执行引擎根据所查询的业务数据与数据库属性的关系文件(业务数据转换文件)将子查询结果转换为对象化的JSON数据。
通过本申请提供的实施例,能够将指令查询引擎返回的子查询结果转换为对象化的JSON数据,提高了数据查询结果的易用性,以便于后续对多个子查询结果进行合并。
在一个示例性实施例中,在将多个子查询结果合并为目标查询结果之前,上述方法还包括:
S101,对每个子查询结果分别执行数据转换操作,得到转换后的每个子查询结果。
其中,数据转换操作为将指定数据库中存储的业务数据转换为允许通过页面进行展示的页面数据的转换操作。
在一些实施例中,对象数据化的JSON数据可以为页面展示的数据,数据库数据指的是Influxdb中的数据,这个过程主要完成Influxdb中数据到页面数据转换,主要涉及单位转换、小数保留等。
在这里,JSON是一种轻量级的数据交换格式,它有键值对集合和数组两种结构。JSON是一个通用的格式,在前端语言与后端语言中均能进行识别,例如,将JSON数据输入至HTML中,以进行页面展示。
通过本申请提供的实施例,能够将指令查询引擎返回的子查询结果转换为对象化的JSON数据,以使得子查询结果能够可视化,提高了用户体验。
在一个示例性实施例中,使用多个子查询指令中的每个子查询指令并行查询对应的第一数据分片,得到多个子查询结果,包括:
S111,将每个子查询指令分别写入到与每个子查询指令对应的指令缓存队列中。
其中,与每个子查询指令对应的指令缓存队列是为与每个子查询指令对应的第一数据分片设置的缓存队列,不同指令缓存队列中的指令并行执行;
S112,在与每个子查询指令对应的指令缓存队列当前待执行的指令为每个子查询指令的情况下,从与每个子查询指令对应的指令缓存队列提取出每个子查询指令,并使用每个子查询指令查询对应的第一数据分片,得到与每个子查询指令对应的子查询结果。
其中,多个子查询结果包括与每个子查询指令对应的子查询结果。
为了对多个子查询指令进行并行查询,在将业务查询指令拆分为多个子查询指令之后,需要将每个子查询指令分别写入到对应的指令缓存队列中(不同指令缓存队列中的指令并行执行),以便于后续进行子查询语句的并发控制。
在一些实施例中,使用influxdb的Java客户端连接到influxdb数据库,使用Java的并发编程机制发起并行查询,从与每个子查询指令对应的指令缓存队列提取出每个子查询指令,并使用每个子查询指令查询对应的第一数据分片,得到与每个子查询指令对应的子查询结果。
在这里,使用Java的线程池管理并发查询的线程,以提高并发查询的效率。
通过本申请提供的实施例,将多个子查询指令分别放置于缓存队列中,以便于后续通过缓存队列进行多个子查询指令的并行执行,提高了数据查询的并发数量。
在一个示例性实施例中,参考图4,指定数据库中的每个数据分片与一组指定采集频率中的一个指定采集频率对应,与指定数据库中的每个数据分片对应的时间段和与指定数据库中的每个数据分片对应的指定采集频率匹配;上述方法还包括:
S121,获取写入数据请求,其中,写入数据请求用于请求向指定数据库中写入采集到的目标业务数据;
S122,在根据目标业务数据的目标采集频率以及当前时间,确定指定数据库中不存在与目标业务数据对应的数据分片的情况下,将目标业务数据写入到指定数据库中为目标业务数据创建的第二数据分片中。
其中,与第二数据分片对应的指定采集频率是一组指定采集频率中与目标采集频率最近的指定采集频率。
在一些实施例中,指定数据库中的每个数据分片与一组指定采集频率中的一个指定采集频率对应,例如秒级、分钟级、小时级、天级等,在这里,每个采集频率内的数据采集间隔可以是秒级。例如,在小时级采集频率内每秒(或每间隔1秒)采集一次业务数据。
在向指定数据库(时序数据库)写入采集到的目标业务数据时,且指定数据库(数据表)中不存在与目标业务数据对应的数据分片的情况下,根据目标业务数据的目标采集频率以及当前时间创建第二数据分片,将采集到的目标业务数据写入到指定数据库中的第二数据分片中。
在一些实施例中,根据写入数据请求所携带的预计写入的指定数据库标识、数据库中的数据表标识判断指定数据库中是否存在对应的数据分片。
在一个示例性实施例中,在获取写入数据请求之后,上述方法还包括:
S131,在根据目标业务数据的目标采集频率以及当前写入时间,确定指定数据库中存在与目标业务数据对应的第三数据分片、且第三数据分片中不存在目标业务数据的情况下,将目标业务数据写入到第三数据分片。
其中,与第三数据分片对应的指定采集频率是一组指定采集频率中与目标采集频率最近的指定采集频率。
在一些实施例中,根据写入数据请求所携带的预计写入的指定数据库标识、数据库中的数据表标识判断指定数据库中是否存在对应的数据分片。
例如,参考表3,当指定数据库为DatabaseX,数据表为TableX时,当前写入时间为2021-11-26 02:10:10时,则的数据表没有变化(唯一标识2对应的数据分片(即第三数据分片)中已存在时间段2021-11-26 02:10:10至2021-11-26 02:59:59)。
表3
通过本申请提供的实施例,在已存在与待写入的目标业务数据对应的数据分片时,若数据分片中不存在目标业务数据的情况下,直接将目标业务数据写入已有对应的数据分片,提高了数据库(数据表)的简洁性。
在一个示例性实施例中,第二数据分片为指定数据库中的第二数据表包含的数据分片;在将目标业务数据写入到指定数据库中为目标业务数据生成的第二数据分片中之后,上述方法还包括:
S141,在关系型数据库中添加与第二数据分片对应的目标数据分片信息。
其中,目标数据分片信息用于指示指定数据库、第二数据表、第二数据分片和与第二数据分片对应的时间段之间的对应关系。
例如,参考表4,当指定数据库为DatabaseX,数据表为TableX,当前写入时间为2021-11-26 03:10:10则数据库的数据表中新增唯一标识为4的数据。
表4
/>
在这里,唯一标识为4的目标数据分片用于指示指定数据库(即DatabaseX)、第二数据表(TableX)、位于指定数据库的第二数据表的第二数据分片(在Database数据库的TableX数据表中的分片标识为3)和与第二数据分片对应的时间段(2021-11-26 03:00:00至2021-11-26 03:59:59)之间的对应关系。
在一些实施例中,参考图5,响应于用户发起的写入数据请求,通过Telegraf输出插件(Telegraf Outputplugin)在关系数据库中查询待写入数据是否存在;若已存在,则返回待写入数据已存在(处理完成);若不存在,则由关系数据库发起分片逻辑,在数据分片中生成分片数据;通过数据分片将生成的分片数据写入influxdb数据库,再通过influxdb数据库将分片数据写入至关系数据库,随后将处理完成通知返回至用户。
通过本申请提供的实施例,在指定数据库中生成对应的数据分片之后,在关系型数据库中生成相应的唯一标识,以记录目标数据分片在指定数据库中的对应关系(如上表4)。
在一个示例性实施例中,在获取写入数据请求之后,上述方法还包括:
S151,按照预设的采集频率与数据保留时长之间的对应关系,确定与目标业务数据的目标采集频率对应的目标数据保留时长。
其中,目标数据保留时长为目标业务数据持久化到指定数据库中之后允许保留的时长;
S152,根据当前时间和目标数据保留时长,为目标业务数据设置数据保留时间。
其中,数据保留时间为目标业务数据在指定数据库中允许保留到的时间。
在一些实施例中,根据目标业务数据写入指定数据库之前的数据特性(例如,采集频率或预计保留时间)定义目标数据保留时长(保留策略),同时在关系数据库中维护与目标业务数据对应的数据分片的数据库标识、数据表标识、分片标识以及时间段的关系。
在这里,目标数据保留时长(保留策略)可以是数据持久化后保留的时间,比如数据保留10天,则第11天时数据库***会自动回收10天之内的所有数据(例如,直接物理删除)。例如,在Influxdb数据库中可以通过程序编辑语句“CREATE RETENTION POLICY "策略名称" ON 数据库名_表名 DURATION 时长 REPLICATION 副本个数”实现。
通过本申请提供的实施例,在获取写入数据请求之后,同时会定义数据的目标保留时长(并在关系型数据库中记录),以避免数据过多对数据库的负载过大。
在一个示例性实施例中,获取采集到的业务数据以及将业务数据写入到指定数据库中的数据分片是由指定采集组件指定的;在获取写入数据请求之前,上述方法还包括:
S161,按照指定采集组件的部署脚本所指示的输出方式动态加载输出插件,得到目标输出插件。
其中,目标输出插件为封装好的二进制可执行文件,二进制可执行文件中写入有用于判断业务数据在指定数据库中是否存在的数据判断代码、以及用于在指定数据库中生成数据分片的分片生成代码。
在一些实施例中,在数据库实施为Influxdb数据库时,指定采集组件可以是Telegraf,在本申请实施例中,基于Telegraf(采集组件)原生的InfluxDB Output进行二次开发,增加数据判断、分片生成等逻辑,其次,把二次开发的代码封装成二进制可执行文件,最后修改telegraf的部署脚本,在部署脚本中配置output的输出方式(形如: /bin/telegraf -output-filter myInfluxdbOutput),利用telegraf本身的动态加载机制替换原有的output插件。
通过本申请提供的实施例,在数据库的采集组件中增加数据判断代码(用于判断指定数据库中是否存在指定数据)、以及分片生成代码(用于在指定数据库中生成数据分片),增加了数据采集的便捷性。
在一个示例性实施例中,指定数据库为时序型数据库,时序型数据库以库为单位进行业务数据存储,时序型数据库中的每个库中允许存储的业务数据所属的时间段大于指定数据库中的每个数据分片中允许存储的同种业务数据所属的时间段;和/或,业务查询指令为结构化查询语言SQL查询语句;和/或,将业务查询指令拆分为多个子查询指令是由用于进行查询指令拆分的指令拆分组件执行的;和/或,使用每个子查询指令并行查询对应的第一数据分片是由SQL执行引擎执行的。
参考图6,本申请实施例主要包括三个组件,Retention Policies动态定义组件、InfluxDB解析ORM组件以及InfluxDB并发查询控制组件。
Retention Policies动态定义组件,主要用于完成数据写入策略的定义、分片数据与时间段关系的维护,例如,数据写入InfluxDB之前根据数据的特性(比如:秒级数据、小时级数据、天级数据)定义数据保留的策略,并且在关系数据库中维护InfluxDB数据库/表/分片以及分片时间段的关系、扩展Telegraf output插件。
其中,Retention Policies动态定义组件包括数据保留策略,用于通过InfluxDB存储Telegraf采集的数据,按照采集间隔规划数据的保留策略并且按照分级策略规划数据分片的情况。
在一些实施例中,分级策略包括按小时分级和按天分级,例如,按小时分级是每一个小时生成一个分片标识,按天分级则是每一天生成一个分片标识(数据采集是秒级数据),参考表5:
表5
在数据分片完成之后,调用InfluxDB原生接口,在InfluxDB中完成分片信息的创建,并且同时在关系数据库中完成数据的维护;通过以上步骤不仅可以解决Telegraf无法指定数据分片存储数据的问题(Telegraf本身只能按照一种策略写入数据,并且写入数据的时间分片以周为单位,影响业务查询的吞吐量),并且可以按照预设的写入策略写入到不同的分片中,从而降低单个分片读写的负载;为后续实现InfluxDB并行查询提供了基础,而且通过Telegraf Outputplugin完成与Telegraf和InfluxDB解耦。
参考图6,在Telegraf插件进行周期采集之后,通过Retention Policies动态定义组件将采集数据写入至Telegraf output插件(Telegraf outputPlugin);并根据采集数据的数据库名称与采集数据的数据表名判断是否已经创建分级策略;若已经创建则结束;若没有创建则根据采集间隔判断分级策略(例如,小时单位或天单位,其中,小时单位包括秒级、分钟级、小时级,天单位包括天级、其他天级);在判断与写入的采集数据对应的分级策略之后,在InfluxDB中创建策略,并在关系数据库中维护相对应的逻辑关系。
InfluxDB解析ORM组件,主要用于通过程序编辑语言(例如,Java语言)实现对InfluxDB的读取,其中,InfluxDB解析ORM组件包括Aspect***、SQL拆分组件(用于将单条SQL语句自动拆分多条SQL语句)、SQL执行引擎。
InfluxDB并发查询控制组件,主要用于完成多条SQL语句并发查询控制以及数据汇总,其中,InfluxDB并发查询控制组件包括:并发执行策略组件、并发子任务协调组件、数据合并组件。整个实现过程完全基于java的线程池创建和销毁、线程子任务调度栅栏以及数据回调实现。
本申请实施例提出一种基于并行查询解决InfluxDB单节点海量数据下查询响应慢的装置,不仅可以提高查询效率,还实现了InfluxDB并发查询中数据分片的思路,在整个实现过程中与实际业务层代码解耦,不影响Telegraf和InfluxDB本身的升级。本案通过插件的方式集成到产品中,不侵入原有业务,减少对Telegraf和InfluxDB本身的影响。基于本案不仅提高了InfluxDB单节点海量数据下查询效率,并且降低了维护成本和技术风险,提高了AI平台在同类产品中的竞争力。
参考图6,在接收到发起的查询业务后,在业务层代码中通过InfluxDB解析ORM组件的Aspect***拦截所有涉及InfluxDB读取的业务;并通过SQL拆分组件首先按照数据分片(shared)进行拆分,其次按照时间范围进行拆分,得到拆分后的SQL语句列表;并将拆分后的SQL语句列表放入至InfluxDB并发查询控制组件的并发执行策略组件中;通过InfluxDB解析ORM组件中的SQL执行引擎对拆分后的SQL语句列表进行实际调用执行,即按照数据分片的时间范围进行查询数据;再通过InfluxDB并发查询控制组件中的并发子任务协调组件进行子任务等待时间设定以及超时处理策略设定,以及通过数据合并组件完成业务数据转换为文件的部署;最后返回业务查询数据(拦截后)。
在这里,InfluxDB Retention Policies动态定义(组件)用于定义数据库、数据表名、时间段对应关系的数据分片结构,并在关系型数据库中完成初始化;定义采集频率与分片分级策略的对应关系(例如,秒级/分钟级/小时级为小时单位、天级以及以上为天单位);在采集组件(telegraf)中新增逻辑代码(增加数据判断、分片生成等逻辑,其次把二次开发的代码封装成二进制可执行文件,最后修改telegraf的部署脚本,在部署脚本中配置output的输出方式)并重新启动采集组件。
InfluxDB解析ORM组件用于部署Aspect***、SQL执行引擎,其中,将Aspect***信息嵌入到使用InfluxDB的核心业务代码中,并且根据文件路径定义可拦截的业务请求,同时部署单条SQL自动拆分多条SQL组件;部署SQL执行引擎并且开启动态加载InfluxDB并发查询控制中的业务数据转换文件。
InfluxDB并发查询控制(组件)包括SQL语句并发执行策略组件、并发子任务协调组件、数据合并组件,其中,SQL语句并发执行策略组件用于完成线程池的定义,例如,核心线程池50,最大线程池500,请求队列1000,拒绝策略为重新入队等;并发子任务协调组件用于定义子任务等待超时时间(例如,30秒)以及超时之后的处理策略(例如,重试三次,如果还是失败则本次查询失败)数据合并组件用于完成业务数据转换文件的部署。
通过本申请提供的实施例,实现了在不侵入业务代码的情况下完成数据查询与数据汇总,并保证在查询结果快速响应的情况下完成SQL语句数据的查询分割,同时与Influxdb版本解耦,减少了InfluxDB版本升级导致业务功能出现问题的可能性。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
根据本申请实施例的另一方面,还提供了一种数据库的数据处理装置,该装置用于实现上述实施例中所提供的数据库的数据处理方法,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是本申请实施例提供的一种可选的数据库的数据处理装置的结构框图,如图7所示,该装置包括:
确定单元702,用于响应于获取到的业务查询指令,确定指定数据库中业务查询指令所查询的业务数据存储在的多个第一数据分片,其中,指定数据库中的业务数据按照所属的时间段被分别存储到对应的数据分片内,指定数据库中的每个数据分片用于存储一个时间段内的业务数据,多个第一数据分片所覆盖的时间范围包含业务查询指令所查询的业务数据所属的指定时间段;
拆分单元704,用于根据多个第一数据分片中的每个第一数据分片对应的时间段将业务查询指令拆分为多个子查询指令,其中,多个子查询指令中的子查询指令与多个第一数据分片中的第一数据分片一一对应;
使用单元706,用于使用多个子查询指令中的每个子查询指令并行查询对应的第一数据分片,得到多个子查询结果,其中,多个子查询结果中的每个子查询结果包含从对应的第一数据分片中查询到的业务数据;
合并单元708,用于将多个子查询结果合并为目标查询结果,并将目标查询结果发送给目标设备,其中,目标设备为发送业务查询指令的设备。
需要说明的是,该实施例中的确定单元702可以用于执行上述步骤S202,该实施例中的拆分单元704可以用于执行上述步骤S204,该实施例中的使用单元706可以用于执行上述步骤S206,合并单元708可用于执行上述步骤S208。
通过本申请实施例能够响应于获取到的业务查询指令,确定指定数据库中业务查询指令所查询的业务数据存储在的多个第一数据分片,其中,指定数据库中的业务数据按照所属的时间段被分别存储到对应的数据分片内,指定数据库中的每个数据分片用于存储一个时间段内的业务数据,多个第一数据分片所覆盖的时间范围包含业务查询指令所查询的业务数据所属的指定时间段;根据多个第一数据分片中的每个第一数据分片对应的时间段将业务查询指令拆分为多个子查询指令,其中,多个子查询指令中的子查询指令与多个第一数据分片中的第一数据分片一一对应;使用多个子查询指令中的每个子查询指令并行查询对应的第一数据分片,得到多个子查询结果,其中,多个子查询结果中的每个子查询结果包含从对应的第一数据分片中查询到的业务数据;将多个子查询结果合并为目标查询结果,并将目标查询结果发送给目标设备,其中,目标设备为发送业务查询指令的设备。提高了业务数据的查询效率,进而解决了相关技术中数据库的数据处理方法存在单机情况下数据查询响应速度较慢的技术问题。
在一个示例性实施例中,确定单元包括:
第一确定模块,用于响应于获取到的业务查询指令,确定指定数据库中业务查询指令待查询的第一数据表以及指定时间段;
第二确定模块,用于根据与第一数据表包含的每个数据分片对应的时间段以及指定时间段,确定与业务查询指令所查询的业务数据存储在的多个第一数据分片。
在一个示例性实施例中,第一数据表中的数据分片按照时间段的先后顺序依次存储业务数据,第二确定模块包括:
第一确定子模块,用于确定第一数据表中对应的时间段包含指定时间段的开始时间的第一目标数据分片,以及对应的时间段包含指定时间段的截止时间的第二目标数据分片;
第二确定子模块,用于将第一数据表中由第一目标数据分片至第二目标数据分片的多个数据分片,确定为多个第一数据分片。
在一个示例性实施例中,确定单元包括:
解析模块,用于响应于获取到的业务查询指令,从业务查询指令中解析出一组指令参数信息,其中,一组指令参数信息包含指定数据库的指定数据库标识、指定数据库中的第一数据表的第一数据表标识以及指定时间段的指定时间段标识;
使用模块,用于使用指定数据库标识、第一数据表标识以及指定时间段标识查询关系型数据库,得到多个第一数据分片的数据分片标识,其中,关系型数据库用于存储数据库中的数据表所包含的数据分片和数据分片所存储的业务数据所属的时间段之间的对应关系。
在一个示例性实施例中,拆分单元包括:
生成模块,用于将每个第一数据分片对应的时间段与指定时间段的交集分别作为待查询的时间段,生成与每个第一数据分片对应的子查询指令,得到多个子查询指令,其中,与每个第一数据分片对应的子查询指令中携带有每个第一数据分片的数据分片标识。
在一个示例性实施例中,上述装置还包括:
拦截单元,用于通过指令***对进行指令拦截,得到拦截到的业务查询指令,其中,指令***用于拦截读取指定数据库中所存储的业务数据指令。
在一个示例性实施例中,指令***用于按照以下至少之一的拦截方式进行指令拦截:按照文件进行拦截,按照方法名称进行拦截,按照指定的文件通配符进行拦截;指令***使用环绕通知的方式切入到指定业务,以与指定业务进行解耦,业务查询指令所查询的业务数据为指定业务的业务数据。
在一个示例性实施例中,使用单元包括:
第一使用模块,用于使用每个子查询指令并行调用指令执行引擎,得到指令执行引擎返回的、与每个子查询指令对应的子查询结果,其中,指令执行引擎用于使用获取到的查询指令从指定数据库中进行业务数据检索,多个子查询结果包括与每个子查询指令对应的子查询结果。
在一个示例性实施例中,上述装置还包括:
操作单元,用于响应于获取到的每个子查询指令,通过指令执行引擎将每个子查询指令分别作为当前子查询指令执行以下的数据检索操作,其中,与当前子查询指令对应的第一数据分片为当前数据分片,当前数据分片为指定数据库中的第一数据表包含的数据分片,当前子查询指令待查询的业务数据所属的时间段为当前时间段:
从当前子查询指令中提取出指定数据库的指定数据库标识、第一数据表的第一数据表标识、当前数据分片的当前数据分片标识以及当前时间段的当前时间段标识;
根据指定数据库标识、第一数据表标识、当前数据分片标识以及当前时间段标识定位出当前子查询指令当前待查询的业务数据所存储在的当前磁盘文件;
使用指定数据库标识、第一数据表标识、当前磁盘文件的文件标识以及当前时间段标识查询指定数据库,得到与当前子查询指令对应的当前子查询结果。
在一个示例性实施例中,操作单元包括:
第二使用模块,用于使用指定数据库标识、第一数据表标识、当前磁盘文件的文件标识以及当前时间段标识按照超文本传输协议生成目标查询信息;
调用模块,用于调用指定数据库的超文本传输协议接口,将目标查询信息传入指定数据库,得到指定数据库返回的当前子查询结果,其中,当前子查询结果为JSON数据。
在一个示例性实施例中,上述装置还包括:
第一转换单元,用于将当前子查询结果转换为对象化的JSON数据,得到转换后的当前子查询结果,其中,对象化的JSON数据为允许通过页面进行展示的JSON数据。
在一个示例性实施例中,上述装置还包括:
第二转换单元,用于在将多个子查询结果合并为目标查询结果之前对每个子查询结果分别执行数据转换操作,得到转换后的每个子查询结果,其中,数据转换操作为将指定数据库中存储的业务数据转换为允许通过页面进行展示的页面数据的转换操作。
在一个示例性实施例中,使用单元包括:
写入模块,用于将每个子查询指令分别写入到与每个子查询指令对应的指令缓存队列中,其中,与每个子查询指令对应的指令缓存队列是为与每个子查询指令对应的第一数据分片设置的缓存队列,不同指令缓存队列中的指令并行执行;
提取模块,用于在与每个子查询指令对应的指令缓存队列当前待执行的指令为每个子查询指令的情况下,从与每个子查询指令对应的指令缓存队列提取出每个子查询指令,并使用每个子查询指令查询对应的第一数据分片,得到与每个子查询指令对应的子查询结果,其中,多个子查询结果包括与每个子查询指令对应的子查询结果。
在一个示例性实施例中,指定数据库中的每个数据分片与一组指定采集频率中的一个指定采集频率对应,与指定数据库中的每个数据分片对应的时间段和与指定数据库中的每个数据分片对应的指定采集频率匹配;上述装置还包括:
获取单元,用于获取写入数据请求,其中,写入数据请求用于请求向指定数据库中写入采集到的目标业务数据;
第一写入单元,用于在根据目标业务数据的目标采集频率以及当前时间,确定指定数据库中不存在与目标业务数据对应的数据分片的情况下,将目标业务数据写入到指定数据库中为目标业务数据创建的第二数据分片中,其中,与第二数据分片对应的指定采集频率是一组指定采集频率中与目标采集频率最近的指定采集频率。
在一个示例性实施例中,上述装置还包括:
第二写入单元,用于在获取写入数据请求之后,在根据目标业务数据的目标采集频率以及当前写入时间,确定指定数据库中存在与目标业务数据对应的第三数据分片、且第三数据分片中不存在目标业务数据的情况下,将目标业务数据写入到第三数据分片,其中,与第三数据分片对应的指定采集频率是一组指定采集频率中与目标采集频率最近的指定采集频率。
在一个示例性实施例中,第二数据分片为指定数据库中的第二数据表包含的数据分片;上述装置还包括:
添加单元,用于在将目标业务数据写入到指定数据库中为目标业务数据生成的第二数据分片中之后,在关系型数据库中添加与第二数据分片对应的目标数据分片信息,其中,目标数据分片信息用于指示指定数据库、第二数据表、第二数据分片和与第二数据分片对应的时间段之间的对应关系。
在一个示例性实施例中,上述装置还包括:
保留单元,用于在获取写入数据请求之后,按照预设的采集频率与数据保留时长之间的对应关系,确定与目标业务数据的目标采集频率对应的目标数据保留时长,其中,目标数据保留时长为目标业务数据持久化到指定数据库中之后允许保留的时长;
设置单元,用于根据当前时间和目标数据保留时长,为目标业务数据设置数据保留时间,其中,数据保留时间为目标业务数据在指定数据库中允许保留到的时间。
在一个示例性实施例中,获取采集到的业务数据以及将业务数据写入到指定数据库中的数据分片是由指定采集组件指定的,上述装置还包括:
加载单元,用于在获取写入数据请求之前,按照指定采集组件的部署脚本所指示的输出方式动态加载输出插件,得到目标输出插件,其中,目标输出插件为封装好的二进制可执行文件,二进制可执行文件中写入有用于判断业务数据在指定数据库中是否存在的数据判断代码、以及用于在指定数据库中生成数据分片的分片生成代码。
在一个示例性实施例中,指定数据库为时序型数据库,时序型数据库以库为单位进行业务数据存储,时序型数据库中的每个库中允许存储的业务数据所属的时间段大于指定数据库中的每个数据分片中允许存储的同种业务数据所属的时间段;和/或,业务查询指令为结构化查询语言SQL查询语句;和/或,将业务查询指令拆分为多个子查询指令是由用于进行查询指令拆分的指令拆分组件执行的;和/或,使用每个子查询指令并行查询对应的第一数据分片是由SQL执行引擎执行的。
根据本申请实施例的又一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序/指令,该计算机程序/指令包含用于执行流程图所示的方法的程序代码。在这样的实施例中,参考图8,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理器801执行时,执行本申请实施例提供的各种功能。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
参考图8,图8是根据本申请实施例的一种可选的电子设备的计算机***的结构框图。
图8示意性地示出了用于实现本申请实施例的电子设备的计算机***结构框图。如图8所示,计算机***800包括中央处理器801(Central Processing Unit,简称为CPU),其可以根据存储在只读存储器802(Read-Only Memory,ROM)中的程序或者从存储部分808加载到随机访问存储器803(Random Access Memory,简称为RAM)中的程序而执行各种适当的动作和处理。在随机访问存储器803中,还存储有***操作所需的各种程序和数据。中央处理器801、在只读存储器802以及随机访问存储器803通过总线804彼此相连。输入/输出接口805(Input /Output接口,简称为I/O接口)也连接至总线804。
以下部件连接至输入/输出接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(Cathode Ray Tube,简称为CRT)、液晶显示器(Liquid Crystal Display,简称为LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至输入/输出接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理器801执行时,执行本申请的***中限定的各种功能。
需要说明的是,图8示出的电子设备的计算机***800仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
根据本申请实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请的优选实施例而已,并不用于限制本申请实施例,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请实施例的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。

Claims (20)

1.一种数据库的数据处理方法,其特征在于,
包括:
响应于获取到的业务查询指令,确定指定数据库中所述业务查询指令所查询的业务数据存储在的多个第一数据分片,其中,所述指定数据库中的业务数据按照所属的时间段被分别存储到对应的数据分片内,所述指定数据库中的每个数据分片用于存储一个时间段内的业务数据,所述多个第一数据分片所覆盖的时间范围包含所述业务查询指令所查询的业务数据所属的指定时间段;
根据所述多个第一数据分片中的每个第一数据分片对应的时间段将所述业务查询指令拆分为多个子查询指令,其中,所述多个子查询指令中的子查询指令与所述多个第一数据分片中的第一数据分片一一对应;
使用所述多个子查询指令中的每个子查询指令并行查询对应的第一数据分片,得到多个子查询结果,其中,所述多个子查询结果中的每个子查询结果包含从对应的第一数据分片中查询到的业务数据;
将所述多个子查询结果合并为目标查询结果,并将所述目标查询结果发送给目标设备,其中,所述目标设备为发送所述业务查询指令的设备;
其中,所述使用所述多个子查询指令中的每个子查询指令并行查询对应的第一数据分片,得到多个子查询结果,包括:使用所述每个子查询指令并行调用指令执行引擎,得到所述指令执行引擎返回的、与所述每个子查询指令对应的子查询结果,其中,所述指令执行引擎用于使用获取到的查询指令从所述指定数据库中进行业务数据检索,所述多个子查询结果包括与所述每个子查询指令对应的子查询结果;
其中,在所述使用所述每个子查询指令并行调用指令执行引擎之后,所述方法还包括:响应于获取到的所述每个子查询指令,通过所述指令执行引擎将所述每个子查询指令分别作为当前子查询指令执行以下的数据检索操作,其中,与所述当前子查询指令对应的第一数据分片为当前数据分片,所述当前数据分片为所述指定数据库中的第一数据表包含的数据分片,所述当前子查询指令待查询的业务数据所属的时间段为当前时间段:从所述当前子查询指令中提取出所述指定数据库的指定数据库标识、所述第一数据表的第一数据表标识、所述当前数据分片的当前数据分片标识以及所述当前时间段的当前时间段标识;根据所述指定数据库标识、所述第一数据表标识、所述当前数据分片标识以及所述当前时间段标识定位出所述当前子查询指令当前待查询的业务数据所存储在的当前磁盘文件;使用所述指定数据库标识、所述第一数据表标识、所述当前磁盘文件的文件标识以及所述当前时间段标识查询所述指定数据库,得到与所述当前子查询指令对应的当前子查询结果。
2.根据权利要求1所述的方法,其特征在于,所述响应于获取到的业务查询指令,确定指定数据库中所述业务查询指令所查询的业务数据存储在的多个第一数据分片,包括:
所述响应于获取到的所述业务查询指令,确定所述指定数据库中所述业务查询指令待查询的第一数据表以及所述指定时间段;
根据与所述第一数据表包含的每个数据分片对应的时间段以及所述指定时间段,确定与所述业务查询指令所查询的业务数据存储在的所述多个第一数据分片。
3.根据权利要求2所述的方法,其特征在于,所述第一数据表中的数据分片按照时间段的先后顺序依次存储业务数据;
所述根据与所述第一数据表包含的每个数据分片对应的时间段以及所述指定时间段,确定与所述业务查询指令所查询的业务数据存储在的所述多个第一数据分片,包括:
确定所述第一数据表中对应的时间段包含所述指定时间段的开始时间的第一目标数据分片,以及对应的时间段包含所述指定时间段的截止时间的第二目标数据分片;
将所述第一数据表中由所述第一目标数据分片至所述第二目标数据分片的多个数据分片,确定为所述多个第一数据分片。
4.根据权利要求1所述的方法,其特征在于,所述响应于获取到的业务查询指令,确定指定数据库中所述业务查询指令所查询的业务数据存储在的多个第一数据分片,包括:
所述响应于获取到的所述业务查询指令,从所述业务查询指令中解析出一组指令参数信息,其中,所述一组指令参数信息包含所述指定数据库的指定数据库标识、所述指定数据库中的第一数据表的第一数据表标识以及所述指定时间段的指定时间段标识;
使用所述指定数据库标识、所述第一数据表标识以及所述指定时间段标识查询关系型数据库,得到所述多个第一数据分片的数据分片标识,其中,所述关系型数据库用于存储数据库中的数据表所包含的数据分片和数据分片所存储的业务数据所属的时间段之间的对应关系。
5.根据权利要求1所述的方法,其特征在于,所述根据所述多个第一数据分片中的每个第一数据分片对应的时间段将所述业务查询指令拆分为多个子查询指令,包括:
将所述每个第一数据分片对应的时间段与所述指定时间段的交集分别作为待查询的时间段,生成与所述每个第一数据分片对应的子查询指令,得到所述多个子查询指令,其中,与所述每个第一数据分片对应的子查询指令中携带有所述每个第一数据分片的数据分片标识。
6.根据权利要求1所述的方法,其特征在于,在所述响应于获取到的业务查询指令,确定指定数据库中所述业务查询指令所查询的业务数据存储在的多个第一数据分片之前,所述方法还包括:
通过指令***对进行指令拦截,得到拦截到的所述业务查询指令,其中,所述指令***用于拦截读取所述指定数据库中所存储的业务数据指令。
7.根据权利要求6所述的方法,其特征在于,所述指令***用于按照以下至少之一的拦截方式进行指令拦截:按照文件进行拦截,按照方法名称进行拦截,按照指定的文件通配符进行拦截;所述指令***使用环绕通知的方式切入到指定业务,以与所述指定业务进行解耦,所述业务查询指令所查询的业务数据为所述指定业务的业务数据。
8.根据权利要求1所述的方法,其特征在于,所述使用所述指定数据库标识、所述第一数据表标识、所述当前磁盘文件的文件标识以及所述当前时间段标识查询所述指定数据库,得到与所述当前子查询指令对应的子查询结果,包括:
使用所述指定数据库标识、所述第一数据表标识、所述当前磁盘文件的文件标识以及所述当前时间段标识按照超文本传输协议生成目标查询信息;
调用所述指定数据库的超文本传输协议接口,将所述目标查询信息传入所述指定数据库,得到所述指定数据库返回的所述当前子查询结果,其中,所述当前子查询结果为JSON数据。
9.根据权利要求8所述的方法,其特征在于,在所述调用所述指定数据库的超文本传输协议接口,将所述目标查询信息传入所述指定数据库,得到所述指定数据库返回的所述当前子查询结果之后,所述方法还包括:
将所述当前子查询结果转换为对象化的JSON数据,得到转换后的所述当前子查询结果,其中,所述对象化的JSON数据为允许通过页面进行展示的JSON数据。
10.根据权利要求1所述的方法,其特征在于,在所述将所述多个子查询结果合并为目标查询结果之前,所述方法还包括:
对所述每个子查询结果分别执行数据转换操作,得到转换后的所述每个子查询结果,其中,所述数据转换操作为将所述指定数据库中存储的业务数据转换为允许通过页面进行展示的页面数据的转换操作。
11.根据权利要求1所述的方法,其特征在于,所述使用所述多个子查询指令中的每个子查询指令并行查询对应的第一数据分片,得到多个子查询结果,包括:
将所述每个子查询指令分别写入到与所述每个子查询指令对应的指令缓存队列中,其中,与所述每个子查询指令对应的指令缓存队列是为与所述每个子查询指令对应的第一数据分片设置的缓存队列,不同指令缓存队列中的指令并行执行;
在与所述每个子查询指令对应的指令缓存队列当前待执行的指令为所述每个子查询指令的情况下,从与所述每个子查询指令对应的指令缓存队列提取出所述每个子查询指令,并使用所述每个子查询指令查询对应的第一数据分片,得到与所述每个子查询指令对应的子查询结果,其中,所述多个子查询结果包括与所述每个子查询指令对应的子查询结果。
12.根据权利要求1所述的方法,其特征在于,所述指定数据库中的每个数据分片与一组指定采集频率中的一个指定采集频率对应,与所述指定数据库中的每个数据分片对应的时间段和与所述指定数据库中的每个数据分片对应的指定采集频率匹配;
所述方法还包括:
获取写入数据请求,其中,所述写入数据请求用于请求向所述指定数据库中写入采集到的目标业务数据;
在根据所述目标业务数据的目标采集频率以及当前时间,确定所述指定数据库中不存在与所述目标业务数据对应的数据分片的情况下,将所述目标业务数据写入到所述指定数据库中为所述目标业务数据创建的第二数据分片中,其中,与所述第二数据分片对应的指定采集频率是所述一组指定采集频率中与所述目标采集频率最近的指定采集频率。
13.根据权利要求12所述的方法,其特征在于,在所述获取写入数据请求之后,所述方法还包括:
在根据所述目标业务数据的目标采集频率以及当前写入时间,确定所述指定数据库中存在与所述目标业务数据对应的第三数据分片、且所述第三数据分片中不存在所述目标业务数据的情况下,将所述目标业务数据写入到所述第三数据分片,其中,与所述第三数据分片对应的指定采集频率是所述一组指定采集频率中与所述目标采集频率最近的指定采集频率。
14.根据权利要求12所述的方法,其特征在于,所述第二数据分片为所述指定数据库中的第二数据表包含的数据分片;在所述将所述目标业务数据写入到所述指定数据库中为所述目标业务数据生成的第二数据分片中之后,所述方法还包括:
在关系型数据库中添加与所述第二数据分片对应的目标数据分片信息,其中,所述目标数据分片信息用于指示所述指定数据库、所述第二数据表、所述第二数据分片和与所述第二数据分片对应的时间段之间的对应关系。
15.根据权利要求12所述的方法,其特征在于,在所述获取写入数据请求之后,所述方法还包括:
按照预设的采集频率与数据保留时长之间的对应关系,确定与所述目标业务数据的目标采集频率对应的目标数据保留时长,其中,所述目标数据保留时长为所述目标业务数据持久化到所述指定数据库中之后允许保留的时长;
根据当前时间和所述目标数据保留时长,为所述目标业务数据设置数据保留时间,其中,所述数据保留时间为所述目标业务数据在所述指定数据库中允许保留到的时间。
16.根据权利要求12所述的方法,其特征在于,获取采集到的业务数据以及将业务数据写入到所述指定数据库中的数据分片是由指定采集组件指定的;在所述获取写入数据请求之前,所述方法还包括:
按照所述指定采集组件的部署脚本所指示的输出方式动态加载输出插件,得到目标输出插件,其中,所述目标输出插件为封装好的二进制可执行文件,所述二进制可执行文件中写入有用于判断业务数据在所述指定数据库中是否存在的数据判断代码、以及用于在所述指定数据库中生成数据分片的分片生成代码。
17.根据权利要求1至16中任一项所述的方法,其特征在于,所述指定数据库为时序型数据库,所述时序型数据库以库为单位进行业务数据存储,所述时序型数据库中的每个库中允许存储的业务数据所属的时间段大于所述指定数据库中的每个数据分片中允许存储的同种业务数据所属的时间段;和/或,所述业务查询指令为结构化查询语言SQL查询语句;和/或,将所述业务查询指令拆分为所述多个子查询指令是由用于进行查询指令拆分的指令拆分组件执行的;和/或,使用所述每个子查询指令并行查询对应的第一数据分片是由SQL执行引擎执行的。
18.一种数据库的数据处理装置,其特征在于,
包括:
确定单元,用于响应于获取到的业务查询指令,确定指定数据库中所述业务查询指令所查询的业务数据存储在的多个第一数据分片,其中,所述指定数据库中的业务数据按照所属的时间段被分别存储到对应的数据分片内,所述指定数据库中的每个数据分片用于存储一个时间段内的业务数据,所述多个第一数据分片所覆盖的时间范围包含所述业务查询指令所查询的业务数据所属的指定时间段;
拆分单元,用于根据所述多个第一数据分片中的每个第一数据分片对应的时间段将所述业务查询指令拆分为多个子查询指令,其中,所述多个子查询指令中的子查询指令与所述多个第一数据分片中的第一数据分片一一对应;
使用单元,用于使用所述多个子查询指令中的每个子查询指令并行查询对应的第一数据分片,得到多个子查询结果,其中,所述多个子查询结果中的每个子查询结果包含从对应的第一数据分片中查询到的业务数据;
合并单元,用于将所述多个子查询结果合并为目标查询结果,并将所述目标查询结果发送给目标设备,其中,所述目标设备为发送所述业务查询指令的设备;
其中,所述使用单元包括:第一使用模块,用于使用所述每个子查询指令并行调用指令执行引擎,得到所述指令执行引擎返回的、与所述每个子查询指令对应的子查询结果,其中,所述指令执行引擎用于使用获取到的查询指令从所述指定数据库中进行业务数据检索,所述多个子查询结果包括与所述每个子查询指令对应的子查询结果;
其中,所述数据库的数据处理装置还包括:操作单元,用于响应于获取到的所述每个子查询指令,通过所述指令执行引擎将所述每个子查询指令分别作为当前子查询指令执行以下的数据检索操作,其中,与所述当前子查询指令对应的第一数据分片为当前数据分片,所述当前数据分片为所述指定数据库中的第一数据表包含的数据分片,所述当前子查询指令待查询的业务数据所属的时间段为当前时间段:从所述当前子查询指令中提取出所述指定数据库的指定数据库标识、所述第一数据表的第一数据表标识、所述当前数据分片的当前数据分片标识以及所述当前时间段的当前时间段标识;根据所述指定数据库标识、所述第一数据表标识、所述当前数据分片标识以及所述当前时间段标识定位出所述当前子查询指令当前待查询的业务数据所存储在的当前磁盘文件;使用所述指定数据库标识、所述第一数据表标识、所述当前磁盘文件的文件标识以及所述当前时间段标识查询所述指定数据库,得到与所述当前子查询指令对应的当前子查询结果。
19.一种计算机可读存储介质,其特征在于,
所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现权利要求1至17任一项中所述的方法的步骤。
20.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,
所述处理器执行所述计算机程序时实现权利要求1至17任一项中所述的方法的步骤。
CN202311655917.0A 2023-12-05 2023-12-05 数据库的数据处理方法及装置、存储介质及电子设备 Active CN117349323B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311655917.0A CN117349323B (zh) 2023-12-05 2023-12-05 数据库的数据处理方法及装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311655917.0A CN117349323B (zh) 2023-12-05 2023-12-05 数据库的数据处理方法及装置、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN117349323A CN117349323A (zh) 2024-01-05
CN117349323B true CN117349323B (zh) 2024-02-27

Family

ID=89367038

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311655917.0A Active CN117349323B (zh) 2023-12-05 2023-12-05 数据库的数据处理方法及装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN117349323B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117931896B (zh) * 2024-02-29 2024-06-18 双一力(宁波)电池有限公司 一种数据库查询方法、装置及数据库查询***

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105808661A (zh) * 2016-02-29 2016-07-27 浪潮通信信息***有限公司 一种数据查询的方法及装置
CN108182258A (zh) * 2018-01-02 2018-06-19 福建中金在线信息科技有限公司 分布式的数据分析***及方法
CN108737473A (zh) * 2017-04-20 2018-11-02 贵州白山云科技有限公司 一种数据处理方法、装置及***
CN110046178A (zh) * 2018-01-17 2019-07-23 北京京东尚科信息技术有限公司 分布式数据查询的方法和装置
CN110765157A (zh) * 2019-09-06 2020-02-07 中国平安财产保险股份有限公司 数据查询方法、装置、计算机设备及存储介质
CN113779060A (zh) * 2021-01-26 2021-12-10 北京沃东天骏信息技术有限公司 数据查询方法和装置
CN114840546A (zh) * 2021-02-02 2022-08-02 中国石油天然气股份有限公司 油气管道数据查询方法、装置、服务器和存储介质
CN114880368A (zh) * 2022-05-26 2022-08-09 平安普惠企业管理有限公司 数据查询方法、装置、电子设备及可读存储介质
CN115935090A (zh) * 2023-03-10 2023-04-07 北京锐服信科技有限公司 一种基于时间分片的数据查询方法及***
CN116701443A (zh) * 2022-02-24 2023-09-05 腾讯科技(深圳)有限公司 一种数据查询方法、装置、计算机设备及存储介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105808661A (zh) * 2016-02-29 2016-07-27 浪潮通信信息***有限公司 一种数据查询的方法及装置
CN108737473A (zh) * 2017-04-20 2018-11-02 贵州白山云科技有限公司 一种数据处理方法、装置及***
CN108182258A (zh) * 2018-01-02 2018-06-19 福建中金在线信息科技有限公司 分布式的数据分析***及方法
CN110046178A (zh) * 2018-01-17 2019-07-23 北京京东尚科信息技术有限公司 分布式数据查询的方法和装置
CN110765157A (zh) * 2019-09-06 2020-02-07 中国平安财产保险股份有限公司 数据查询方法、装置、计算机设备及存储介质
CN113779060A (zh) * 2021-01-26 2021-12-10 北京沃东天骏信息技术有限公司 数据查询方法和装置
CN114840546A (zh) * 2021-02-02 2022-08-02 中国石油天然气股份有限公司 油气管道数据查询方法、装置、服务器和存储介质
CN116701443A (zh) * 2022-02-24 2023-09-05 腾讯科技(深圳)有限公司 一种数据查询方法、装置、计算机设备及存储介质
CN114880368A (zh) * 2022-05-26 2022-08-09 平安普惠企业管理有限公司 数据查询方法、装置、电子设备及可读存储介质
CN115935090A (zh) * 2023-03-10 2023-04-07 北京锐服信科技有限公司 一种基于时间分片的数据查询方法及***

Also Published As

Publication number Publication date
CN117349323A (zh) 2024-01-05

Similar Documents

Publication Publication Date Title
US11941017B2 (en) Event driven extract, transform, load (ETL) processing
JP6617117B2 (ja) 半構造データのためのスケーラブルな分析プラットフォーム
US10713247B2 (en) Executing queries for structured data and not-structured data
US10528599B1 (en) Tiered data processing for distributed data
US11514032B2 (en) Splitting a query into native query operations and post-processing operations
CN105122243B (zh) 用于半结构化数据的可扩展分析平台
US10963839B2 (en) Nested hierarchical rollups by level using a normalized table
US11379482B2 (en) Methods, systems, and computer readable mediums for performing an aggregated free-form query
CN117349323B (zh) 数据库的数据处理方法及装置、存储介质及电子设备
US9229961B2 (en) Database management delete efficiency
US10855750B2 (en) Centralized management of webservice resources in an enterprise
CN111897867A (zh) 一种数据库日志统计方法、***及相关装置
US11841848B2 (en) Stored procedures for incremental updates to internal tables for materialized views
CN113297057A (zh) 内存分析方法、装置及***
CN113515564A (zh) 基于j2ee的数据访问方法、装置、设备及存储介质
CN114443599A (zh) 数据同步方法、装置、电子设备及存储介质
CN106802922B (zh) 一种基于对象的溯源存储***及方法
KR101648401B1 (ko) 데이터 관리 및 분석을 위한 데이터베이스 장치, 스토리지 유닛 및 그 방법
CN114817300A (zh) 基于sql语句的日志查询方法及其应用
CN113448957A (zh) 一种数据查询方法和装置
US10558637B2 (en) Modularized data distribution plan generation
CN113032430B (zh) 一种数据处理方法、装置、介质和计算设备
CN113553320B (zh) 数据质量监控方法及装置
CN113127549B (zh) 增量数据的同步方法、装置、计算机设备和存储介质
McGlothlin et al. Scalable queries for large datasets using cloud computing: a case study

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant