CN113051268A - 数据查询方法、数据查询装置、电子设备及存储介质 - Google Patents
数据查询方法、数据查询装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113051268A CN113051268A CN202110299688.8A CN202110299688A CN113051268A CN 113051268 A CN113051268 A CN 113051268A CN 202110299688 A CN202110299688 A CN 202110299688A CN 113051268 A CN113051268 A CN 113051268A
- Authority
- CN
- China
- Prior art keywords
- query
- target
- hash index
- stored
- keyword
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例提供了数据查询方法、数据查询装置、电子设备及计算机可读存储介质,应用于计算机领域、金融领域或其他领域。该方法包括:获取查询请求,其中,查询请求包括目标关键字;根据目标关键字,确定查询类型;在确定查询类型为等值查询的情况下,调用哈希索引接口,其中,哈希索引接口是在响应用于创建哈希索引的创建请求的情况下,创建的针对哈希索引的存储引擎接口;根据哈希索引接口,调用目标存储引擎,以通过目标存储引擎确定与目标关键字对应的目标哈希索引;以及,根据目标哈希索引,确定针对查询请求的查询结果。
Description
技术领域
本公开实施例涉及计算机技术领域、金融领域或其他领域,更具体地,涉及一种数据查询方法、数据查询装置、电子设备、计算机可读存储介质及计算机程序产品。
背景技术
数据库是一个存放数据的仓库,这个仓库是按照一定的数据结构来组织和存储的。数据库可以包括关系型数据库和非关系型数据库。在关系型数据库中,MySQL数据库具有插件式存储引擎,MySQL数据库包括多种类型的存储引擎,例如,InnoDB存储引擎、CVS(Concurrent Version System,并发版本***)存储引擎、Archive存储引擎、Memory存储引擎和Myisam存储引擎等。其中,InnoDB存储引擎支持事务处理,具有多种特性,例如,原子性、一致性、独立性和持久性,是MySQL数据库中最常用、最核心和最重要的存储引擎之一。
在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题,采用InnoDB存储引擎进行等值查询的查询效率不高。
发明内容
有鉴于此,本公开实施例提供了一种数据查询方法、数据查询装置、电子设备、计算机可读存储介质及计算机程序产品。
本公开实施例的一个方面提供了一种数据查询方法,包括:获取查询请求,其中,上述查询请求包括目标关键字;根据上述目标关键字,确定查询类型;在确定上述查询类型为等值查询的情况下,调用哈希索引接口,其中,上述哈希索引接口是在响应用于创建哈希索引的创建请求的情况下,创建的针对哈希索引的存储引擎接口;根据上述哈希索引接口,调用目标存储引擎,以通过上述目标存储引擎确定与上述目标关键字对应的目标哈希索引;以及,根据上述目标哈希索引,确定针对上述查询请求的查询结果。
本公开实施例的另一个方面提供了一种数据查询装置,包括:第一获取模块,用于获取查询请求,其中,上述查询请求包括目标关键字;第一确定模块,用于根据上述目标关键字,确定查询类型;第一调用模块,用于在确定上述查询类型为等值查询的情况下,调用哈希索引接口,其中,上述哈希索引接口是在响应用于创建哈希索引的创建请求的情况下,创建的针对哈希索引的存储引擎接口;第二调用模块,用于根据上述哈希索引接口,调用目标存储引擎,以通过上述目标存储引擎确定与上述目标关键字对应的目标哈希索引;以及,第二确定模块,根据上述目标哈希索引,确定针对上述查询请求的查询结果。
本公开实施例的另一个方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如上所述的方法。
本公开实施例的另一个方面提供了一种计算机可读存储介质,存储有计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。
本公开实施例的另一个方面提供了一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。
根据本公开的实施例,通过获取包括目标关键字的查询请求,根据目标关键字,确定查询类型,在确定查询类型为等值查询的情况下,调用哈希索引接口,哈希索引接口是在响应用于创建哈希索引的创建请求的情况下,创建的针对哈希索引的存储引擎接口,根据哈希索引接口,调用目标存储引擎,以通过目标存储引擎确定与目标关键字对应的目标哈希索引,并根据目标哈希索引,确定针对查询请求的查询结果。针对等值查询,由于采用的是通过调用响应于创建哈希索引的创建请求,创建的针对哈希索引的哈希索引接口来调用支持哈希索引的目标存储引擎的方式处理目标关键字,得到目标索引,并根据目标索引,得到查询结果,而基于哈希索引(即目标索引)需要一次IO便可以得到查询结果,因此,提高了查询效率,因而,至少部分地客服了采用InnoDB存储引擎进行等值查询的查询效率不高的问题,进而也节省了存储空间。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的可以应用数据查询方法的示例性***架构;
图2示意性示出了根据本公开实施例的一种数据查询方法的流程图;
图3示意性示出了根据本公开实施例的一种待存储索引的生成过程示意图;
图4示意性示出了根据本公开实施例的一种基于B+树索引得到查询结果的示意图;
图5示意性示出了根据本公开的实施例的一种数据查询装置的框图;以及
图6示意性示出了根据本公开实施例的适于实现数据查询方法的电子设备的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的***”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的***等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的***”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的***等)。
图1示意性示出了根据本公开实施例的可以应用数据查询方法的示例性***架构100。需要注意的是,图1所示仅为可以应用本公开实施例的***架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、***、环境或场景。
如图1所示,根据该实施例的***架构100可以包括客户端101、102、103,网络104和服务器105。服务器105可以设置MySQL数据库。网络104用以在客户端101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线和/或无线通信链路等。
用户可以使用客户端101、102、103通过网络104与服务器105交互,以接收或发送消息等。客户端101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端和/或社交平台软件等(仅为示例)。
客户端101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等。
服务器105可以是提供各种服务的服务器,例如对用户利用客户端101、102、103发送的查询请求提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的查询请求进行分析等处理,并将处理结果(例如根据目标关键字,确定查询类型,在确定查询类型为等值查询的情况下,调用哈希索引接口,根据哈希索引接口,确定目标存储引擎,以通过目标存储引擎确定与目标关键字对应的目标哈希索引,并根据目标哈希索引,确定针对查询请求的查询结果)反馈给客户端101、102、103。
服务器105上的MySQL数据库的架构可以包括服务层、存储引擎层和物理文件层。服务层可以包括连接器、查询缓存(图1未示出)、SQL(Structured Query Language,结构化查询语句)接口、分析器、优化器和执行器。
根据本公开的实施例,连接器可以用于负责连接管理、授权认证和安全服务等,即当客户端101、102、103向MySQL数据库发送连接请求时,由于MySQL数据库设置在服务器105上,因此,都需要进行客户端101、102、103与服务器105的通信连接。连接器会从服务器105所维护的线程池中取出空闲线程或者创建一个新的线程作为当前的连接线程。连接线程通过用户名和密码或者SSL(Secure Sockets Layer,安全套接字协议证书)等方式对连接进行权限认证并维持管理当前连接,然后客户端就可以执行数据库操作。
SQL接口是一套执行SQL语句的接口。SQL接口可以包括存储引擎接口。不同存储引擎可以具有对应的存储引擎接口,可以通过调用不同的存储引擎接口调用不同的存储引擎。
分析器可以用于对SQL语句进行语义解析,生成以解析数据结构树形式的解析结果,其中,语义解析可以包括词法分析和语法分析。优化器可以用于对解析结果进行处理,得到执行语句。执行器可以用于根据执行语句,确定需要调用的存储引擎接口,通过存储引擎接口调用对应的存储引擎,以通过对应的存储引擎执行执行语句。
存储引擎层可以用于实现数据的存储和提取。存储引擎是在物理层面上实现表数据的存储管理、索引方法和锁定机制等功能,为执行增加、删除、更改和查询等数据库操作提供支持的工具。存储引擎层包括多种类型的存储引擎,例如,InnoDB存储引擎。存储引擎执行执行语句,得到相应的执行结果。
物理文件层可以用于存储于表相关的元数据文件和表数据文件,使得MySQL数据库的数据存储建立在物理文件之上,完成与存储引擎之间的交互。存储引擎在执行执行语句过程中,访问物理文件层,得到相应的执行结果。
应该理解,图1中的客户端、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的客户端、网络和服务器。
为了便于存储引擎可以较为快速地获取到相应数据,可以采用索引的方式。其中,索引是一种单独的和物理的对数据库表中一列或多列的值进行排序的一种存储结构,其提供指向存储在表的指定列中的数据值的指针,并根据指定的排序顺序对指针排序。索引可以包括多种类型,例如,B+树索引和哈希索引。不同索引可以应用于不同应用场景,应用场景可以包括范围查询或等值查询。在MySQL数据库中,不同存储引擎针对同一索引的实现方式可能不同,并且每种存储引擎可能并不支持所有类型的索引的索引的工作方式并不一样,也不是所有的存储引擎都支持所有类型的索引。
在实现本公开构思的过程中,发明人发现针对MySQL数据库中的事务型存储引擎,例如,InnoDB存储引擎,采用InnoDB存储引擎进行等值查询的效率不高。这是由于InnoDB存储引擎仅支持B+树索引,B+树索引的实现方式是每次查询都需要从根节点逐级查找到叶子节点,这就导致树的高度越高,IO次数就越多,相应的,耗时越长,因此,使得等值查询的查询效率不高。
为了解决上述问题,便需要减少IO次数,发明人发现针对等值查询,采用哈希索引的方式,需要进行一次IO便可以实现,这样可以大大提高查询效率,进而也能够节省存储空间。同时,发明人发现由于MySQL数据库的开源特性以及MySQL数据库的存储引擎是插拔式存储引擎,因此,如果提供的存储引擎难以满足业务需求,可以根据业务需求编写相应的功能,实现自定义的存储引擎,即可以根据业务需求创建存储引擎接口,由此,实现创建存储引擎。基于,发明人提出了一种基于改进型的存储引擎实现等值查询的方案,其中,改进型的存储引擎可以理解为是支持哈希所索引的存储引擎,可以将支持哈希索引的存储引擎称为目标存储引擎,即改进型的存储引擎即可以称为目标存储引擎。为了得到目标存储引擎,便需要创建针对哈希索引的哈希索引接口。
具体地,本公开实施例提供了一种数据查询方法、数据查询装置、电子设备、计算机可读存储介质及计算机程序产品,本公开实施例的数据查询方法、数据查询装置、电子设备、计算机可读存储介质及计算机程序产品可以应用于金融领域,也可以用于除金融领域之外的任意领域,本公开实施例对此不作限定。该方法可以包括获取查询请求,查询请求包括目标关键字,根据目标关键字,确定查询类型,在确定查询类型为等值查询的情况下,调用哈希索引接口,哈希索引接口是在响应用于创建哈希索引的创建请求的情况下,创建的针对哈希索引的存储引擎接口,根据哈希索引接口,调用目标存储引擎,以通过目标存储引擎确定与目标关键字对应的目标哈希索引,并根据目标哈希索引,确定针对查询请求的查询结果。
需要说明的是,本公开实施例所提供的数据查询方法一般可以由服务器105执行。相应地,本公开实施例所提供的数据查询装置一般可以设置于服务器105中。本公开实施例所提供的数据查询方法也可以由不同于服务器105且能够与客户端101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的数据查询装置也可以设置于不同于服务器105且能够与客户端101、102、103和/或服务器105通信的服务器或服务器集群中。
图2示意性示出了根据本公开实施例的一种数据查询方法的流程图。
如图2所示,该方法包括操作S210~S250。
在操作S210,获取查询请求,其中,查询请求包括目标关键字。
根据本公开的实施例,目标关键字可以确定查询结果的依据。查询请求可以由操作体的触发操作触发。触发操作可以包括点击或滑动等。
在操作S220,根据目标关键字,确定查询类型。
根据本公开的实施例,查询类型可以包括范围查询或等值查询,范围查询可以包括全键值查询、键值范围查询或键值前缀查询。可以根据目标关键字确定查询类型。示例性的,如如果查询关键字包括“key=15”,则可以确定查询类型为等值查询。如果查询关键字包括“key∈(1,10)”,则可以确定查询类型为范围查询。
在操作S230,在确定查询类型为等值查询的情况下,调用哈希索引接口,其中,哈希索引接口是在响应用于创建哈希索引的创建请求的情况下,创建的针对哈希索引的存储引擎接口。
在操作S240,根据哈希索引接口,调用目标存储引擎,以通过目标存储引擎确定与目标关键字对应的目标哈希索引。
在操作S250,根据目标哈希索引,确定针对查询请求的查询结果。
根据本公开的实施例,如果根据目标关键字,确定查询类型为等值查询,则可以确定需要利用哈希索引实现查询,即需要利用支持哈希索引的存储引擎处理查询请求,其中,将支持哈希索引的存储引擎称为目标存储引擎。目标存储引擎可以是改进型的InnoDB存储引擎。由于存储引擎可以通过与存储引擎对应的存储引擎接口调用,因此,为了实现存储引擎能够支持哈希索引,便需要创建针对哈希索引的哈希索引接口。
根据本公开的实施例,在根据目标关键字,确定查询类型之前,上述数据查询方法还可以包括获取到针对用于创建哈希索引的创建请求,解析创建请求,得到针对创建请求的解析结果,如果确定解析结果包括预设标识,则可以调用目标存储引擎的哈希索引创建哈希索引接口。预设标识可以指用于表征哈希索引的标识。
根据本公开的实施例,在确定查询类型为等值查询的情况下,调用哈希索引接口,以通过哈希索引接口调用目标存储引擎,目标存储引擎根据目标关键字,确定与目标关键字对应的目标哈希索引,根据目标哈希索引,确定针对查询请求的查询结果,即确定针对与目标关键字对应的查询结果。其中,目标哈希索引可以是利用哈希算法处理目标关键字得到的。哈希算法可以包括消息摘要算法(Message-Digest Algorithm,MDA)、安全哈希算法(Secure Hash Algorithm,SHA)或循环冗余校验(Cyclic Redundancy Check,CRC)算法。
根据本公开实施例的技术方案,通过获取包括目标关键字的查询请求,根据目标关键字,确定查询类型,在确定查询类型为等值查询的情况下,调用哈希索引接口,哈希索引接口是在响应用于创建哈希索引的创建请求的情况下,创建的针对哈希索引的存储引擎接口,根据哈希索引接口,调用目标存储引擎,以通过目标存储引擎确定与目标关键字对应的目标哈希索引,并根据目标哈希索引,确定针对查询请求的查询结果。针对等值查询,由于采用的是通过调用响应于创建哈希索引的创建请求,创建的针对哈希索引的哈希索引接口来调用支持哈希索引的目标存储引擎的方式处理目标关键字,得到目标索引,并根据目标索引,得到查询结果,而基于哈希索引(即目标索引)需要一次IO便可以得到查询结果,因此,提高了查询效率,因而,至少部分地客服了采用InnoDB存储引擎进行等值查询的查询效率不高的问题,进而也节省了存储空间。
根据本公开的实施例,上述数据查询方法还可以包括如下操作。
获取创建请求。解析创建请求,得到解析结果。在确定解析结果包括用于表征创建哈希索引的预设标识的情况下,根据解析结果,创建哈希索引接口。
根据本公开的实施例,可用利用解析器对创建请求进行语义解析,语义解析可以包括词法分析和语法分析,得到针对创建请求的解析结果,如果解析结果包括预设标识,则可以根据解析结果,创建哈希索引接口。预设标识可以是表征创建哈希索引的标识。示例性的,如预设标识可以为“USING HASH”。创建请求可以为DDL(Data Definition Language,数据库模式定义语言)语句。
根据本公开的实施例,根据目标哈希索引,确定针对查询请求的查询结果,可以包括如下操作。
在确定目标哈希表中存在目标哈希索引的情况下,确定与目标哈希索引对应的查询键值对,其中,查询键值对包括查询关键字和与查询关键字对应的查询值。在确定查询键值对的数量为一个的情况下,将查询键值对作为针对查询请求的查询结果。在确定查询键值对的数量为多个的情况下,从多个查询关键字中查询与目标关键字一致的查询关键字。在确定查询到与目标关键字一致的查询关键字的情况下,将与目标关键字一致的查询关键字所对应的查询键值对作为针对查询请求的查询结果。
根据本公开的实施例,哈希表中由索引表征的地址存储有如果目标哈希表中存在目标哈希索引,则可以从目标哈希表中确定与目标哈希索引对应的查询键值对,即确定目标哈希索引所表征的地址处存储的查询键值对,查询键值对可以理解为记录。如果查询键值对的数量为一个,则可以将查询键值对确定为是与目标关键字对应的查询结果。如果查询键值对的数量为至少两个,则可以从至少两个查询关键字中查询与目标关键字一致的查询关键字,如果查询到与目标关键字一致的查询关键字,则可以将与目标关键字一致的查询关键字所对应的查询键值对确定为是针对查询请求的查询结果。
如果目标哈希表中不存在目标哈希索引,则可以确定针对查询请求的查询结果为空值。或,如果目标哈希表中存在目标哈希索引,则在确定查询键值对的数量为至少两个的情况下,未查询到与目标关键字一致的查询关键字,则可以确定针对查询请求的查询结果为空值。
根据本公开的实施例,在确定查询键值对的数量为多个的情况下,从多个查询关键字中查询与目标关键字一致的查询关键字,可以包括如下操作。
在确定与目标哈希索引对应的链表包括多个查询键值对的情况下,遍历与目标哈希索引对应的链表,依次获取指针指向的查询关键字。根据依次获取的查询关键字,确定与目标关键字一致的查询关键字。
根据本公开的实施例,可能存在哈希冲突,哈希冲突是指存在至少两个目标关键字对应同一目标哈希索引。为了解决哈希冲突,可以利用开放地址法、再哈希法、链地址法或建立公共溢出区法。可选地,可以利用链地址法解决哈希处理,即存在相同索引的关键字时,将同一索引的关键字,通过单链表的形式链接起来,而各个单链表的头结点存储在目标哈希表。
根据本公开的实施例,如果确定与目标哈希索引对应的链表包括至少两个查询键值对,则可以遍历与目标哈希索引对应的链表,依次获取指针指向的查询关键字。并根据获取的的顺序,依次确定指针指向的查询关键字是否与目标关键字一致。如果确定指针指向的查询关键字与目标关键字一致,则可以将与目标关键字一致的查询关键字所对应的查询键值对确定为针对查询请求的查询结果。
根据本公开的实施例,由于利用链地址法处理哈希冲突的方法简单且无堆积现象,因此,平均查询长度较短。此外,利用链地址法构造的哈希表中删除接点易于实现。
根据本公开的实施例,根据哈希索引接口,调用目标存储引擎,以通过目标存储引擎确定与目标关键字对应的目标哈希索引,可以包括如下操作。
根据哈希索引接口,调用目标存储引擎,以通过目标存储引擎利用消息摘要算法处理目标关键字,得到与目标关键字对应的初始哈希索引。提取初始哈希索引位于预设位的数据,得到待转换哈希索引。将待转换哈希索引由第一进制转换为第二进制,得到目标哈希索引。
根据本公开的实施例,消息摘要算法可以包括MD5算法。预设位可以根据实际业务需求进行配置,在此不作限定。例如,预设位可以为前16位。第一进制和第二进制可以根据实际业务需求进行配置,在此不作限定。例如,第一进制可以为十六进制。第二进制可以为十进制。
根据本公开的实施例,目标存储引擎可以利用MD5算法处理目标关键字,得到与目标关键字对应的初始哈希索引,可以提取与目标关键字对应的初始哈希索引的前16位,得到待转换哈希索引,并将待转换哈希索引由十六进制转换为十进制,得到目标哈希索引。
根据本公开的实施例,由于初始哈希索引是较长的字符串,因此,需要占用较多的空间,并且也使得数据查询的查询效率也不高。通过采用提取初始哈希索引的预设位的数据,得到目标哈希索引的方式,由于目标哈希索引相比初始哈希索引,减少了位数,因此,减少了空间占用,同时,也提高了查询效率。此外,通过采用利用消息摘要算法处理目标关键字,得到与目标关键字对应的初始哈希索引的方式,减少了哈希冲突的出现次数。基于上述,平衡了查询效率和哈希冲突。
根据本公开的实施例,上述数据查询方法还可以包括如下操作。
获取存储请求,其中,存储请求包括待存储键值对,待存储键值对包括待存储关键字和与待存储关键字对应的待存储值。确定与待存储关键字对应的待存储哈希索引。将待存储键值对存储至由与待存储关键字对应的待存储哈希索引所表征的地址,得到目标哈希表。
根据本公开的实施例,可以利用哈希算法处理与待存储关键字,得到与待存储关键字对应的初始哈希索引,提取与待存储关键字对应的初始哈希索引位于预设位的数据,得到待转换哈希索引,并将待转换哈希索引由第一进制转换为第二进制,得到与待存储关键字对应的待存储哈希索引。哈希算法可以包括消息摘要算法。消息摘要算法可以包括MD5算法。预设位可以为前16位。
根据本公开的实施例,在确定与待存储关键字对应的待存储哈希索引后,可以待存储键值对存储至由待存储哈希索引所表征的地址。
根据本公开的实施例,将待存储键值对存储至由与待存储关键字对应的待存储哈希索引所表征的地址,得到目标哈希表,可以包括如下操作。
在确定原始哈希表中由与待存储关键字对应的待存储哈希索引所表征的地址存储有键值对的情况下,获取与待存储哈希索引对应的链表。将待存储键值对存储至与待存储哈希索引对应的链表的尾部,得到目标哈希表。在确定原始哈希表中由与待存储关键字对应的待存储哈希索引所表征的地址未存储有键值对的情况下,将待存储键值对存储至由与待存储关键字对应的待存储哈希索引所表征的地址,得到目标哈希表。
根据本公开的实施例,在实现数据存储的过程中,可以利用链地址法处理哈希冲突。如果确定原始哈希表中由与待存储哈希索引所表征的地址未存储有键值对,则可以将待存储键值对存储至由待存储哈希索引所表征的地址。如果确定原始哈希表中由与待存储哈希索引所表征的地址存储有键值对,则可以获取与待存储哈希索引对应的链表,并遍历与待存储哈希索引对应的链表,将待存储键值对存储至与待存储哈希索引对应的链表的尾部,得到目标哈希表。
根据本公开的实施例,在获取存储请求之前,还可以包括获取建表请求,解析建表请求,得到针对建表请求的解析结果,确定针对建表请求的解析结果是否包括用于表征创建哈希表的预设标识,如果确定针对建表请求的解析结果包括用于表征创建哈希表的预设标识,则建立原始哈希表。示例性的,如预设标识可以为“USING HASH”。
根据本公开的实施例,在利用链地址法实现数据存储时,目标哈希表中还存储有与待存储关键字对应的指针。
示例性的,图3示意性示出了根据本公开实施例的一种待存储索引的生成过程示意图。图3中包括4个待存储键值对,图3中仅示出每个待存储键值对中的待存储关键字,即K1、K2、K3和K4。利用公式h(K)=conv(left(MD5(K),16),10)对分别对上述4个待存储关键字进行处理,得到对应的待存储索引,即h(K1)、h(K2)、h(K3)和h(K4)。其中,MD5(K)表征利用MD5算法处理待存储关键字K,left(MD5(K),16)表征提取利用MD5算法处理待存储关键字得到的结果的前16位,conv(left(MD5(K),16),10)表征将前16位的数据由十六进制转换为十进制。从图3可以看出,h(K2)和h(K4)具有相同的待存储索引,两者存储于与待存储索引对应的链表中。
根据本公开的实施例,上述数据查询方法还可以包括如下操作。
在确定查询类型为范围查询的情况下,调用B+树索引接口。根据B+树索引接口,调用目标存储引擎,以通过目标存储引擎确定针对查询请求的查询结果。
根据本公开的实施例,B+树是为磁盘或者其他直接存取辅助设备设计的一种平衡查找树。在B+树上,所有节点都是按键值的大小顺序存放在同一层叶子节点上,由各个叶子节点的指针进行连接。如果根据查询类型,确定查询类型为范围查询,则可以调用B+树索引接口,根据B+树索引接口,调用目标存储引擎,通过目标存储引擎确定针对查询请求的查询结果。其中,目标存储引擎除了可以支持哈希索引外,还可以支持B+树索引。查询是从索引的根节点开始,根节点的槽中存放了指向子节点的指针,目标存储引擎根据指针向下层查询,通过比较节点页的值和要查询的值,确定合适的指针进入下层子节点,上述指针设定了子节点的页中值的上限和下限。叶子节点的指针指向被索引的数据。在根节点和叶子节点之间可能有多层节点页,由于树的深度和节点的扇出直接相关,为了降低树的高度,减少磁盘IO,因此,本公开实施例的目标存储引擎可以允许根据实际业务需求对节点的扇出数进行配置,在此不作限定。例如,高度为2的B+树,每页可以存储4条记录,节点的扇出数可以为5。
示例性的,图4示意性示出了根据本公开实施例的一种基于B+树索引得到查询结果的示意图。图4中从根节点出发,确定目标关键字Key是否小于Key1;若是,则进入节点值小于Key1的节点,即Va1.1、Va1.2、......、Va1.m;若否,则进入节点值大于或等于Key1小于Key2的节点,即Va2.1、Va2.2、……、Va2.m。重复执行上述操作,直至完成针对叶子节点的操作,从叶子节点获取查询结果。
根据本公开实施例的另一种数据查询方法,该方法包括如下操作。
获取创建请求,解析创建请求,得到针对创建请求的解析结果。确定针对创建请求的解析结果是否包括用于表征创建哈希索引的预设标识。若是,则调用存储引擎的哈希索引创建哈希索引接口,获取建表请求,解析建表请求,得到针对建表请求的解析结果,确定针对建表请求的解析结果是否包括用于表征创建哈希表的预设标识;若是,则建立原始哈希表,并执行若否的操作;若否,则获取存储请求,其中,存储请求包括待存储键值对,待存储键值对包括待存储关键字和与待存储关键字对应的待存储值,待存储键值对包括待存储关键字和与待存储关键字对应的待存储值,确定与待存储关键字对应的待存储哈希索引,确定原始哈希表中由与待存储关键字对应的待存储哈希索引所表征的地址是否存储有键值对;若是,则获取与待存储哈希索引对应的链表,将待存储键值对存储至与待存储哈希索引对应的链表的尾部,得到目标哈希表;若否,则将待存储键值对存储至由与待存储关键字对应的待存储哈希索引所表征的地址,得到目标哈希表。
若确定针对建表请求的解析结果不包括用于表征创建哈希表的预设标识,则结束执行操作。
获取查询请求,其中,查询请求包括目标关键字,根据目标关键字,确定查询类型,确定查询类型是否为等值查询;若是,则调用哈希索引接口,根据哈希索引接口,调用目标存储引擎,以通过目标存储引擎利用消息摘要算法处理目标关键字,得到与目标关键字对应的初始哈希索引,提取初始哈希索引位于预设位的数据,得到待转换哈希索引,将待转换哈希索引由第一进制转换为第二进制,得到目标哈希索引。确定目标哈希表中是否存在目标哈希索引;若是,则确定与目标哈希索引对应的查询键值对,确定查询键值对的数量是否为一个;若是,则将查询键值对作为针对查询请求的查询结果;若否,则遍历与目标哈希索引对应的链表,依次获取指针指向的查询关键字,根据依次获取的查询关键字,确定是否存在与目标关键字一致的查询键值对;若是,则将与目标关键字一致的查询关键字所对应的查询键值对作为针对查询请求的查询结果。若目标哈希表中不存在目标哈希索引或不否存在与目标关键字一致的查询键值对,则确定针对查询请求的查询结果为空值。
若查询类型不为等值查询,则调用B+树索引接口,以通过目标存储引擎确定针对查询请求的查询结果。
根据本公开实施例的技术方案,由于采用的是通过调用响应于创建哈希索引的创建请求,创建的针对哈希索引的哈希索引接口来调用支持哈希索引的目标存储引擎的方式处理目标关键字,得到目标索引,并根据目标索引,得到查询结果,而基于哈希索引(即目标索引)需要一次IO便可以得到查询结果,因此,提高了查询效率,进而也节省了存储空间。通过采用提取初始哈希索引的预设位的数据,得到目标哈希索引的方式,由于目标哈希索引相比初始哈希索引,减少了位数,因此,减少了空间占用,同时,也提高了查询效率。此外,通过采用利用消息摘要算法处理目标关键字,得到与目标关键字对应的初始哈希索引的方式,减少了哈希冲突的出现次数。针对范围查询,利用B+树索引的有序性,实现了快速查询、分组和排序的目的。本公开实施例中的,目标存储引擎支持哈希索引和B+树索引,充分地利用了各种索引的优势,进而提高了数据库在各种应用场景下的查询效率。
图5示意性示出了根据本公开的实施例的一种数据查询装置的框图。
如图5所示,数据查询装置500可以包括第一获取模块510、第一确定模块520、第一调用模块530、第二调用模块540和第二确定模块550。
第一获取模块510、第一确定模块520、第一调用模块530、第二调用模块540和第二确定模块550通信连接。
第一获取模块510,用于获取查询请求,其中,查询请求包括目标关键字。
第一确定模块520,用于根据目标关键字,确定查询类型。
第一调用模块530,用于在确定查询类型为等值查询的情况下,调用哈希索引接口,其中,哈希索引接口是在响应用于创建哈希索引的创建请求的情况下,创建的针对哈希索引的存储引擎接口。
第二调用模块540,用于根据哈希索引接口,调用目标存储引擎,以通过目标存储引擎确定与目标关键字对应的目标哈希索引。
第二确定模块550,根据目标哈希索引,确定针对查询请求的查询结果。
根据本公开实施例的技术方案,通过获取包括目标关键字的查询请求,根据目标关键字,确定查询类型,在确定查询类型为等值查询的情况下,调用哈希索引接口,哈希索引接口是在响应用于创建哈希索引的创建请求的情况下,创建的针对哈希索引的存储引擎接口,根据哈希索引接口,调用目标存储引擎,以通过目标存储引擎确定与目标关键字对应的目标哈希索引,并根据目标哈希索引,确定针对查询请求的查询结果。针对等值查询,由于采用的是通过调用响应于创建哈希索引的创建请求,创建的针对哈希索引的哈希索引接口来调用支持哈希索引的目标存储引擎的方式处理目标关键字,得到目标索引,并根据目标索引,得到查询结果,而基于哈希索引(即目标索引)需要一次IO便可以得到查询结果,因此,提高了查询效率,因而,至少部分地客服了采用InnoDB存储引擎进行等值查询的查询效率不高的问题,进而也节省了存储空间。
根据本公开的实施例,上述数据查询装置500还可以包括第二获取模块、解析模块和创建模块
第二获取模块,用于获取创建请求。
解析模块,用于解析创建请求,得到解析结果。
创建模块,用于在确定解析结果包括用于表征创建哈希索引的预设标识的情况下,根据解析结果,创建哈希索引接口。
根据本公开的实施例,第二确定模块540可以包括第一确定子模块、第二确定子模块、查询子模块和第四确定子模块。
第一确定子模块,用于在确定目标哈希表中存在目标哈希索引的情况下,确定与目标哈希索引对应的查询键值对,其中,查询键值对包括查询关键字和与查询关键字对应的查询值。
第二确定子模块,用于在确定查询键值对的数量为一个的情况下,将查询键值对作为针对查询请求的查询结果。
查询子模块,用于在确定查询键值对的数量为多个的情况下,从多个查询关键字中查询与目标关键字一致的查询关键字。
第三确定子模块,用于在确定查询到与目标关键字一致的查询关键字的情况下,将与目标关键字一致的查询关键字所对应的查询键值对作为针对查询请求的查询结果。
根据本公开的实施例,查询子模块可以包括遍历单元和确定单元。
遍历单元,用于在确定与目标哈希索引对应的链表包括多个查询键值对的情况下,遍历与目标哈希索引对应的链表,依次获取指针指向的查询关键字。
确定单元,用于根据依次获取的查询关键字,确定与目标关键字一致的查询关键字。
根据本公开的实施例,第二调用模块540可以包括调用子模块、提取子模块和转换子模块。
调用子模块,用于调用哈希索引接口,以通过存储引擎利用消息摘要算法处理目标关键字,得到与目标关键字对应的初始哈希索引。
提取子模块,用于提取初始哈希索引位于预设位的数据,得到待转换哈希索引。
转换子模块,用于将待转换哈希索引由第一进制转换为第二进制,得到目标哈希索引。
根据本公开的实施例,上述数据查询装置500还可以包括第三获取模块、第三确定模块和存储模块。
第三获取模块,用于获取存储请求,其中,存储请求包括待存储键值对,待存储键值对包括待存储关键字和与待存储关键字对应的待存储值。
第三确定模块,用于确定与待存储关键字对应的待存储哈希索引。
存储模块,用于将待存储键值对存储至由与待存储关键字对应的待存储哈希索引所表征的地址,得到目标哈希表。
根据本公开的实施例,存储模块可以包括获取子模块、第一存储子模块和第二存储子模块。
获取子模块,用于在确定原始哈希表中由与待存储关键字对应的待存储哈希索引所表征的地址存储有键值对的情况下,获取与待存储哈希索引对应的链表。
第一存储子模块,用于将待存储键值对存储至与待存储哈希索引对应的链表的尾部,得到目标哈希表。
第二存储子模块,用于在确定原始哈希表中由与待存储关键字对应的待存储哈希索引所表征的地址未存储有键值对的情况下,将待存储键值对存储至由与待存储关键字对应的待存储哈希索引所表征的地址,得到目标哈希表。
根据本公开的实施例,上述数据查询装置500还可以包括第三调用模块和第四调用模块。
第三调用模块,用于在确定查询类型为范围查询的情况下,调用B+树索引接口。
第四调用模块,用于根据B+树索引接口,调用目标存储引擎,以通过目标存储引擎确定针对查询请求的查询结果。
根据本公开的实施例的模块、子模块、单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(Field ProgrammableGate Array,FPGA)、可编程逻辑阵列(Programmable Logic Arrays,PLA)、片上***、基板上的***、封装上的***、专用集成电路(Application Specific Integrated Circuit,ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,第一获取模块510、第一确定模块520、第一调用模块530、第二调用模块540和第二确定模块550中的任意多个可以合并在一个模块/子模块/单元中实现,或者其中的任意一个模块/子模块/单元可以被拆分成多个模块/子模块/单元。或者,这些模块/子模块/单元中的一个或多个模块/子模块/单元的至少部分功能可以与其他模块/子模块/单元的至少部分功能相结合,并在一个模块/子模块/单元中实现。根据本公开的实施例,第一获取模块510、第一确定模块520、第一调用模块530、第二调用模块540和第二确定模块550中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上***、基板上的***、封装上的***、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一获取模块510、第一确定模块520、第一调用模块530、第二调用模块540和第二确定模块550中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
需要说明的是,本公开的实施例中数据查询装置部分与本公开的实施例中数据查询方法部分是相对应的,数据查询装置部分的描述具体参考数据查询方法部分,在此不再赘述。
图6示意性示出了根据本公开实施例的适于实现上文描述的方法的电子设备的框图。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,根据本公开实施例的电子设备600包括处理器601,其可以根据存储在只读存储器(Read-Only Memory,ROM)602中的程序或者从存储部分608加载到随机访问存储器(Random Access Memory,RAM)603中的程序而执行各种适当的动作和处理。处理器601例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器601还可以包括用于缓存用途的板载存储器。处理器601可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 603中,存储有电子设备600操作所需的各种程序和数据。处理器601、ROM602以及RAM 603通过总线604彼此相连。处理器601通过执行ROM 602和/或RAM 603中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 602和RAM 603以外的一个或多个存储器中。处理器601也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备600还可以包括输入/输出(I/O)接口605,输入/输出(I/O)接口605也连接至总线604。电子设备600还可以包括连接至I/O接口605的以下部件中的一项或多项:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被处理器601执行时,执行本公开实施例的***中限定的上述功能。根据本公开的实施例,上文描述的***、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/***中所包含的;也可以是单独存在,而未装配入该设备/装置/***中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器((Erasable Programmable Read Only Memory,EPROM)或闪存)、便携式紧凑磁盘只读存储器(Computer Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 602和/或RAM 603和/或ROM 602和RAM 603以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行本公开实施例所提供的方法的程序代码,当计算机程序产品在电子设备上运行时,该程序代码用于使电子设备实现本公开实施例所提供的数据查询方法。
在该计算机程序被处理器601执行时,执行本公开实施例的***/装置中限定的上述功能。根据本公开的实施例,上文描述的***、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分609被下载和安装,和/或从可拆卸介质611被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(Local Area Network,LAN)或广域网(Wide Area Networks,WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (12)
1.一种数据查询方法,包括:
获取查询请求,其中,所述查询请求包括目标关键字;
根据所述目标关键字,确定查询类型;
在确定所述查询类型为等值查询的情况下,调用哈希索引接口,其中,所述哈希索引接口是在响应用于创建哈希索引的创建请求的情况下,创建的针对哈希索引的存储引擎接口;
根据所述哈希索引接口,调用目标存储引擎,以通过所述目标存储引擎确定与所述目标关键字对应的目标哈希索引;以及
根据所述目标哈希索引,确定针对所述查询请求的查询结果。
2.根据权利要求1所述的方法,还包括:
获取创建请求;
解析所述创建请求,得到解析结果;以及
在确定所述解析结果包括用于表征创建哈希索引的预设标识的情况下,根据所述解析结果,创建所述哈希索引接口。
3.根据权利要求1所述的方法,其中,所述根据所述目标哈希索引,确定针对所述查询请求的查询结果,包括:
在确定目标哈希表中存在所述目标哈希索引的情况下,确定与所述目标哈希索引对应的查询键值对,其中,所述查询键值对包括查询关键字和与所述查询关键字对应的查询值;
在确定所述查询键值对的数量为一个的情况下,将所述查询键值对作为针对所述查询请求的查询结果;
在确定所述查询键值对的数量为多个的情况下,从多个查询关键字中查询与所述目标关键字一致的查询关键字;以及
在确定查询到与所述目标关键字一致的查询关键字的情况下,将与所述目标关键字一致的查询关键字所对应的查询键值对作为针对所述查询请求的查询结果。
4.根据权利要求3所述的方法,其中,所述在确定所述查询键值对的数量为多个的情况下,从多个查询关键字中查询与所述目标关键字一致的查询关键字,包括:
在确定与所述目标哈希索引对应的链表包括多个所述查询键值对的情况下,遍历与所述目标哈希索引对应的链表,依次获取指针指向的查询关键字;以及
根据依次获取的所述查询关键字,确定与所述目标关键字一致的查询关键字。
5.根据权利要求1所述的方法,其中,所述根据所述哈希索引接口,调用目标存储引擎,以通过所述目标存储引擎确定与所述目标关键字对应的目标哈希索引,包括:
根据所述哈希索引接口,调用所述目标存储引擎,以通过所述目标存储引擎利用消息摘要算法处理所述目标关键字,得到与所述目标关键字对应的初始哈希索引;
提取所述初始哈希索引位于预设位的数据,得到待转换哈希索引;以及
将所述待转换哈希索引由第一进制转换为第二进制,得到所述目标哈希索引。
6.根据权利要求3所述的方法,还包括:
获取存储请求,其中,所述存储请求包括待存储键值对,所述待存储键值对包括待存储关键字和与所述待存储关键字对应的待存储值;
确定与所述待存储关键字对应的待存储哈希索引;以及
将所述待存储键值对存储至由与所述待存储关键字对应的待存储哈希索引所表征的地址,得到所述目标哈希表。
7.根据权利要求6所述的方法,其中,所述将所述待存储键值对存储至由与所述待存储关键字对应的待存储哈希索引所表征的地址,得到所述目标哈希表,包括:
在确定所述原始哈希表中由与所述待存储关键字对应的待存储哈希索引所表征的地址存储有键值对的情况下,获取与所述待存储哈希索引对应的链表;
将所述待存储键值对存储至与所述待存储哈希索引对应的链表的尾部,得到所述目标哈希表;以及
在确定所述原始哈希表中由与所述待存储关键字对应的待存储哈希索引所表征的地址未存储有所述键值对的情况下,将所述待存储键值对存储至由与所述待存储关键字对应的待存储哈希索引所表征的地址,得到所述目标哈希表。
8.根据权利要求1所述的方法,还包括:
在确定所述查询类型为范围查询的情况下,调用B+树索引接口;以及
根据B+树索引接口,调用所述目标存储引擎,以通过所述目标存储引擎确定针对所述查询请求的查询结果。
9.一种数据查询装置,包括:
第一获取模块,用于获取查询请求,其中,所述查询请求包括目标关键字;
第一确定模块,用于根据所述目标关键字,确定查询类型;
第一调用模块,用于在确定所述查询类型为等值查询的情况下,调用哈希索引接口,其中,所述哈希索引接口是在响应用于创建哈希索引的创建请求的情况下,创建的针对哈希索引的存储引擎接口;
第二调用模块,用于根据所述哈希索引接口,调用目标存储引擎,以通过所述目标存储引擎确定与所述目标关键字对应的目标哈希索引;以及
第二确定模块,根据所述目标哈希索引,确定针对所述查询请求的查询结果。
10.一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1~8中任一项所述的方法。
11.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现权利要求1~8中任一项所述的方法。
12.一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时用于实现权利要求1~8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110299688.8A CN113051268A (zh) | 2021-03-19 | 2021-03-19 | 数据查询方法、数据查询装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110299688.8A CN113051268A (zh) | 2021-03-19 | 2021-03-19 | 数据查询方法、数据查询装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113051268A true CN113051268A (zh) | 2021-06-29 |
Family
ID=76514072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110299688.8A Pending CN113051268A (zh) | 2021-03-19 | 2021-03-19 | 数据查询方法、数据查询装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113051268A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113468202A (zh) * | 2021-06-30 | 2021-10-01 | 深圳软牛科技有限公司 | 内存数据的筛选方法、装置、设备及存储介质 |
CN113641841A (zh) * | 2021-10-15 | 2021-11-12 | 支付宝(杭州)信息技术有限公司 | 数据编码方法、图数据存储方法、图数据查询方法及装置 |
CN113961514A (zh) * | 2021-12-20 | 2022-01-21 | 支付宝(杭州)信息技术有限公司 | 数据查询方法及装置 |
CN114356560A (zh) * | 2021-12-23 | 2022-04-15 | 北京中科网威信息技术有限公司 | 资源对象获取方法及*** |
CN114817272A (zh) * | 2022-06-30 | 2022-07-29 | 北京聚通达科技股份有限公司 | 消息处理方法、装置、电子设备及存储介质 |
WO2023030553A3 (zh) * | 2022-06-09 | 2023-04-27 | 中国公路工程咨询集团有限公司 | 公路图像分布式存储方法、搜索方法及装置 |
CN116861455A (zh) * | 2023-06-25 | 2023-10-10 | 上海数禾信息科技有限公司 | 事件数据处理方法、***、电子设备及存储介质 |
-
2021
- 2021-03-19 CN CN202110299688.8A patent/CN113051268A/zh active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113468202A (zh) * | 2021-06-30 | 2021-10-01 | 深圳软牛科技有限公司 | 内存数据的筛选方法、装置、设备及存储介质 |
CN113468202B (zh) * | 2021-06-30 | 2024-05-17 | 深圳软牛科技有限公司 | 内存数据的筛选方法、装置、设备及存储介质 |
CN113641841A (zh) * | 2021-10-15 | 2021-11-12 | 支付宝(杭州)信息技术有限公司 | 数据编码方法、图数据存储方法、图数据查询方法及装置 |
CN113961514A (zh) * | 2021-12-20 | 2022-01-21 | 支付宝(杭州)信息技术有限公司 | 数据查询方法及装置 |
CN113961514B (zh) * | 2021-12-20 | 2022-03-08 | 支付宝(杭州)信息技术有限公司 | 数据查询方法及装置 |
CN114356560A (zh) * | 2021-12-23 | 2022-04-15 | 北京中科网威信息技术有限公司 | 资源对象获取方法及*** |
CN114356560B (zh) * | 2021-12-23 | 2022-09-16 | 北京中科网威信息技术有限公司 | 资源对象获取方法及*** |
WO2023030553A3 (zh) * | 2022-06-09 | 2023-04-27 | 中国公路工程咨询集团有限公司 | 公路图像分布式存储方法、搜索方法及装置 |
CN114817272A (zh) * | 2022-06-30 | 2022-07-29 | 北京聚通达科技股份有限公司 | 消息处理方法、装置、电子设备及存储介质 |
CN116861455A (zh) * | 2023-06-25 | 2023-10-10 | 上海数禾信息科技有限公司 | 事件数据处理方法、***、电子设备及存储介质 |
CN116861455B (zh) * | 2023-06-25 | 2024-04-26 | 上海数禾信息科技有限公司 | 事件数据处理方法、***、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11392599B2 (en) | Multi-tenancy for structured query language (SQL) and non structured query language (NOSQL) databases | |
CN113051268A (zh) | 数据查询方法、数据查询装置、电子设备及存储介质 | |
CN106202207B (zh) | 一种基于HBase-ORM的索引及检索*** | |
US9471711B2 (en) | Schema-less access to stored data | |
US9817858B2 (en) | Generating hash values | |
US20170308621A1 (en) | Hash-based efficient secondary indexing for graph data stored in non-relational data stores | |
US11030242B1 (en) | Indexing and querying semi-structured documents using a key-value store | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
CN106687955B (zh) | 简化将数据从数据源转移到数据目标的导入过程的调用 | |
US10509773B2 (en) | DBFS with flashback archive | |
US9218394B2 (en) | Reading rows from memory prior to reading rows from secondary storage | |
US10585720B1 (en) | Method and system for executing application programming interface (API) requests based on union relationships between objects | |
US11514697B2 (en) | Probabilistic text index for semi-structured data in columnar analytics storage formats | |
US10417058B1 (en) | Method and system for executing application programming interface (API) requests based on parent-child object relationships | |
US10157234B1 (en) | Systems and methods for transforming datasets | |
US10866960B2 (en) | Dynamic execution of ETL jobs without metadata repository | |
US11416458B2 (en) | Efficient indexing for querying arrays in databases | |
CN113094387A (zh) | 一种数据查询方法、装置、电子设备及机器可读存储介质 | |
US8396858B2 (en) | Adding entries to an index based on use of the index | |
US20170132289A1 (en) | Database entity analysis | |
US11188594B2 (en) | Wildcard searches using numeric string hash | |
CN117421302A (zh) | 一种数据处理方法及相关设备 | |
CN112835932B (zh) | 业务表的批量处理方法及装置、非易失性存储介质 | |
US20230138113A1 (en) | System for retrieval of large datasets in cloud environments | |
CN114064729A (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 |