本说明书一个或多个实施例涉及数据库,尤其涉及一种数据库、数据查询方法及装置、电子设备及存储介质。
背景技术:
1、为了确保数据的安全性并提供高可用性的数据服务,当前的数据库系统通过在物理上为每个分区数据存储多份副本来实现这一目标。副本具有全能型副本、日志型副本、加密投票型副本和只读型副本等类型,以满足不同业务的需求。全能型副本、日志型副本和加密投票型副本可以用于构建共识协议组,例如paxos协议组等;而只读型副本无法用于构建共识协议组。
2、相关技术中的查询方法往往针对用于存储数据的副本,而针对日志型副本的数据查询方法效率有待提高。
技术实现思路
1、有鉴于此,本说明书一个或多个实施例提供一种数据库、数据查询方法及装置、电子设备及存储介质。
2、为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
3、根据本说明书一个或多个实施例的第一方面,提出了一种数据库,所述数据库包括多个数据块;
4、所述数据块内存储有多条日志记录、一级索引信息和二级索引信息;
5、所述一级索引信息用于记录:包含所在数据块的至少一个数据块中每个数据块的数据范围的一级索引信息,其中,所述数据范围包括所述数据块内所有日志记录所针对的数据的范围;
6、所述二级索引信息用于记录:所在数据块内每条日志记录的存储位置。
7、在本说明书一个或多个实施例中,所述一级索引信息包括跳表;
8、对于所述数据库内第一个数据块,所述数据块内的跳表具有一个节点,所述节点用于记录所在数据块的数据范围;
9、对于所述数据库内前n-1个数据块中第i个数据块,所述数据块内的跳表的前i个节点用于一一对应记录前i个数据块的数据范围,其他节点用于在所述前i个节点内记录的数据范围的基础上形成多级跳表,最后一个节点用于记录所述前i个节点内记录的数据范围的并集,其中,i为大于1且不大于n-1的整数,所述n为大于2的整数;
10、对于所述数据块内除前n-1个数据块之外的其他数据块,所述数据块内的跳表的前n个节点用于一一对应记录以所在数据库块为最后一个数据块的连续n个数据块的数据范围,其他节点用于在所述前n个节点内记录的数据范围的基础上形成多级跳表,最后一个节点用于记录所述前n个节点内记录的数据范围的并集。
11、在本说明书一个或多个实施例中,所述数据库用于记录键值在预设范围内的数据的日志记录;
12、所述一级索引信息包括至少一个位图,所述至少一个位图与所述包含所在数据块在内的至少一个数据块一一对应,且每个位图用于记录对应数据块的数据范围。
13、在本说明书一个或多个实施例中,所述一级索引信息包括至少一个压缩位图。
14、在本说明书一个或多个实施例中,所述二级索引信息包括默克尔b树。
15、在本说明书一个或多个实施例中,所述数据库用于存储分布式数据库内的日志副本。
16、根据本说明书一个或多个实施例的第二方面,提出了一种数据查询方法,所述方法包括:
17、接收客户端发送的日志查询条件,并根据所述数据库内包含最新的数据块的至少一个数据块内的一级索引信息,确定存储有目标日志记录的至少一个目标数据块,其中,所述目标日志记录为符合所述日志查询条件的日志记录;
18、根据每个目标数据块内的二级索引信息确定所述目标数据块内的目标日志记录,并将得到的所有目标日志记录发送至所述客户端。
19、在本说明书一个或多个实施例中,所述一级索引信息呈跳表形式;所述根据所述数据库内包含最新的数据块的至少一个数据块内的一级索引信息,确定存储有目标日志记录的至少一个目标数据块,包括:
20、若所述数据库内的数据块的数量不大于n,则根据所述数据库内最新的数据块内的跳表的最后一个节点确定所述数据库内是否存在目标数据块,所述n为大于2的整数;
21、若所述数据库内存在目标数据块,则根据所述跳表内包含最后一个节点的至少一个节点确定所述数据块内的至少一个目标数据块。
22、在本说明书一个或多个实施例中,所述一级索引信息呈跳表形式;所述根据所述数据库内包含最新的数据块的至少一个数据块内的一级索引信息,确定存储有目标日志记录的至少一个目标数据块,包括:
23、若所述数据库内的数据块的数量大于n,则以所述数据库内最新的数据块为首个索引数据块,以n为步长确定至少两个索引数据块,直至得到记录有所述数据块内首个数据块的数据范围的索引数据块,所述n为大于2的整数;
24、根据每个索引数据块的跳表内包含最后一个节点的至少一个节点确定所述数据块内的至少一个目标数据块。
25、在本说明书一个或多个实施例中,所述二级索引信息包括默克尔b树;所述根据每个目标数据块内的二级索引信息确定所述目标数据块内的目标日志记录,并将得到的所有目标日志记录发送至所述客户端,包括:
26、对于每个目标数据块,根据所述目标数据块内的二级索引信息确定所述目标数据块内的目标日志记录,并根据所述目标数据块内的默克尔b树验证所述目标日志记录是否被篡改;
27、若得到的所有目标日志记录均未被篡改,则将得到的所有目标日志记录发送至所述客户端。
28、在本说明书一个或多个实施例中,所述方法还包括:
29、若得到的所有目标日志记录中存在被篡改的目标日志记录,则向所述客户端发送提示消息。
30、根据本说明书一个或多个实施例的第三方面,提出了一种数据查询装置,所述装置包括:
31、数据块筛选模块,用于接收客户端发送的日志查询条件,并根据所述数据库内包含最新的数据块的至少一个数据块内的一级索引信息,确定存储有目标日志记录的至少一个目标数据块,其中,所述目标日志记录为符合所述日志查询条件的日志记录;
32、日志查询模块,用于根据每个目标数据块内的二级索引信息确定所述目标数据块内的目标日志记录,并将得到的所有目标日志记录发送至所述客户端。
33、根据本说明书一个或多个实施例的第四方面,提出了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现第一方面所述方法的步骤。
34、根据本说明书一个或多个实施例的第五方面,提出了一种电子设备,包括:
35、处理器;
36、用于存储处理器可执行指令的存储器;
37、其中,所述处理器通过运行所述可执行指令以实现如第一方面所述的方法。
38、根据本说明书一个或多个实施例的第六方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。
39、本说明书的实施例提供的技术方案可以包括以下有益效果:
40、本说明书实施例所提供的数据库内包括多个数据块,每个数据块内均存储有多条日志记录、用于记录包含所在数据块的至少一个数据块的数据范围的一级索引信息、以及用于记录所述数据块内每条日志记录的存储位置的二级索引信息。因此该数据库可以通过一个数据块查询多个数据块的数据范围,从而在数据查询时以较高的效率确定符合数据查询条件的日志记录所在的数据块,并进一步通过这些数据块内的二级索引信息确定符合数据查询条件的日志记录的位置,提高了日志型副本的数据查询效率。