CN113535777B - 数据库查询方法、装置和系统 - Google Patents

数据库查询方法、装置和系统 Download PDF

Info

Publication number
CN113535777B
CN113535777B CN202110704026.4A CN202110704026A CN113535777B CN 113535777 B CN113535777 B CN 113535777B CN 202110704026 A CN202110704026 A CN 202110704026A CN 113535777 B CN113535777 B CN 113535777B
Authority
CN
China
Prior art keywords
data
index
database
cache
query
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
CN202110704026.4A
Other languages
English (en)
Other versions
CN113535777A (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.)
Shanghai Pudong Development Bank Co Ltd
Original Assignee
Shanghai Pudong Development Bank 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 Shanghai Pudong Development Bank Co Ltd filed Critical Shanghai Pudong Development Bank Co Ltd
Priority to CN202110704026.4A priority Critical patent/CN113535777B/zh
Publication of CN113535777A publication Critical patent/CN113535777A/zh
Application granted granted Critical
Publication of CN113535777B publication Critical patent/CN113535777B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • 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/22Indexing; Data structures therefor; Storage structures
    • 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/23Updating
    • 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)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及Redis实时缓存系统技术领域,公开了一种数据库查询方法、装置和系统,包括获取目标数据库的修改日志;解析修改日志,对修改日志解析后的数据进行筛选,得到需要在本地缓存数据库进行缓存的数据更新信息;将数据更新信息发送至缓存消息队列;依次从缓存消息队列中读取数据更新信息,根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新;接收目标数据库的查询语句,基于查询语句对本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。自动更新本地缓存数据库中缓存数据指定字段的索引,保证数据库与缓存的一致性。自动解析查询语句,能够直接通过SQL语句来查询Redis,不必在MySQL和Redis之间进行切换,降低延迟。

Description

