CN113468209A - 一种电网监控***高速内存数据库访问方法 - Google Patents

一种电网监控***高速内存数据库访问方法 Download PDF

Info

Publication number
CN113468209A
CN113468209A CN202110849695.0A CN202110849695A CN113468209A CN 113468209 A CN113468209 A CN 113468209A CN 202110849695 A CN202110849695 A CN 202110849695A CN 113468209 A CN113468209 A CN 113468209A
Authority
CN
China
Prior art keywords
sql
database
data
query
memory
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.)
Pending
Application number
CN202110849695.0A
Other languages
English (en)
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.)
Guangxi Power Grid Co Ltd
Original Assignee
Guangxi Power Grid 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 Guangxi Power Grid Co Ltd filed Critical Guangxi Power Grid Co Ltd
Priority to CN202110849695.0A priority Critical patent/CN113468209A/zh
Publication of CN113468209A publication Critical patent/CN113468209A/zh
Pending legal-status Critical Current

Links

Images

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/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/245Query processing
    • G06F16/2452Query translation

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

本申请涉及一种电网监控***高速内存数据库访问方法。方法包括:接收终端发起的结构化查询语言SQL查询请求;解析SQL查询请求的SQL语句,并根据解析结果将SQL语句转换为非关系型数据库的命令语句;根据命令语句向非关系型数据库请求数据查询,并获取相应的数据信息;将数据信息返回给终端。其中,非关系型数据库为远程字典服务Redis数据库。基于非关系型数据库的数据之间无关系特性,结构简单且容易扩展,相较于SQL数据库具有非常高的读写性能。高并发应用场景中能保持较佳的性能表现,有效提高数据查询效率,有利于提高用户服务质量,有更好的体验感。

Description