数据库查询方法、装置和系统
技术领域
本发明涉及Redis实时缓存系统技术领域,特别是涉及一种数据库查询方法、装置和系统。
背景技术
随着互联网的快速普及,数据规模和用户数量快速增加,用户对时延的要求也越来越高。传统的关系型数据库所面临的压力越来越大,需要进一步提高MySQL等关系型数据库的读写能力、降低时延。由于Redis只能存储key-value型数据,因此每次查询都需要给出key值来获取单条数据,导致其无法像关系型数据库那样快速进行索引查询。而通常多数查询都是带有条件的索引查询,如果这些查询只能通过数据库处理,需要在使用MySQL和Redis之间进行切换,那么依然会有较大延迟。
发明内容
基于此,有必要针对MySQL和Redis之间进行切换导致系统具有较大延迟的问题,提供一种数据库查询方法和数据库查询系统。
一种数据库查询方法,包括获取目标数据库的修改日志,所述修改日志包括当所述目标数据库中的数据发生修改时生成的数据信息;解析所述修改日志,对所述修改日志解析后的数据进行筛选,得到需要在本地缓存数据库进行缓存的数据更新信息;将所述数据更新信息发送至缓存消息队列;依次从所述缓存消息队列中读取数据更新信息,根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新;接收目标数据库的查询语句,基于所述查询语句对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。
在其中一个实施例中,所述缓存数据为key-value型数据,其中,所述缓存数据为key-value型数据,其中,key值包括数据库名、表名、主键字段,value值包括所述索引数据的json值或hash值。
在其中一个实施例中,所述接收目标数据库的查询语句,基于所述查询语句对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果包括接收目标数据库的查询语句,对所述查询语句进行解析,获取查询条件;根据所述查询条件生成执行语句;根据所述执行语句,对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。
在其中一个实施例中,所述数据更新信息包括缓存更新信息和索引更新字段,所述根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新包括根据所述数据更新信息获取缓存更新信息和索引更新字段;根据所述缓存更新信息对本地缓存数据库中的缓存数据进行更新;根据所述索引更新字段对本地缓存数据库的索引数据进行更新。
在其中一个实施例中,所述索引数据包括索引记录表,所述索引记录表用于记录各个索引方式所对应的索引表,根据所述索引更新字段对本地缓存数据库的索引数据进行更新包括在所述索引记录表中确定与所述索引更新字段相关联的索引表;根据所述索引更新字段对所述本地缓存数据库中所述相关联的索引表进行更新。
在其中一个实施例中,在根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新后,所述方法还包括获取对本地缓存数据库中的缓存数据和索引数据进行更新的更新结果;若所述更新结果为更新失败,则重新获取所述缓存消息队列中相对应的数据更新信息,并根据重新获取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新。
在其中一个实施例中,所述索引方式包括全表索引、单一条件索引和复合条件索引,其中,所述单一条件索引包括等值条件索引、区间条件索引和模糊条件索引。
一种数据库查询装置,包括更新获取模块,用于获取目标数据库的修改日志,所述修改日志包括当所述目标数据库中的数据发生修改时生成的数据信息;解析模块,与所述更新获取模块相连接,用于解析所述修改日志,对所述修改日志解析后的数据进行筛选,得到需要在本地缓存数据库进行缓存的数据更新信息,将所述数据更新信息发送至缓存消息队列;维护模块,用于依次从所述缓存消息队列中读取数据更新信息,根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新;查询模块,与所述维护模块相连接,用于接收目标数据库的查询语句,基于所述查询语句对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。
一种数据库查询系统,包括本地缓存数据库,用于存储缓存在本地的缓存数据和索引数据;以及所述数据库查询装置。
在其中一个实施例中,所述查询模块包括解析器,用于接收目标数据库的查询语句,并对所述查询语句进行分析获取查询条件;生成器,与所述解析器相连接,用于根据所述查询条件生成执行语句;执行器,与所述生成器相连接,用于运行所述执行语句对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。
一种计算机可读存储介质,当所述计算机可读存储介质中的指令由计算机的处理器执行时,使得所述计算机能够执行如上述任意一项实施例所述的数据库查询方法。
一种计算机程序产品,所述计算机程序产品中包括指令,所述指令被计算机的处理器执行时,使得所述计算机能够执行如上述任意一项实施例所述的数据库查询方法。
上述数据库查询方法,获取当目标数据库中的数据发生修改时,目标数据库根据数据修改情况生成的修改日志,对修改日志进行解析。对修改日志解析后的数据进行筛选以获取需要在本地缓存数据库中进行缓存的数据更新信息。将数据更新信息传输至缓存消息队列,从缓存消息列表中读取数据更新信息,并根据读取到的数据更新信息对本地缓存数据库中对应的缓存数据和索引数据进行更新。接收输入的查询语句,可以直接在本地缓存数据库中进行语句查询。通过本技术方案可以在确保例如Redis实时的本地缓存系统数据最终一致性的情况下,在本地缓存系统的基础上增加数据和索引的维护功能以及直接对本地缓存系统进行查询的功能,获得支持SQL索引查询的能力。直接在Redis缓存中进行SQL语句查询,不仅可以提高查询效率,同时可以不必在MySQL和Redis之间进行切换,在查询过程中不仅能起到对应用透明的效果,还可以提高实时缓存系统的查询效率。
附图说明
为了更清楚地说明本说明书实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明其中一实施例的数据库查询方法的方法流程示意图;
图2为本发明其中一实施例的执行索引查询的方法流程示意图;
图3为本发明其中一实施例的对本地缓存数据库中的缓存数据和索引数据进行更新的方法流程示意图;
图4为本发明其中一实施例的对索引数据进行更新的方法流程示意图;
图5为本发明其中一实施例的对更新结果进行确认的方法流程示意图;
图6为本发明其中一实施例的数据库查询装置的结构框图;
图7为本发明其中一实施例的数据库查询系统的结构框图
图8是本发明其中一实施例的查询模块的结构框图;
图9是本发明其中一实施例的数据库查询装置或系统的框图。
具体实施方式
为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的优选实施方式。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施方式。相反的,提供这些实施方式的目的是为了对本发明的公开内容理解得更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
目前用于提高MySQL(Structured Query Language,一种关系型数据库)等关系型数据库的读写能力、降低时延的较好方法是采用Redis(一种开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库)作为缓存数据库,并通过解析MySQL的binlog日志(一种用于记录数据库数据变更的二进制日志)来为Redis数据库实时同步数据。客户端的查询请求直接访问Redis,这样不仅可以提升查询效率,还可以减轻对MySQL的访问压力。然而,由于Redis只能存储key-value(键-值)型数据,每次查询都需要给出key值来获取单条数据,因此导致其无法像关系型数据库那样快速进行索引查询。而通常多数查询都是带有条件的索引查询,如果这些查询只能通过数据库处理,那么依然会有较大延迟,同时应用还需要在使用MySQL和Redis之间进行切换。
本公开提供的一种数据库查询方法可以使Redis实时缓存系统获得支持SQL索引查询的能力,直接在Redis缓存中进行SQL语句查询,不仅可以提高查询效率,而且还可以达到对应用透明的效果。图1为本发明其中一实施例的数据库查询方法的方法流程示意图,在其中一个实施例中,数据库查询方法包括如下步骤S100至S500。
步骤S100:获取目标数据库的修改日志,修改日志包括当目标数据库中的数据发生修改时生成的数据信息。
在本公开的一些实施例中,所述目标数据库通常包括用于存储数据的存储单元或数据结果,目标数据库可以为MySQL数据库、PostgreSQL(一种面向对象的关系数据库)、InfluxDB(一种开源的时间序列数据库)等数据库。所述修改日志通常可以用于记录数据库的修改信息,如修改的对象、修改后的数据等修改信息。在本实施例中,所述修改日志可以为binlog日志,所述的目标数据库可以为MySQL数据库。MySQL是一种关系型数据库,将数据保存在不同的表中,从而增加速度并提高灵活性。其中,binlog日志是用来记录MySQL内部对数据库的改动情况的信息(只记录对数据的修改操作),主要用于数据库的主从复制以及增量恢复。
可以开启MySQL的binlog日志,当MySQL数据库中的数据发生修改时,会同时将更新数据写入binlog日志中。通过监听MySQLbinlog,可以监听所有表中的数据变化,并根据数据的修改情况在binlog日志生成对应的二进制日志数据。获取目标数据库的修改日志,可以根据修改日志中携带有目标数据库中的数据发生修改时生成的数据信息完成对本地缓存数据库的同步更新。
步骤S200:解析修改日志,对修改日志解析后的数据进行筛选,得到需要在本地缓存数据库进行缓存的数据更新信息。
在获取到由于数据变化而产生的修改日志之后,实时解析该修改日志。对修改日志解析所得的数据进行筛选,筛选出需要进行缓存的数据更新信息,从中可以获得数据行具体更新字段的信息。由于在监听MySQLbinlog时,监听的是所有表的数据变化,修改日志中除了包含有需要缓存的数据之外,还包含有其他不必要缓存的数据,因此,还需要对数据进行过滤,从而可以在解析所得的数据中过滤出需要缓存的数据,获取数据更新信息。
在本实施例中,所述修改日志为二进制的binlog日志,可以用作binlog解析模块的解析工具包括MaxWell、Cannal、MySQL_streamer等。其中,对二进制日志数据进行解析、筛选得到的数据更新信息为JSON格式的数据,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。
例如,当数据更新情况为插入数据,binlog解析后的json数据可以为如下数据:
{“database”:“scl”,“table”:“stu”,“type”:“insert”,“ts”:1552153502,“xid”:832,“commit”:ture,“data”:{“id”:1,“age”:12,“clz”:“初二一班”,“name”:“小明”}};
当数据更新情况为更新数据,binlog解析后的json数据可以为如下数据:
{“database”:“scl”,“table”:“stu”,“type”:“update”,“ts”:1552153502,“xid”:833,“commit”:ture,“data”:{“id”:1,“age”:12,“clz”:“初二一班”,“name”:小红”},“old”:{“name”:“小明”}};
当数据更新情况为删除数据,binlog解析后的json数据可以为如下数据:
{“database”:“scl”,“table”:“stu”,“type”:“delete”,“ts”:1552153502,“xid”:834,“commit”:ture,“data”:{“id”:1,“age”:12,“clz”:“初二一班”,“name”:“小红”}}。
步骤S300:将数据更新信息发送至缓存消息队列。
将解析后获取的数据更新信息发送至消息队列进行缓存,在这里可以将用于缓存数据更新信息的消息队列称为缓存消息队列。缓存消息队列中的数据或消息从缓存消息队列的前端依次按序被读取或输出。将解析后的binlog数据被发送到缓存消息队列MQ(Message Queue)中暂存,不仅可以起到应用解耦和流量削峰的作用,还可以保证数据库与缓存的一致性。当缓存数据更新失败时,缓存消息队列MQ可以重新输出该条json数据,降低数据丢失概率。在本实施例中,可以用作缓存消息队列MQ的工具包括RabbitMQ、ZeroMQ、ActiveMQ、Kafka、Jafka等。
步骤S400:依次从缓存消息队列中读取数据更新信息,根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新。
订阅了缓存消息队列MQ的消费者,实时依次从缓存消息队列MQ中获取缓存消息队列MQ中暂存的数据更新信息。在本实施例中,本地缓存数据库为Redis数据库,Redis数据库不仅保存缓存数据还需要保存索引数据。因此,根据读取到的数据更新信息既需要对本地缓存数据库中的缓存数据进行更新,同时也需要对待修改的索引数据进行更新。消费在缓存消息队列MQ中暂存的json格式的数据更新信息后,通过自动维护Redis数据库中指定字段的索引,来实现当MySQL数据库中的数据发生修改时,Redis数据库中相对应的缓存数据和索引数据也对应地进行更新,可以保证数据库与缓存的一致性,提升查询效率、减轻对MySQL的访问压力。
步骤S500:接收目标数据库的查询语句,基于查询语句对本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。
通常当客户端发起了一次查询操作时,客户端将输入一条针对目标数据库的查询语句。在本实施例中,目标数据库为MySQL数据库,因此查询语句为SQL语句。可以接收对目标数据库的查询语句,基于查询语句对本地缓存数据库中的索引数据和缓存数据进行查询。在执行SQL索引查询时,本公开通过自动解析SQL语句,再根据Redis数据库中已有的索引自动转化为一系列执行语句,可以实现对本地缓存数据库中的索引数据和缓存数据的查询,从而获得查询结果。实现了直接在Redis缓存中进行SQL语句查询,不仅提高了查询效率,还不必在MySQL和Redis之间进行切换,降低了延迟。
可以获取目标数据库的修改日志,对修改日志进行解析并筛选以获取需要在本地缓存数据库中进行缓存的数据更新信息,将数据更新信息传输至缓存消息队列。消费者从缓存消息列表中读取数据更新信息,并根据读取到的数据更新信息对本地缓存数据库中对应的缓存数据和索引数据进行更新。即,在消息队列中的数据更新信息更新后,自动维护本地缓存数据库中指定字段的索引,可以使基于本地缓存数据库获得支持索引查询的能力。在执行索引查询时,接收输入的查询语句,自动解析查询语句,再根据本地缓存数据库中已有索引自动转化为一系列执行语句。根据执行语句进行查询以获得查询结果。
使用本实施例提供的数据库查询方法,可以在确保例如Redis实时的本地缓存系统数据最终一致性的情况下,在本地缓存系统的基础上增加数据和索引的维护功能以及直接对本地缓存系统进行查询的功能,获得支持SQL索引查询的能力。直接在Redis缓存中进行SQL语句查询,不仅可以提高查询效率,同时可以不必在MySQL和Redis之间进行切换,在查询过程中不仅能起到对应用透明的效果,还可以提高实时缓存系统的查询效率。
在其中一个实施例中,缓存数据为key-value型数据,由于Redis只能存储key-value型数据,因此缓存数据也为key-value型数据。其中,key值包括数据库名、表名、主键字段,value值包括索引数据的json值或hash值。对于一条key值的格式为“数据库名:表名:主键值”,value值为json数据的缓存数据,可以表示为scl:stu:1→{id:1,age:12,clz:初二一班,name:小明},其主键为id值。
图2为本发明其中一实施例的执行索引查询的方法流程示意图,在其中一个实施例中,接收目标数据库的查询语句,基于查询语句对本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果包括如下步骤S510至S530。
步骤S510:接收目标数据库的查询语句,对查询语句进行解析,获取查询条件。
在本实施例中,目标数据库为MySQL数据库,因此查询语句为SQL语句。对SQL语句进行语法分析,以得到要查询的查询条件,以便后续根据查询条件生成执行语句。对SQL语句的分析过程可由开源数据库的SQL解析模块实现。
步骤S520:根据查询条件生成执行语句。
根据步骤S510中解析获取的查询条件、查询逻辑和现有索引自动生成一系列最优的执行语句。例如,当SQL语句中存在条件字段的索引时,可以先根据条件之间逻辑关系(与或非)对索引进行集合运算,对集合的运算结果进行汇总后获得主键集合再取出具体数据。然后,对于SQL语句中没有索引的条件字段进行比较筛选,最后经过聚合函数计算与排序获得相应的数据。
步骤S530:根据执行语句,对本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。
运行执行语句,以对本地缓存数据库中的索引数据和缓存数据进行查询,从而获取查询结果。在本实施例中,完成对Redis中索引数据和缓存数据的查询后,还可以将最终的查询结果返回给客户端。
在本实施例中,当客户端发起一次SQL查询时,将输入SQL语句。可以通过对输入的SQL进行分解获取查询条件,再根据查询条件经过优化从而自动生成一系列对应的执行语句。通过运行执行语句,来完成对Redis查询中索引数据和缓存数据的查询,并将查询结果返回给客户端。使用本发明提供的数据库查询方法可以使Redis数据库支持SQL索引查询,客户端能够直接在Redis缓存中进行SQL语句查询,而不必在MySQL和Redis之间进行切换。即使客户端的查询操作是例如带有条件的复杂索引查询操作,也能快速地完成,提升查询效率,减轻对MySQL的访问压力。
在其中一个实施例中,查询条件包括表名、字段名、分组、条件。解析器在对SQL语句进行语法分析后可以根据分析结果生成解析树。其中,解析树包括表名、字段名、分组、条件等查询条件。生成器可以根据解析器获取的查询条件,结合条件索引、排序索引、聚合函数、数据分页等查询方式、查询逻辑和现有索引自动生成最优的执行语句。
在其中一个实施例中,为了方便查询每张表建立了哪些索引,还需要构建索引记录表,索引数据包括索引记录表,索引记录表用于记录各个索引方式所对应的索引表。索引数据还可以包括索引表、构建的索引树、索引树的字段信息,或者与索引相关联的其他数据信息。索引记录表可以采用Redis的list、set、zset、hash等数据类型来进行存储。
在本实施例中,索引记录表的存储格式采用list,索引记录表也为key-value型数据。其中,key值为“数据库名:表名”,value值为索引的key值列表。在对一条缓存数据进行更新时,可以通过索引记录表确定同时还需要对应地更新哪些索引。在对本地缓存数据库进行更新操作时,可以根据缓存更新信息以及索引记录表定位到本地缓存数据库中要更新的缓存数据和其对应的索引数据,从而实现对待缓存数据和索引数据的实时更新。
图3为本发明其中一实施例的对本地缓存数据库中的缓存数据和索引数据进行更新的方法流程示意图,在其中一个实施例中,数据更新信息包括缓存更新信息和索引更新字段。根据待缓存数据的缓存更新信息对相应的缓存数据进行更新,同时找到发生改变的字段,然后根据索引记录表,可以找到需要更新的索引更新字段。根据索引更新字段可以对索引数据进行更新。因此,根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新包括如下步骤S410至S430。
步骤S410:根据数据更新信息获取缓存更新信息和索引更新字段。
订阅了缓存消息队列MQ的消费者,实时依次从缓存消息队列MQ中获取缓存消息队列MQ中暂存的json格式的数据更新信息。根据数据更新信息中的缓存更新信息确定待缓存数据的更新情况,同时根据待缓存数据需要发生改变的字段,对照索引记录表可以查询到与待缓存数据相对应的索引数据。即,可以从数据更新信息中获得数据行具体的缓存数据更新的信息和对应的索引更新字段的信息。
步骤S420:根据缓存更新信息对本地缓存数据库中的缓存数据进行更新。
根据数据行具体的缓存更新信息对本地缓存数据库中相应的缓存数据进行更新。
步骤S430:根据索引更新字段对本地缓存数据库的索引数据进行更新。
图4为本发明其中一实施例的对索引数据进行更新的方法流程示意图,在其中一个实施例中,根据索引更新字段对本地缓存数据库的索引数据进行更新包括如下步骤S431至S432。
步骤S431:在索引记录表中确定与索引更新字段相关联的索引表。
找到本地缓存数据库中缓存数据发生改变的更新字段,对照索引记录表,找到索引记录表中与索引更新字段相关联的索引表。
步骤S432:根据索引更新字段对本地缓存数据库中相关联的索引表进行更新。
根据索引更新字段对本地缓存数据库中相应的索引表进行更新。例如,当目标数据库中的数据发生insert和delete操作时,所有缓存数据的索引数据都将发生改变,因此在本地缓存数据库中需要对全部的与索引更新字段相关联的索引表进行更新;而当目标数据库中的数据发生update操作时,只有部分缓存数据发生了改变,因此只需要找出发生了改变的索引更新字段,对与该字段相关联的索引数据进行更新即可。
在本实施例中,消费在缓存消息队列MQ中暂存的json格式的数据更新信息后,根据数据更新信息中待缓存数据的更新信息和更新字段自动维护Redis数据库中的缓存数据以及对应字段的索引数据,来实现当MySQL数据库中的数据发生修改时,Redis数据库中相对应的缓存数据和索引数据也能对应地及时完成更新,保证数据库与缓存的一致性,提升查询效率。
图5为本发明其中一实施例的对更新结果进行确认的方法流程示意图,在其中一个实施例中,在根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新后,所述方法还包括如下步骤S440至S450。
步骤S440:获取对本地缓存数据库中的缓存数据和索引数据进行更新的更新结果。
在完成步骤S430后,即实时根据读取的数据更新信息对本地缓存数据库Redis中的缓存数据和索引数据进行更新后,还需要对更新操作是否成功进行判断。
步骤S450:若更新结果为更新失败,则重新获取缓存消息队列中相对应的数据更新信息,并根据重新获取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新。
若对本地缓存数据库中的缓存数据和索引数据的更新操作失败了,返回“更新失败”至缓存消息队列MQ。当缓存消息队列MQ接收到的更新结果为“更新失败”时,缓存消息队列MQ保留暂存的数据。订阅了该缓存消息队列MQ的消费者,重新从缓存消息队列MQ中获取该数据更新信息,根据重新获取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新,并重新判断更新结果。重复上述步骤,直至缓存消息队列MQ接收到的更新结果为“更新成功”。
在本实施例中,若成功完成了对本地缓存数据库中的缓存数据和索引数据的更新操作,则返回“更新成功”至缓存消息队列MQ。当缓存消息队列MQ接收到的消费成功更新结果为“更新成功”时,清除缓存消息队列MQ中暂存的数据更新信息。
上述确认机制主要用于确保数据更新信息在更新成功前不丢失。只有在根据数据更新信息完成对本地缓存数据库中的缓存数据和索引数据的更新后,才将缓存消息队列MQ中的数据更新信息清除,否则数据更新信息将会一直存放在缓存消息队列MQ中,从而保证数据库与缓存的一致性。
在其中一个实施例中,索引方式包括全表索引、单一条件索引和复合条件索引,其中,单一条件索引包括等值条件索引、区间条件索引和模糊条件索引。
全表索引对应的索引表中存储了该数据表中的所有主键值,根据全表索引对应的索引表可以实现select*from table的查询。在本实施例中,可以用集合来存储全表索引。全表索引对应的索引表的key值可以为“数据库名:表名:idx”,value值可以为主键值集合。在进行全表查询时,需要查询索引数据中的全表索引,根据主键值得到各条数据的key值,再获取具体的查询数据。
单一条件索引指的是只包含一个条件的索引,而单一条件索引又包括了等值条件索引、区间索引和模糊条件索引等索引方式,单一条件索引是进行复合索引查询的基础。
等值条件索引对应的索引表可以用于实现select*from table where field=?的查询。在本实施例中,可以用集合来存储等值条件索引。等值条件索引对应的索引表的key值可以为“数据库名:表名:eidx:字段名:等值条件值”,例如为班级构建的等值条件索引可以为“scl:stu:idx:clz:初二一班”,其value值为满足该条件的主键值集合。在进行等值条件查询时,需要找到该条件的索引,获得主键集合,再得出数据的key值去查询获取具体的查询数据。
区间条件索引对应的索引表可以用于实现select*from table where field>=?and field<?的查询。在本实施例中,区间条件索引的存储格式可以使用Redis的排序集合zset,区间条件索引对应的索引表的key值可以为“数据库名:表名:iidx:字段名”,value值为zset集合{value:[主键],score:[字段值]}。在进行区间查询时,需要通过zrangebyscore命令获得满足条件的主键集合,再去查询获取具体的查询数据。
模糊条件索引对应的索引表可以用于实现select*from table where fieldlike?的查询。在本实施例中,模糊条件索引的存储格式可以使用Redis的哈希集合hash,模糊条件索引的key值可以为“数据库名:表名:fidx:字段名”,value值为hash集合{key:[字段值],value:[0]}。在进行模糊查询时,可以通过hscan命令获取满足条件的主键集合,再去查询获取具体的查询数据。
复合条件的索引查询可以在单一条件索引查询的基础上实现。根据单一条件的组合逻辑(and/or/not),将各单一条件索引的查询结果进行集合运算。对于and/or可以直接对查询结果进行交并集运算,对于not可以将查询结果与全表索引进行差集运算。同样地,在进行复合查询时,需要获得满足条件的主键集合,再去查询获取具体的查询数据。
另外,在本实施例中,索引方式还包括聚合函数实现索引、分组查询索引和排序索引。
聚合函数实现索引对应的索引表可以用于实现聚合操作的查询语句。聚合操作包括SUM、AVG、MIN、MAX等。在进行聚合函数实现时,需要经过条件查询获取到具体数据,再通过遍历指定字段的值来完成聚合操作,从而获得具体的查询数据。
分组查询索引对应的索引表可以用于实现group by field having condition的查询语句。在进行分组查询时,可以通过等值条件索引获取group by后的数据,再根据having后的条件进行聚合函数计算或筛选,从而查询获得具体的查询数据。
排序索引对应的索引表可以用于实现select*from table order by field1,field2…的查询。在本实施例中,排序索引对应的索引表中的存储格式可以为Redis的zset,排序索引的key值可以为“数据库名:表名:oidx:字段名1_字段名2…”,value值为zset集合{value:[主键],score:[字段1+字段2]}。排序索引主要是针对多字段进行排序,单字段排序可以使用区间条件索引实现。在排序查询时,需要通过zrange命令获得满足条件排序后的主键集合,再依次查询获取具体的查询数据。
不同的索引方式可以用于完成不同的查询操作,每次查询操作中获取的查询数据的集合构成了该次查询操作的查询结果。
应该理解的是,虽然图1-图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-图5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于上述所述的数据库查询方法实施例的描述,本公开还提供数据库查询装置。所述装置可以包括使用了本说明书实施例所述方法的系统(包括分布式系统)、软件(应用)、模块、组件等并结合必要的实施硬件的装置。基于同一创新构思,本公开实施例提供的一个或多个实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本说明书实施例具体的装置的实施可以参见前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
基于前述方法实施例的描述,本公开还提供了一种数据库查询装置,图6为本发明其中一实施例的数据库查询装置的结构框图。数据库查询装置可以包括更新获取模块100、解析模块200、维护模块300和查询模块400。
更新获取模块100被配置为用于获取目标数据库的修改日志。修改日志中包括在目标数据库中的数据发生修改时生成的数据信息。
解析模块200与更新获取模块100相连接,被配置为用于解析修改日志,对修改日志解析后的数据进行筛选,得到需要在本地缓存数据库进行缓存的数据更新信息。数据更新信息包括更新字段的信息,并将数据更新信息发送至缓存消息队列。
维护模块300被配置为用于依次从缓存消息队列中读取数据更新信息,根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新。
查询模块400与维护模块300相连接,被配置为用于接收目标数据库的查询语句,基于查询语句对本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。
本公开还提供了一种数据库查询系统,图7是本发明其中一实施例的数据库查询系统的结构框图,数据库查询系统包括本地缓存数据库20和上述实施例中所述的数据库查询装置10。
图8是本发明其中一实施例的查询模块的结构框图,在其中一实施例中,查询模块400包括:解析器410、生成器420、执行器430。
解析器410被配置为用于接收目标数据库的查询语句,并对查询语句进行分析获取查询条件。
生成器420与解析器410相连接,生成器420被配置为用于根据查询条件生成执行语句。
执行器430与生成器420相连接,执行器430被配置为用于运行执行语句对本地缓存数据库20中的索引数据和缓存数据进行查询,获得查询结果。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
可以理解的是,本说明书中上述方法、装置等的各个实施例均采用递进的方式描述,各个实施例之间相同/相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。相关之处参见其他方法实施例的描述说明即可。
图9是根据一示例性实施例示出的一种用于能够直接在Redis缓存中进行SQL语句查询的数据库查询装置或系统S00的框图。例如,数据库查询系统S00可以为redis数据库缓存系统。参照图9,电子设备数据库查询装置或系统S00包括处理组件S20,其进一步包括一个或多个处理器,以及由存储器S22所代表的存储器资源,用于存储可由处理组件S20的执行的指令,例如应用程序。存储器S22中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件S20被配置为执行指令,以执行上述方法。
数据库查询装置或系统S00还可以包括:电源组件S24被配置为执行电子设备S00的电源管理,有线或无线网络接口S26被配置为将电子设备S00连接到网络,和输入输出(I/O)接口S28。数据库查询装置或系统S00可以操作基于存储在存储器S22的操作系统,例如Windows Server,Mac OS X,Unix,Linux,FreeBSD或类似。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器S22,上述指令可由数据库查询装置或系统S00的处理器执行以完成上述方法。存储介质可以是计算机可读存储介质,例如,所述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供一种计算机程序产品,所述计算机程序产品中包括指令,上述指令可由数据库查询装置或系统S00的处理器执行以完成上述方法。
在本说明书的描述中,参考术语“有些实施例”、“其他实施例”、“理想实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特征包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性描述不一定指的是相同的实施例或示例。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以作出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种数据库查询方法,其特征在于,包括:
获取目标数据库的修改日志,所述修改日志包括当所述目标数据库中的数据发生修改时生成的数据信息;
解析所述修改日志,对所述修改日志解析后的数据进行筛选,得到需要在本地缓存数据库进行缓存的数据更新信息;
将所述数据更新信息发送至缓存消息队列;
依次从所述缓存消息队列中读取数据更新信息,根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新;
所述数据更新信息包括缓存更新信息和索引更新字段,所述根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新包括:
根据所述数据更新信息获取缓存更新信息和索引更新字段;
根据所述缓存更新信息对本地缓存数据库中的缓存数据进行更新;
根据所述索引更新字段对本地缓存数据库的索引数据进行更新;
所述索引数据包括索引记录表,所述索引记录表用于记录各个索引方式所对应的索引表,根据所述索引更新字段对本地缓存数据库的索引数据进行更新包括:
在所述索引记录表中确定与所述索引更新字段相关联的索引表;
根据所述索引更新字段对所述本地缓存数据库中所述相关联的索引表进行更新;
接收目标数据库的查询语句,基于所述查询语句对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。
2.根据权利要求1所述的数据库查询方法,其特征在于,所述缓存数据为key-value型数据,其中,key值包括数据库名、表名、主键字段,value值包括所述索引数据的json值或hash值。
3.根据权利要求1或2所述的数据库查询方法,其特征在于,所述接收目标数据库的查询语句,基于所述查询语句对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果包括:
接收目标数据库的查询语句,对所述查询语句进行解析,获取查询条件;
根据所述查询条件生成执行语句;
根据所述执行语句,对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。
4.根据权利要求1所述的数据库查询方法,其特征在于,在根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新后,所述方法还包括:
获取对本地缓存数据库中的缓存数据和索引数据进行更新的更新结果;
若所述更新结果为更新失败,则重新获取所述缓存消息队列中相对应的数据更新信息,并根据重新获取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新。
5.根据权利要求1所述的数据库查询方法,其特征在于,所述索引方式包括全表索引、单一条件索引和复合条件索引,其中,所述单一条件索引包括等值条件索引、区间条件索引和模糊条件索引。
6.一种数据库查询装置,其特征在于,包括:
更新获取模块,用于获取目标数据库的修改日志,所述修改日志包括当所述目标数据库中的数据发生修改时生成的数据信息;
解析模块,与所述更新获取模块相连接,用于解析所述修改日志,对所述修改日志解析后的数据进行筛选,得到需要在本地缓存数据库进行缓存的数据更新信息,将所述数据更新信息发送至缓存消息队列;
维护模块,用于依次从所述缓存消息队列中读取数据更新信息,根据读取的数据更新信息对本地缓存数据库中的缓存数据和索引数据进行更新;
所述数据更新信息包括缓存更新信息和索引更新字段,所述维护模块,还用于根据所述数据更新信息获取缓存更新信息和索引更新字段;根据所述缓存更新信息对本地缓存数据库中的缓存数据进行更新;根据所述索引更新字段对本地缓存数据库的索引数据进行更新;所述索引数据包括索引记录表,所述维护模块还用于,在所述索引记录表中确定与所述索引更新字段相关联的索引表;根据所述索引更新字段对所述本地缓存数据库中所述相关联的索引表进行更新;
查询模块,与所述维护模块相连接,用于接收目标数据库的查询语句,基于所述查询语句对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。
7.一种数据库查询系统,其特征在于,包括:
本地缓存数据库,用于存储缓存在本地的缓存数据和索引数据;
以及权利要求6所述的数据库查询装置。
8.根据权利要求7所述的数据库查询系统,其特征在于,所述查询模块包括:
解析器,用于接收目标数据库的查询语句,并对所述查询语句进行分析获取查询条件;
生成器,与所述解析器相连接,用于根据所述查询条件生成执行语句;
执行器,与所述生成器相连接,用于运行所述执行语句对所述本地缓存数据库中的索引数据和缓存数据进行查询,获得查询结果。
9.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由计算机的处理器执行时,使得所述计算机能够执行如权利要求1至5中任一项所述的数据库查询方法。
10.一种计算机程序产品,所述计算机程序产品中包括指令,其特征在于,所述指令被计算机的处理器执行时,使得所述计算机能够执行如权利要求1至5任一项所述的数据库查询方法。
CN202110704026.4A 2021-06-24 2021-06-24 数据库查询方法、装置和系统 Active CN113535777B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110704026.4A CN113535777B (zh) 2021-06-24 2021-06-24 数据库查询方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110704026.4A CN113535777B (zh) 2021-06-24 2021-06-24 数据库查询方法、装置和系统