一种电网监控***高速内存数据库访问方法
技术领域
本申请涉及电网管理***技术领域,特别是涉及一种电网监控***高速内存数据库访问方法、设备和计算机可读存储介质。
背景技术
电网管理***是一种人机***,它能提供企业管理所需信息,用以支持企业的生产经营和决策。电网管理***所包含的业务范围,包括经营管理、资产管理、生产管理、行政管理和***维护等。在相关技术中,电网管理***通常基于SQL(Structured QueryLanguage,结构化查询语言)数据库而运行,然而在高并发业务场景中,并发用户访问容易造成数据访问延时。具体在SQL查询中需要耗时至少2-3秒,查询效率低下,导致用户体验下降。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高电网访问数据库效率的一种电网监控***高速内存数据库访问方法。
一种电网监控***高速内存数据库访问方法,该方法包括:
接收终端发起的结构化查询语言SQL查询请求;
解析SQL查询请求的SQL语句,并根据解析结果将SQL语句转换为非关系型数据库的命令语句;
根据命令语句向非关系型数据库请求数据查询,并获取相应的数据信息;
将数据信息返回给终端。
在其中一个实施例中,非关系型数据库为远程字典服务Redis数据库。
在其中一个实施例中,解析SQL查询请求的SQL语句,包括:
根据关键词将SQL语句进行划分,并对SQL语句进行语法分析,从SQL语句中筛选出关键字段;
根据关键字段,获取访问Redis数据库的索引信息。
在其中一个实施例中,根据解析结果将SQL语句转换为非关系型数据库的命令语句,包括:
通过预设格式,将SQL语句的语法及索引信息导入至Redis数据库,生成Redis数据库的命令语句。
在其中一个实施例中,根据命令语句向非关系型数据库请求数据查询,并获取相应的数据信息,包括:
根据命令语句查询与索引信息相关的分布数据,并将分布数据写入至Redis数据库的有序集合;
确定有序集合中分布数据与关键词之间的交集,并作为数据信息。
在其中一个实施例中,Redis数据库设置有预设时长,包括:
若对Redis数据库进行查询的总时长达到预设时长,则停止对Redis数据库读取数据,并更新Redis数据库。
在其中一个实施例中,包括:
监测Redis数据库的内存使用状态;
若内存使用状态达到预设值,则请求对Redis数据库进行扩展内存,并建立已分配内存与扩展内存之间的映射关系。
一种电网监控***高速内存数据库访问装置,该装置包括:
接收模块,用于接收终端发起的结构化查询语言SQL查询请求;
转换模块,用于解析SQL查询请求的SQL语句,并根据解析结果将SQL语句转换为非关系型数据库的命令语句;
查询模块,用于根据命令语句向非关系型数据库请求数据查询,并获取相应的数据信息;
返回模块,用于将数据信息返回给终端。
在其中一个实施例中,Redis数据库设置有预设时长;相应地,该装置还包括:
更新模块,用于当对Redis数据库进行查询的总时长达到预设时长时,则停止对Redis数据库读取数据,并更新Redis数据库。
在其中一个实施例中,该装置还包括:
监测模块,用于监测Redis数据库的内存使用状态;
拓展模块,用于当内存使用状态达到预设值时,则请求对Redis数据库进行扩展内存,并建立已分配内存与扩展内存之间的映射关系。
一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
接收终端发起的结构化查询语言SQL查询请求;
解析SQL查询请求的SQL语句,并根据解析结果将SQL语句转换为非关系型数据库的命令语句;
根据命令语句向非关系型数据库请求数据查询,并获取相应的数据信息;
将数据信息返回给终端。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
接收终端发起的结构化查询语言SQL查询请求;
解析SQL查询请求的SQL语句,并根据解析结果将SQL语句转换为非关系型数据库的命令语句;
根据命令语句向非关系型数据库请求数据查询,并获取相应的数据信息;
将数据信息返回给终端。
上述一种电网监控***高速内存数据库访问方法,接收终端发起的结构化查询语言SQL查询请求。解析SQL查询请求的SQL语句,并根据解析结果将SQL语句转换为非关系型数据库的命令语句。根据命令语句向非关系型数据库请求数据查询,获取相应的数据信息,并将数据信息返回给终端。基于非关系型数据库的数据之间无关系特性,结构简单且容易扩展,相较于SQL数据库具有非常高的读写性能。高并发应用场景中能保持较佳的性能表现,有效提高数据查询效率,有利于提高用户服务质量,有更好的体验感。
附图说明
图1为一个实施例中一种电网监控***高速内存数据库访问方法的***架构平台示意图;
图2为一个实施例中一种电网监控***高速内存数据库访问方法的流程示意图;
图3为一个实施例中SQL语句转换为适用于Redis数据库命令语句的流程示意图;
图4为一个实施例中一种电网监控***高速内存数据库访问装置的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
需要说明的是,虽然在设备示意图中划分了功能模块,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于设备示意图中的模块划分,也可以不同于流程图中执行顺序所描述的步骤。
在以下描述中,涉及到“一些实施例”的表述,其描述了所有可能实施例的子集,但是应当理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
随着电网管理***的高速发展,对电网的运行管理和运行数据的综合应用的要求也越来越高。目前大部分电网数据采用关系型数据库对数据集中存储,关系型数据库采用按行存储的模式,能够进行多条件的查询。然而,由于电网运行历史数据的数据量越来越大,数据存储量大,量级可达到TB或PB级。采用关系型数据库存储电网运行历史数据存在较多问题,当存储的数据量较大时,查询性能明显下降。在进行数据访问时,数据响应速度受到关系型数据库对海量数据的访问制约,读取及写入时间长,难以满足数据访问的性能需求,不能很好的适应状态检测大数据的准实时处理应用需求,存储和访问的扩展性差。
例如,相关技术中,基于SQL数据库进行电网数据的查询,但在高并发业务场景中,并发用户访问容易造成数据访问延时。在SQL查询中耗时至少2-3秒,查询效率低下,导致用户体验下降,服务质量得不到保证。因此,目前电网管理***急需一种新的数据访问方法。
针对上述相关技术中存在的问题,本发明实施例提供了一种电网监控***高速内存数据库访问方法,该方法可以应用于图1中的***架构平台100。该***架构平台100包括存储器120及处理器110,其中,存储器120和处理器110可以通过总线或其他方式连接,图1中是以总线连接为例。其中,存储器120作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。处理器110可以调用储存在存储器120中的数据处理程序,从而执行数据库访问方法。
另外,存储器120包括高速随机存取存储器及非暂态存储器。具体地,非暂态存储器可以是磁盘存储器件、内存器件或其他非暂态固态存储器件中的至少一个。在实际实施过程中,存储器120也可以包括相对于处理器远程设置的远程存储器,这些远程存储器可以通过网络与该***架构平台100建立连接,包括但不限于通过互联网、企业内部网、局域网、移动通信网或其组合,与该***架构平台100建立连接。
另外,本发明实施例描述的***架构平台100及其应用场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定。图1所示出的***架构平台100可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在实际实施过程中,随着***架构平台100的演变和新应用场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。
基于上述***架构平台100,参见图2,现提供了一种电网监控***高速内存数据库访问方法,该数据库访问方法基于SQL数据库来实现。以该方法应用于服务器,且执行主体为服务器为例进行说明,该方法包括如下步骤:
201、接收终端发起的结构化查询语言SQL查询请求;
202、解析SQL查询请求的SQL语句,并根据解析结果将SQL语句转换为非关系型数据库的命令语句;
203、根据命令语句向非关系型数据库请求数据查询,并获取相应的数据信息;
204、将数据信息返回给终端。
在上述步骤201中,SQL查询请求对应的数据库为SQL数据库,SQL数据库为关系型数据库,并储存在服务器中。关系型数据库是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,例如MySQL、Oracle、SQLServer等。在高并发业务场景中,查询过程如下:SQL语句查询条件与SQL数据库中存储的大量数据信息进行逐一比对,获得符合查询条件的数据信息,从而满足相应的查询需求。其中,考虑到SQL数据库的查询过程特性,若查询请求较多且SQL数据库存储的数据量较大,则会导致比对次数过多,进而会导致数据查询效率低下。与此同时,会造成数据访问延时,难以满足数据访问的性能需求。服务器可以是云服务器,终端可以是电脑、移动手机等终端。
可以理解的是,由于SQL语句适用于关系型数据库,关系型数据库的数据模型以关系为模型,体现为数据表,而非关系型数据库不支持关系型数据库的SQL语法,从而在上述步骤202中,需要对SQL语句进行解析。
在上述步骤203中,非关系型数据库可以是Redis(远程字典服务)数据库、Mongodb(基于分布式文件存储的数据库)及Hbase(分布式存储***数据库)等。
SQL是专为数据库而建立的操作命令集,SQL语言是数据库查询和程序设计语言,利用SQL语言可以用于存取数据以及查询、更新和管理关系数据库。为了便于理解,现以电网数据库访问过程为例,对上述步骤201至204所提及的方法过程进行举例说明:用户查询电网数据时,利用终端向服务器发送结构化查询语言SQL查询请求,服务器收到该SQL查询请求后,对该SQL查询请求的SQL语句进行解析,根据解析结果将SQL语句转换为非关系型数据库的命令语句,利用该命令语句向非关系型数据库请求数据查询,并获取相应的数据信息,然后将数据信息返回给终端,从而得到需要查询的数据信息。
本发明实施例提供的方法,由于可将SQL语句转换为适用于非关系型数据库的命令语句,从而实现了将关系型数据库的查询转化为非关系型数据库的查询。
另外,由于非关系型数据库的数据之间无关系特性、结构简单且更容易扩展,从而相对于SQL数据库具有非常高的读写性能,且并发用户访问的情况下能够保持较佳的性能表现。尤其在大数据量下的性能表现优秀,能有效提高数据访问效率,提高用户服务质量,有更好的使用体验感。
结合上述实施例的内容,在一些实施例中,非关系型数据库为远程字典服务Redis数据库。具体地,Redis数据库以Key-Value为数据模型来存储数据,Key-Value分布式存储***具有查询速度快、存储数据量大、支持高并发等优势,非常适合通过主键进行查询。Redis数据库支持多种类型的数据结构,例如字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)。Redis数据库属于非关系型数据库,具有非关系型数据库的特点,对此具体不再赘述。需要说明的是,Key-Value是以键值对来对数据进行存储,其中,键值之间存在一一对应的关系。Key-Value存储数据的结构与关系型数据库中的关系表完全不同,Redis数据库不支持SQL语法,因此,在上述步骤202中,需要将SQL语句转换为适用于Redis数据库的命令语句。
以关系型数据库为MYSQL数据库,且MYSQL数据库的数据和关系都均存储在单独的表中为例,其中,MYSQL数据库的数据定义语言具有一致性,进行复杂条件检索、全文检索时,在几百个并发连接下会导致数据访问延时。而对于Redis数据库,其读写性能极高,读的速度可达到110000次/s,写的速度可达到81000次/s。Redis数据库相较于并发性能较低的MySQL数据库,对于非结构化和不可预知的数据的处理效率更占优势,在上万并发连接下,可以实现完成高速查询,快速访问电网数据。
本发明实施例提供的方法,相较于采用关系型数据库,采用Redis数据库可具有较高的读写性能。另外,在并发用户访问的情况下,采用Redis数据库可具有更高的性能表现和更高的数据查询效率,有利于提高用户服务质量,获得更好的体验感。
结合上述实施例的内容,在一些实施例中,参见图3,本发明实施例不对解析SQL查询请求的SQL语句的方式作具体限定,包括但不限于:
2021、根据关键词将SQL语句进行划分,并对SQL语句进行语法分析,从SQL语句中筛选出关键字段;
2022、根据关键字段,获取访问Redis数据库的索引信息。
在上述步骤2021中,关键词是指含义或使用方法已事先定义好的英语单词,关键词可以包括“对表进行查询”或者“参考这个表”等各种指代意义。例如,SQL语句:selectuser from table1 where field1 like‘%value1%’,其中关键词为select、from、where和like,根据关键词将SQL语句划分为select user、from table1、where field和like%value1%的子句,然后对子句进行进一步的语法分析。
具体地,紧接关键词select之后是查询的输出字段;紧接关键词from之后是查询的表;紧接关键词where之后是过滤条件,紧接关键词like之后是查询的对应值。由于上述实施例是在Redis数据库中进行数据查询,而SQL语句中的关键词select及关键词like所对应的“查询的输出字段”和“查询的对应值”是SQL数据库中的数据,从而在对子句进行语法分析时会舍弃这两个关键词,进而经过筛选会得到where和from这2个关键字段。
在上述步骤2022中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是为了加速对表中数据行的检索而创建的一种分散的存储结构。索引是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
可以理解的是,根据关键字段where和from,可以从中抽取出表名、字段以及字段的值等相关信息,然后再根据抽取出来的表名访问数据库的***表得到表的唯一索引及主键等信息。需要说明的是,唯一索引是数据库设计器所创建的其中一种索引类型,不允许具有索引值相同的行,从而禁止重复的索引或键值。主键是表中的一个或多个字段,它的值用于唯一的标识表中的某一条记录。主键是一种唯一关键字,表定义的一部分。通过上述过程,即根据关键字段获取到访问Redis数据库的索引信息,从而达到将SQL语句转换为适用于Redis数据库的命令语句的目的。
结合上述实施例的内容,需要说明的是,Redis数据库为非关系型数据库,其适用于关系相对简单的数据场景,而SQL数据库为关系型数据库,其适用于关系特别复杂的数据场景。对于数据关系较为复杂的SQL查询请求,可能会出现过于复杂的SQL语句,这样会造成SQL语句解析不出来。此时会选择直接访问SQL数据库,而不再需要对SQL语句进行转换,对于正常访问SQL数据库此处不再赘述。
本发明实施例提供的方法,由于可以通过对SQL语句进行划分和语法分析,进而获得访问Redis数据库的索引信息,从而实现命令语句的转换。索引信息可以定位到Redis数据库的具体数据,采用Redis数据库可以达到更高的查询效率,以获得更好的查询性能。
结合上述实施例的内容,在一些实施例中,本发明实施例不对根据解析结果将SQL语句转换为非关系型数据库的命令语句的方式作具体限定,包括但不限于:通过预设格式,将SQL语句的语法及索引信息导入至Redis数据库,生成Redis数据库的命令语句。
在上述步骤中,将索引信息和SQL语法需要通过预设格式导入Redis数据库,生成Redis数据库的命令语句。可以理解的是,由于SQL数据库与Redis数据库所支持存储的数据类型不同,从而需要通过预设格式,将SQL语句转化为Redis数据库特定格式的命令语句。需要说明的是,索引信息可理解为查询需求,通过索引信息可定位到Redis数据库中有序集合的数据结构。其中,有序集合是字符串的集合,是Redis数据库所支持的数据结构,其不允许重复的成员出现在同一个集合中。有序集合中的每一个成员都会有一个分数与之关联,Redis数据库通过这些分数对集合中的成员进行从小到大的排序。
以上述步骤S211所示实施例为示例进行说明,其中,SQL语句为:select userfrom table1 where field1 like‘%value1%’。结合select、from和where可获取该SQL的语法,通过对该SQL语句进行语法分析得出索引信息为user、table1和%value1%。其中,key为“user、table1”,value为“%value1%”。需要说明的是,本实施例中Redis数据库是以Key-Value为数据模型来存储数据,Key-Value是以键值对来对数据进行存储。其中,key和value指代的是关键字和数据值,其二者之间存在一一对应关系。通过预设格式,将索引信息从postgresql中导入Redis数据库,从而生成Redis数据库的命令语句。其中,postgresql是对象-关系型数据库管理***,其支持大部分SQL标准。
需要说明的是,Redis数据库支持主从同步,数据可以从主服务器向任意数量的从服务器上同步,从服务器也可以是关联其他从服务器的主服务器。这使得Redis的数据可执行单层树复制,同步对读取操作的可扩展性和数据冗余具有较大的帮助。此外,Redis数据库支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用,具体不再赘述。
本发明实施例所提供的方法,由于可以通过预设格式实现命令语句的转换,结合上述实施例中的SQL语句,该命令语句包括user、table和%value1%,这样适用于Redis数据库的命令语句能够满足初始的查询需求,提高用户访问电网数据的效率。
结合上述实施例的内容,在一些实施例中,本发明实施例不对根据命令语句向非关系型数据库请求数据查询,并获取相应的数据信息的方式作具体限定,包括但不限于:根据命令语句查询与索引信息相关的分布数据,并将分布数据写入至Redis数据库的有序集合;确定有序集合中分布数据与关键词之间的交集,并作为数据信息。
在上述步骤中,根据命令语句向Redis数据库发送查询请求,Redis数据库在接收到的查询请求后,计算出在查询的范围内与索引信息相关的所有的分布数据。需要说明的是,具体地,索引信息可快速定位到Redis数据库中有序集合的数据结构。然后,将分布数据写入至Redis数据库的有序集合。
在写入有序集合后,可将有序集合中分布数据与关键词取交集,得出需要查询的数据信息。需要说明的是,关键词包括数据访问的关键识别信息,以上述实施例为示例进行说明,SQL语句为:select user from table1 where field1like‘%value1%’,其中的关键词为select、from、where及like。在实际实施过程中,例如,用户需要访问历史记录中某一时间段的电网故障数据,关键词包括有日期和具体的时间点,将这些关键词与有序集合中的分布数据取交集,将取交集得到的结果进行汇总即可得到数据信息,该数据信息即包含了某一时间段内的所有电网故障数据,从而完成电网数据的访问。
本发明实施例所提供的方法,由于结合了SQL语句的关键词与有序集合中的分布数据取交集的过程,从而获取了相应的数据信息。另外,每次查询都要向Redis数据库中写入新的数据集合,由于Redis数据库具有高读写性能,这样在既有写又有读、高并发的情况下也可以满足用户的数据访问需求,从而很大程度上提高了数据查询的效率。
结合上述实施例的内容,在一些实施例中,有序集合是在接收到Redis数据库发送查询请求时所建立的,有序集合是在查询结束后所解散的。
可以理解的是,在执行每次查询操作时,Redis数据库会根据原有数据和查询需求临时创建有序集合,查询结束之后会将该有序集合销毁。需要说明的是,每次查询会在Redis数据库中增加新的key,其中,key为每次查询指令所占用的内存空间,在本次查询结束之后都要进行销毁或者设置存活时间。
本发明实施例所提供的方法,由于可以根据查询请求的开始与结束实现对有序集合的建立与解散,从而能够在每次查询操作结束后,快速释放内存,减少有序集合的数据结构对内存的占用。提高内存利用率,可以有效节约资源,有效提高内存利用率,提高数据库的运行效率。
结合上述实施例的内容,在一些实施例中,Redis数据库设置有预设时长;本发明实施例提供的方法还包括:若对Redis数据库进行查询的总时长达到预设时长,则停止对Redis数据库读取数据,并更新Redis数据库。
可以理解的是,在Redis数据库上设置有预设时长,若Redis数据库的数据到达预设时长,就停止向Redis数据库读取数据,此时就会触发程序读取SQL数据库,然后将读取的数据库数据写入Redis数据库。此时会对Redis数据库重设预设时间,这样程序在读取的过程中就能按一定的时间间隔刷新数据,保证Redis与SQL数据库的一致性。
例如,若设置的Redis数据库预设时长为5分钟,在向Redis数据库发送读取请求时,5分钟内没有收到Redis数据库的读取反馈,Redis数据库就无法读取到超时数据了,此时只能重新从Redis数据库中读取。
本发明实施例所提供的方法,由于通过对Redis数据库设置预设时长,若达到预设时长就重新从Redis数据库中读取,从而保证了一定的实时性,避免了多次访问Redis数据库造成的***性能低下的问题。
结合上述实施例的内容,在一些实施例中,本发明实施例提供的方法还包括:监测Redis数据库的内存使用状态;若内存使用状态达到预设值,则请求对Redis数据库进行扩展内存,并建立已分配内存与扩展内存之间的映射关系。
需要说明的是,Redis数据库可理解为缓存队列,并占用一定的内存空间。在读取数据量较大的情况下,可能会导致分配的内存空间不够用,进而降低数据访问的性能。基于此,实施例中,将服务器的内存设置预设值,并对Redis数据库的内存使用状态进行实时监测。若Redis数据库的内存使用状态达到预设值时,向服务器请求对Redis数据库扩展内存,并建立表示服务器的内存与扩展内存之间的映射关系。在Redis数据库接收到释放扩展内存的请求时,删除服务器内存与扩展内存之间的映射关系。
本发明实施例所提供的方法,由于确立并存储表示服务器的内存和扩展内存之间的映射关系,从而在完成查询后,能够快速释放扩展内存的空间,避免过度占用服务器资源,一定程度上缓解服务器的压力。
应该理解的是,虽然图2及图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2及图3中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
需要说明的是,上述阐述的技术方案在实际实施过程中可以作为独立实施例来实施,也可以彼此之间进行组合并作为组合实施例实施。另外,在对上述本发明实施例内容进行阐述时,仅基于方便阐述的思路,按照相应顺序对不同实施例进行阐述,而并非是对不同实施例之间的执行顺序进行限定,也不是对实施例内部步骤的执行顺序进行限定。相应地,在实际实施过程中,若需要实施本发明提供的多个实施例,则不一定需要按照本发明阐述实施例时所提供的执行顺序,而是可以根据需求安排不同实施例之间的执行顺序。
结合上述实施例的内容,在一个实施例中,如图4所示,提供了一种电网监控***高速内存数据库访问装置,包括:接收模块401、转换模块402、查询模块403及返回模块404,其中:
接收模块401,用于接收终端发起的结构化查询语言SQL查询请求;
解析模块402,用于解析SQL查询请求的SQL语句;
转换模块403,用于根据解析结果将SQL语句转换为非关系型数据库的命令语句;
查询模块404,用于根据命令语句向非关系型数据库请求数据查询,并获取相应的数据信息;
返回模块405,用于将数据信息返回给终端。
在一个实施例中,接收模块401,用于接收终端发起的结构化查询语言SQL查询请求。
在一个实施例中,非关系型数据库为远程字典服务Redis数据库。
在一个实施例中,解析模块402,用于根据关键词将SQL语句进行划分,并对SQL语句进行语法分析,从SQL语句中筛选出关键字段;根据关键字段,获取访问Redis数据库的索引信息。
在一个实施例中,转换模块403,用于通过预设格式,将SQL语句的语法及索引信息导入至Redis数据库,生成Redis数据库的命令语句。
在一个实施例中,查询模块404,用于根据命令语句查询与索引信息相关的分布数据,并将分布数据写入至Redis数据库的有序集合;确定有序集合中分布数据与关键词之间的交集,并作为数据信息。
在一个实施例中,查询模块404中写入得到的有序集合是在接收到Redis数据库发送查询请求时所建立的,有序集合是在查询结束后所解散的。
在一个实施例中,返回模块405,用于将数据信息返回给终端。
在一个实施例中,Redis数据库设置有预设时长;相应地,该装置还包括:
更新模块,用于当对Redis数据库进行查询的总时长达到预设时长时,则停止对Redis数据库读取数据,并更新Redis数据库。
在一个实施例中,该装置还包括:
监测模块,用于监测Redis数据库的内存使用状态;
拓展模块,用于当内存使用状态达到预设值时,则请求对Redis数据库进行扩展内存,并建立已分配内存与扩展内存之间的映射关系。
本发明实施例提供的装置,通过接收终端发起的结构化查询语言SQL查询请求,解析SQL查询请求的SQL语句,并根据解析结果将SQL语句转换为非关系型数据库的命令语句。根据命令语句向非关系型数据库请求数据查询,获取相应的数据信息,并将数据信息返回给终端。基于非关系型数据库的数据之间无关系特性,结构简单且容易扩展,相较于SQL数据库具有非常高的读写性能。高并发应用场景中能保持较佳的性能表现,有效提高数据查询效率,有利于提高用户服务质量,有更好的体验感。
关于一种电网监控***高速内存数据库访问装置的具体限定可以参见上文中对于一种电网监控***高速内存数据库访问方法的限定,在此不再赘述。上述一种电网监控***高速内存数据库访问装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过***总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储预设阈值。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种电网监控***高速内存数据库访问方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
接收终端发起的结构化查询语言SQL查询请求;
解析SQL查询请求的SQL语句,并根据解析结果将SQL语句转换为非关系型数据库的命令语句;
根据命令语句向非关系型数据库请求数据查询,并获取相应的数据信息;
将数据信息返回给终端。
在一个实施例中,处理器在执行计算机程序时,非关系型数据库为远程字典服务Redis数据库。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
根据关键词将SQL语句进行划分,并对SQL语句进行语法分析,从SQL语句中筛选出关键字段;
根据关键字段,获取访问Redis数据库的索引信息。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:通过预设格式,将SQL语句的语法及索引信息导入至Redis数据库,生成Redis数据库的命令语句。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
根据命令语句查询与索引信息相关的分布数据,并将分布数据写入至Redis数据库的有序集合;
确定有序集合中分布数据与关键词之间的交集,并作为数据信息。
在一个实施例中,处理器在执行计算机程序时,有序集合是在接收到Redis数据库发送查询请求时所建立的,有序集合是在查询结束后所解散的。
在一个实施例中,Redis数据库设置有预设时长;相应地,处理器执行计算机程序时还实现以下步骤:若对Redis数据库进行查询的总时长达到预设时长,则停止对Redis数据库读取数据,并更新Redis数据库。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
监测Redis数据库的内存使用状态;
若内存使用状态达到预设值,则请求对Redis数据库进行扩展内存,并建立已分配内存与扩展内存之间的映射关系。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
接收终端发起的结构化查询语言SQL查询请求;
解析SQL查询请求的SQL语句,并根据解析结果将SQL语句转换为非关系型数据库的命令语句;
根据命令语句向非关系型数据库请求数据查询,并获取相应的数据信息;
将数据信息返回给终端。
在一个实施例中,计算机程序被处理器执行时,非关系型数据库为远程字典服务Redis数据库。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据关键词将SQL语句进行划分,并对SQL语句进行语法分析,从SQL语句中筛选出关键字段;
根据关键字段,获取访问Redis数据库的索引信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
通过预设格式,将SQL语句的语法及索引信息导入至Redis数据库,生成Redis数据库的命令语句。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据命令语句查询与索引信息相关的分布数据,并将分布数据写入至Redis数据库的有序集合;
确定有序集合中分布数据与关键词之间的交集,并作为数据信息。
在一个实施例中,计算机程序被处理器执行时,有序集合是在接收到Redis数据库发送查询请求时所建立的,有序集合是在查询结束后所解散的。
在一个实施例中,Redis数据库设置有预设时长;相应地,计算机程序被处理器执行时还实现以下步骤:若对Redis数据库进行查询的总时长达到预设时长,则停止对Redis数据库读取数据,并更新Redis数据库。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
监测Redis数据库的内存使用状态;
若内存使用状态达到预设值,则请求对Redis数据库进行扩展内存,并建立已分配内存与扩展内存之间的映射关系。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种电网监控***高速内存数据库访问方法,其特征在于,所述方法包括:
接收终端发起的结构化查询语言SQL查询请求;
解析所述SQL查询请求的SQL语句,并根据解析结果将所述SQL语句转换为非关系型数据库的命令语句;
根据所述命令语句向所述非关系型数据库请求数据查询,并获取相应的数据信息;
将所述数据信息返回给所述终端。
2.根据权利要求1所述的方法,其特征在于,所述非关系型数据库为远程字典服务Redis数据库。
3.根据权利要求2所述的方法,其特征在于,所述解析所述SQL查询请求的SQL语句,包括:
根据关键词将所述SQL语句进行划分,并对所述SQL语句进行语法分析,从所述SQL语句中筛选出关键字段;
根据所述关键字段,获取访问所述Redis数据库的索引信息。
4.根据权利要求3所述的方法,其特征在于,所述根据解析结果将所述SQL语句转换为非关系型数据库的命令语句,包括:
通过预设格式,将所述SQL语句的语法及所述索引信息导入至所述Redis数据库,生成所述Redis数据库的命令语句。
5.根据权利要求3所述的方法,其特征在于,所述根据所述命令语句向所述非关系型数据库请求数据查询,并获取相应的数据信息,包括:
根据所述命令语句查询与所述索引信息相关的分布数据,并将所述分布数据写入至所述Redis数据库的有序集合;
确定所述有序集合中所述分布数据与所述关键词之间的交集,并作为所述数据信息。
6.根据权利要求1所述的方法,其特征在于,所述Redis数据库设置有预设时长;相应地,所述方法还包括:
若对所述Redis数据库进行查询的总时长达到所述预设时长,则停止对所述Redis数据库读取数据,并更新所述Redis数据库。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
监测所述Redis数据库的内存使用状态;
若所述内存使用状态达到预设值,则请求对所述Redis数据库进行扩展内存,并建立已分配内存与所述扩展内存之间的映射关系。
8.一种电网监控***高速内存数据库访问装置,其特征在于,所述装置包括:
接收模块,用于接收终端发起的结构化查询语言SQL查询请求;
转换模块,用于解析所述SQL查询请求的SQL语句,并根据解析结果将所述SQL语句转换为非关系型数据库的命令语句;
查询模块,用于根据所述命令语句向所述非关系型数据库请求数据查询,并获取相应的数据信息;
返回模块,用于将所述数据信息返回给所述终端。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
CN202110849695.0A 2021-07-27 2021-07-27 一种电网监控***高速内存数据库访问方法 Pending CN113468209A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110849695.0A CN113468209A (zh) 2021-07-27 2021-07-27 一种电网监控***高速内存数据库访问方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110849695.0A CN113468209A (zh) 2021-07-27 2021-07-27 一种电网监控***高速内存数据库访问方法

Publications (1)

Publication Number Publication Date
CN113468209A true CN113468209A (zh) 2021-10-01

Family

ID=77882567

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110849695.0A Pending CN113468209A (zh) 2021-07-27 2021-07-27 一种电网监控***高速内存数据库访问方法

Country Status (1)

Country Link
CN (1) CN113468209A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114138821A (zh) * 2022-01-12 2022-03-04 广州思迈特软件有限公司 一种数据库查询方法、***和电子设备
CN114238469A (zh) * 2021-12-07 2022-03-25 杭州天均数聚科技有限公司 数据提取接口开放方法、装置、计算机设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101499093A (zh) * 2009-03-05 2009-08-05 国电南瑞科技股份有限公司 一种监控***内存数据库通用交互方法
CN102750354A (zh) * 2012-06-11 2012-10-24 清华大学 一种非结构化数据查询操作语言的解析与处理方法
US20140149400A1 (en) * 2012-11-26 2014-05-29 Accenture Global Services Limited Data consistency management
CN106503087A (zh) * 2016-10-12 2017-03-15 郑州云海信息技术有限公司 一种用于分布式数据访问的数据库中间件
CN106897467A (zh) * 2017-04-24 2017-06-27 成都四方伟业软件股份有限公司 一种大数据分析引擎的数据库适配方法
CN107766503A (zh) * 2017-10-20 2018-03-06 福建中金在线信息科技有限公司 基于redis的数据快速查询方法及装置
CN110688397A (zh) * 2019-07-30 2020-01-14 民生科技有限责任公司 一种基于sql的分布式数据统一访问***及方法
CN111667143A (zh) * 2020-04-30 2020-09-15 广西电网有限责任公司 电网调度实时监测数据与业务管理数据融合的实现方法
CN112084303A (zh) * 2020-08-31 2020-12-15 国电南瑞科技股份有限公司 基于HBase的电网运行数据存储访问方法及其***

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101499093A (zh) * 2009-03-05 2009-08-05 国电南瑞科技股份有限公司 一种监控***内存数据库通用交互方法
CN102750354A (zh) * 2012-06-11 2012-10-24 清华大学 一种非结构化数据查询操作语言的解析与处理方法
US20140149400A1 (en) * 2012-11-26 2014-05-29 Accenture Global Services Limited Data consistency management
CN106503087A (zh) * 2016-10-12 2017-03-15 郑州云海信息技术有限公司 一种用于分布式数据访问的数据库中间件
CN106897467A (zh) * 2017-04-24 2017-06-27 成都四方伟业软件股份有限公司 一种大数据分析引擎的数据库适配方法
CN107766503A (zh) * 2017-10-20 2018-03-06 福建中金在线信息科技有限公司 基于redis的数据快速查询方法及装置
CN110688397A (zh) * 2019-07-30 2020-01-14 民生科技有限责任公司 一种基于sql的分布式数据统一访问***及方法
CN111667143A (zh) * 2020-04-30 2020-09-15 广西电网有限责任公司 电网调度实时监测数据与业务管理数据融合的实现方法
CN112084303A (zh) * 2020-08-31 2020-12-15 国电南瑞科技股份有限公司 基于HBase的电网运行数据存储访问方法及其***

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
张俊等: "关系型数据库内存化存储模型研究(网络首发)", 《计算机工程与应用》 *
罗颖等: "电网监控***中分布式内存数据库***的研究", 《煤炭技术》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114238469A (zh) * 2021-12-07 2022-03-25 杭州天均数聚科技有限公司 数据提取接口开放方法、装置、计算机设备及存储介质
CN114138821A (zh) * 2022-01-12 2022-03-04 广州思迈特软件有限公司 一种数据库查询方法、***和电子设备