Publications (2)

Publication Number Publication Date
CN113535777A CN113535777A (zh) 2021-10-22
CN113535777B true CN113535777B (zh) 2023-05-23

Family

ID=78125781

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110704026.4A Active CN113535777B (zh) 2021-06-24 2021-06-24 数据库查询方法、装置和系统

Country Status (1)

Country Link
CN (1) CN113535777B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114218469B (zh) * 2021-12-15 2022-09-02 掌阅科技股份有限公司 资源策略处理方法、计算设备及存储介质
CN114238377A (zh) * 2021-12-17 2022-03-25 广州海量数据库技术有限公司 OpenGauss中实现percentile_cont分析函数的方法
CN114372064B (zh) * 2022-03-22 2022-07-12 飞狐信息技术(天津)有限公司 数据处理装置、方法、计算机可读介质及处理器
CN114911830B (zh) * 2022-05-12 2024-04-05 平安科技(深圳)有限公司 基于时序数据库的索引缓存方法、装置、设备及存储介质
CN114928574B (zh) * 2022-05-16 2023-06-13 多点生活(成都)科技有限公司 信息发送方法、装置、电子设备和计算机可读介质
CN116107816B (zh) * 2023-04-13 2023-08-01 山东捷瑞数字科技股份有限公司 一种mysql数据库回档云平台
CN117112549B (zh) * 2023-10-20 2024-03-26 中科星图测控技术股份有限公司 一种基于布隆过滤器的大数据归并方法
CN117891822B (zh) * 2023-12-13 2024-09-10 本原数据(北京)信息技术有限公司 持续聚合数据更新方法、装置、设备及存储介质
CN117668003B (zh) * 2024-02-01 2024-05-03 福建省华大数码科技有限公司 实现数据库中集合数据类型的数据处理方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108932248A (zh) * 2017-05-24 2018-12-04 苏宁云商集团股份有限公司 一种搜索实现方法及系统
CN109542907A (zh) * 2018-11-21 2019-03-29 万兴科技股份有限公司 数据库缓存构建方法、装置、计算机设备以及存储介质
CN110309196A (zh) * 2019-05-22 2019-10-08 深圳壹账通智能科技有限公司 区块链数据存储和查询方法、装置、设备及存储介质
CN111522880A (zh) * 2020-04-24 2020-08-11 桂林电子科技大学 一种基于mysql数据库集群的提升数据读写性能的方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105701098B (zh) * 2014-11-25 2019-07-09 国际商业机器公司 针对数据库中的表生成索引的方法和装置
CN107038162B (zh) * 2016-02-03 2021-03-02 北京嘀嘀无限科技发展有限公司 基于数据库日志的实时数据查询方法和系统
CN106599199A (zh) * 2016-12-14 2017-04-26 国云科技股份有限公司 一种数据缓存与同步方法
CN109144994B (zh) * 2017-06-19 2022-04-29 华为技术有限公司 索引更新方法、系统及相关装置
CN108549725A (zh) * 2018-04-28 2018-09-18 北京百度网讯科技有限公司 数据库访问控制方法、装置、系统、设备及计算机可读介质
CN109947770A (zh) * 2018-08-14 2019-06-28 武汉斗鱼网络科技有限公司 一种数据库查询方法、终端设备及存储介质
CN109241072A (zh) * 2018-08-31 2019-01-18 携程计算机技术(上海)有限公司 基于Canal的缓存更新方法及系统
CN110688397B (zh) * 2019-07-30 2022-05-17 民生科技有限责任公司 一种基于sql的分布式数据统一访问系统及方法
CN111078717A (zh) * 2019-12-20 2020-04-28 深圳前海环融联易信息科技服务有限公司 数据库与缓存的一致性同步方法、装置、计算机设备及存储介质
CN111563102A (zh) * 2020-04-10 2020-08-21 中国联合网络通信集团有限公司 缓存更新方法、服务器、系统及存储介质
CN112286895A (zh) * 2020-10-30 2021-01-29 北京深演智能科技股份有限公司 日志实时归因处理方法、装置和平台

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108932248A (zh) * 2017-05-24 2018-12-04 苏宁云商集团股份有限公司 一种搜索实现方法及系统
CN109542907A (zh) * 2018-11-21 2019-03-29 万兴科技股份有限公司 数据库缓存构建方法、装置、计算机设备以及存储介质
CN110309196A (zh) * 2019-05-22 2019-10-08 深圳壹账通智能科技有限公司 区块链数据存储和查询方法、装置、设备及存储介质
CN111522880A (zh) * 2020-04-24 2020-08-11 桂林电子科技大学 一种基于mysql数据库集群的提升数据读写性能的方法