Similar Documents

Publication Publication Date Title
US8712972B2 (en) Query optimization with awareness of limited resource usage
US20160357740A1 (en) Metadata Updating Method and Apparatus Based on Columnar Storage in Distributed File System, and Host
CN109614432B (zh) 一种基于语法分析的获取数据血缘关系的***及方法
US8224807B2 (en) Enhanced utilization of query optimization
US11941034B2 (en) Conversational database analysis
Li et al. An integration approach of hybrid databases based on SQL in cloud computing environment
CN104239377A (zh) 跨平台的数据检索方法及装置
CN110688397B (zh) 一种基于sql的分布式数据统一访问***及方法
CN113468209A (zh) 一种电网监控***高速内存数据库访问方法
US11507555B2 (en) Multi-layered key-value storage
US11809468B2 (en) Phrase indexing
El Alami et al. Supply of a key value database redis in-memory by data from a relational database
Calçada et al. Evaluation of Couchbase, CouchDB and MongoDB using OSSpal.
US20210109974A1 (en) Query Execution On Compressed In-Memory Data
US10817507B2 (en) Document store export/import
US10762139B1 (en) Method and system for managing a document search index
CN113868138A (zh) 测试数据的获取方法、***、设备及存储介质
Gupta et al. Correlation and comparison of nosql specimen with relational data store
McGlothlin et al. Scalable queries for large datasets using cloud computing: a case study
US11657032B2 (en) Compacted table data files validation
CN111159218B (zh) 数据处理方法、装置及可读存储介质
US20240095246A1 (en) Data query method and apparatus based on doris, storage medium and device
WO2024108638A1 (zh) 一种基于分片索引的自适应查询方法和装置
WO2017007511A1 (en) Data management using index change events
CN116126620A (zh) 数据库日志处理方法、数据库变更查询方法及相关装置

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20211001