Also Published As

Publication number Publication date
CN113535777A (zh) 2021-10-22

Similar Documents

Publication Publication Date Title
CN113535777B (zh) 数据库查询方法、装置和系统
US8332389B2 (en) Join order for a database query
US9798772B2 (en) Using persistent data samples and query-time statistics for query optimization
CN110096494B (zh) 使用源跟踪剖析数据
US7249118B2 (en) Database system and methods
CN110837585B (zh) 多源异构的数据关联查询方法及系统
US8396852B2 (en) Evaluating execution plan changes after a wakeup threshold time
US7447676B2 (en) Method and system of collecting execution statistics of query statements
CN111581232B (zh) 一种基于elk的慢sql实时分析方法及系统
CN110688397A (zh) 一种基于sql的分布式数据统一访问系统及方法
CN105930947B (zh) 用于控制在离散生产线中的制造过程的方法和系统
CN111881160A (zh) 一种基于关系代数的等价展开方法的分布式查询优化方法
CN111125199B (zh) 一种数据库访问方法、装置及电子设备
US7908267B2 (en) Automatic use of a functional index as a primary filter
US8150865B2 (en) Techniques for coalescing subqueries
CN117743459A (zh) 增量数据的同步方法、装置、系统、电子设备及可读介质
CN111259082B (zh) 大数据环境下实现全量数据同步的方法
CN117131230A (zh) 数据血缘分析方法、装置、设备及存储介质
CN110008448B (zh) 将SQL代码自动转换为Java代码的方法和装置
US20230153286A1 (en) Method and system for hybrid query based on cloud analysis scene, and storage medium
CN111522918A (zh) 数据汇聚方法、装置、电子设备及计算机可读存储介质
Arnold et al. HRDBMS: Combining the best of modern and traditional relational databases
CN117743398B (zh) 一种在流数据库中基于规则的实时决策及数据处理方法
US11914655B2 (en) Mutation-responsive documentation generation based on knowledge base
CN111159218B (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
GR01 Patent grant
GR01 Patent grant