CN117171161A - 数据查询方法及装置 - Google Patents
数据查询方法及装置 Download PDFInfo
- Publication number
- CN117171161A CN117171161A CN202310915259.8A CN202310915259A CN117171161A CN 117171161 A CN117171161 A CN 117171161A CN 202310915259 A CN202310915259 A CN 202310915259A CN 117171161 A CN117171161 A CN 117171161A
- Authority
- CN
- China
- Prior art keywords
- query
- data
- target
- data cube
- nodes
- 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
- 238000000034 method Methods 0.000 title claims abstract description 105
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 52
- 230000008569 process Effects 0.000 claims abstract description 38
- 238000005259 measurement Methods 0.000 claims description 17
- 238000012216 screening Methods 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 description 20
- 238000013138 pruning Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 230000004927 fusion Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 206010020772 Hypertension Diseases 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 4
- 230000017531 blood circulation Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000035622 drinking Effects 0.000 description 4
- 230000000391 smoking effect Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004083 survival effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000008280 blood Substances 0.000 description 1
- 210000004369 blood Anatomy 0.000 description 1
- 238000011960 computer-aided design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003064 k means clustering Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种数据查询方法及装置,方法包括:基于目标数据库、历史查询过程中的第一查询字段以及条件熵相关性算法确定目标数据立方体;基于所述目标数据立方体,确定数据立方体元数据库;所述数据立方体元数据库包括至少一个树分支的树节点;基于一致性哈希算法以及不同树节点的访问量,将所述至少一个树分支中每个树分支中不同层级的父节点的数据,存储到不同的存储节点上;并将不同访问量的树节点的数据存储到不同的虚拟节点上;响应于用户端对第二查询字段的查询请求,从对应的存储节点上,查找所述第二查询字段对应的查询结果。基于此,实现对医学数据库的简单高效的进行数据查询。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及数据查询方法及装置。
背景技术
随着医疗数据量呈指数级的增长,医疗融合数据库在查询性能上逐渐不能支撑医学统计查询的需求。研究发现,医学数据的医疗融合数据库的统计查询的查询字段和查询条件重复率较高,但是现有的高性能数据库没有针对这种医学应用场景下,进行简单高效的数据查询方法。
发明内容
本发明提供一种数据查询方法及装置,用以解决现有技术中没有针对医学数据库的简单高效的数据查询方法,实现对医学数据库的简单高效的进行数据查询。
一种数据查询方法,所述方法包括:基于目标数据库、历史查询过程中的第一查询字段以及条件熵相关性算法确定目标数据立方体;所述条件熵相关性算法用于基于历史查询过程中字段或字段组合出现的次数,确定需要执行的目标数据立方体中字段之间的相关性;所述相关性用于需要执行的目标数据立方体中字段组合的筛选;基于所述目标数据立方体,确定数据立方体元数据库;所述数据立方体元数据库包括至少一个树分支的树节点;基于一致性哈希算法以及不同树节点的访问量,将所述至少一个树分支中每个树分支中不同层级的父节点的数据,存储到不同的存储节点上;并将不同访问量的树节点的数据存储到不同的虚拟节点上;响应于用户端对第二查询字段的查询请求,从对应的存储节点上,查找所述第二查询字段对应的查询结果。
在其中一个实施例中,所述基于一致性哈希算法以及不同树节点的访问量,将所述至少一个树分支中每个树分支中不同层级的父节点的数据,存储到不同的存储节点上;并将不同访问量的树节点的数据存储到不同的虚拟节点上,包括:通过将每个树分支中不同层级的父节点的哈希值与存储节点的哈希值按位异或,确定每个树分支中不同层级的父节点对应的存储节点;并基于确定的每个树分支中不同层级的父节点对应的存储节点,将每个树分支中不同层级的父节点的数据存储到不同的存储节点上;通过将不同访问量的树节点的数据访问量与虚拟节点的哈希值相乘,确定不同访问量的树节点对应的虚拟节点,将不同访问量的树节点的数据存储到对应的虚拟节点上。
在其中一个实施例中,所述一致性哈希算法对应的公式为:hash(s,k,n,m,p)=(((s.hash_code()^p1^p2^p3)*(k+1))%n+m*hashed_color(k)%n)%n,其中,s.hash_code()表示对存储节点s的身份标识进行哈希计算得到的整数值,^表示按位异或运算,p表示树节点,p1、p2和p3分别表示每个树分支中不同层级的父节点,hashed_color(k)表示对编号为k的虚拟节点进行哈希计算得到的整数值,n表示在预设时间段内树节点的数据量的大小,m表示在预设时间段内树节点的数据访问量的大小。
在其中一个实施例中,基于目标数据库、历史查询过程中的第一查询字段以及条件熵相关性算法确定目标数据立方体,包括:响应于对目标数据立方体的数据更新通知,基于预设时间段内的查询日志数据,从所述目标数据库确定所述查询日志数据中各第一查询字段的需要执行的目标数据立方体;基于所述需要执行的目标数据立方体以及条件熵相关性算法确定最终的目标数据立方体。
在其中一个实施例中,所述基于所述需要执行的目标数据立方体以及条件熵相关性算法确定最终的目标数据立方体,包括:基于所述需要执行的目标数据立方体中目标维度字段组合出现的第一次数、目标度量字段出现的第二次数、目标度量字段与所述目标维度字段组合联合出现的第三次数,以及所述目标维度字段组合和所述目标度量字段组成的第一组合在需要执行的目标数据立方体出现的总次数,结合条件熵公式,确定所述每个需要执行的目标数据立方体中字段之间的相关性;将所述相关性以及对应的第一查询语句标识信息,保存至数据立方体元数据库中;基于所述相关性,将每个需要执行的目标数据立方体中至少一个第一组合按顺序排列,并将所述至少一个第一组合中顺序大于第一预设阈值的字段组合确定为第二组合,并基于第二组合确定最终的目标数据立方体。
在其中一个实施例中,所述每个目标数据立方体中字段之间的相关性r1的计算公式为: 其中,M为每个需要执行的目标数据立方体中目标度量字段的总个数,N为每个需要执行的目标数据立方体中目标度量字段组合的总个数,count(d)为所述每个需要执行的目标数据立方体中目标维度字段组合d出现的第一次数,count(a)为所述每个需要执行的目标数据立方体中目标度量字段a出现的第二次数,count(a,d)为所述每个需要执行的目标数据立方体中目标度量字段a与目标维度字段组合d联合出现的第三次数,total为所述每个需要执行的目标数据立方体中所述目标维度字段组合和所述目标度量字段组成的第一组合出现的总次数。
在其中一个实施例中,所述方法还包括:基于数据立方体元数据库,建立所述至少一个树分支中各树分支中不同层次的树节点对应的访问权限优先级;并建立不同的用户与至少一个树分支的树节点的映射关系表。
本发明还提供一种数据查询装置,所述装置包括:第一确定模块,用于基于目标数据库、历史查询过程中的第一查询字段以及条件熵相关性算法确定目标数据立方体;所述条件熵相关性算法用于基于历史查询过程中字段或字段组合出现的次数,确定需要执行的目标数据立方体中字段之间的相关性;所述相关性用于需要执行的目标数据立方体中字段组合的筛选;第二确定模块,用于基于所述目标数据立方体,确定数据立方体元数据库;所述数据立方体元数据库包括至少一个树分支的树节点;存储模块,用于基于一致性哈希算法以及不同树节点的访问量,将所述至少一个树分支中每个树分支中不同层级的父节点的数据,存储到不同的存储节点上;并将不同访问量的树节点的数据存储到不同的虚拟节点上;查找模块,用于响应于用户端对第二查询字段的查询请求,从对应的存储节点上,查找所述第二查询字段对应的查询结果。
本发明还提供计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述数据查询方法的步骤。
本发明还提供存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述数据查询方法的步骤。
上述数据查询方法及装置,针对医疗融合数据库的统计查询的查询字段和查询条件重复率较高,通过将历史查询过程中查询的字段整理为数据立方体的形式,并保存数据立方体对应的数据立方体元数据库,从而便于下次接收到重复的查询字段时,可以直接到从数据立方体元数据库中定位到对应查询字段的信息,从而加快了查询速度。此外,在确定的数据立方体元数据库的基础上,通过一致性哈希算法,将数据立方体元数据库中各树分支的树节点的数据分散到不同的存储节点或者不同的虚拟节点,从而使数据量比较大的树节点的数据可以分散存储在不同的存储位置,从而分散了数据查询的压力,从而加快了数据查询的速度。并且针对医疗科研工作者进行数据探查时,没有一种方法能够简单快速地计算字段之间的相关性,从而影响了医学数据探查进度的情况,本发明的数据查询方法提出基于条件熵相关性算法以及历史查询过程中字段或字段组合出现的次数,确定对医学数据库进行计算得到的需要执行的目标数据立方体中字段之间的相关性,并基于所述相关性进行需要执行的目标数据立方体中字段组合的筛选;从而实现简单快速计算多个字段之间相关性,从而便于简单快速确定数据立方体,从而提高了后续对数据立方体中相关字段的数据探查以及查询的效率。
附图说明
图1为本发明提供的数据查询方法的流程示意图之一;
图2为本发明提供的数据查询方法的流程示意图之二;
图3为本发明提供的数据查询方法的流程示意图之三;
图4为本发明提供的数据查询方法的流程示意图之四;
图5为本发明提供的数据查询方法的流程示意图之五;
图6为本发明提供的数据立方体元数据库的示意图;
图7为本发明提供的数据查询方法的一框架示意图;
图8为本发明提供的确定需要执行的目标数据立方体的一框架示意图;
图9为本发明提供的数据立方体元数据库的确定过程的一框架示意图;
图10为本发明提供的数据查询装置的框架示意图;
图11为本发明提供的电子设备的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
为了便于理解,首先对发明的发明构思进行说明。
可以理解,由于医学数据的医疗融合数据库的统计查询的查询字段和查询条件重复率较高,并且针对医疗科研工作者进行数据探查时,没有一种方法能够简单快速地计算字段之间的相关性,以及所有的数据保存的位置比较集中,没有将数据访问量大的数据分散保存,从而影响了医学数据探查进度的情况,因此,现有的多数数据查询方法的应用场景和硬件设备也不适配医疗统计查询,因此现有的多数数据查询方法不适合用来解决医疗融合数据库的查询性能问题,所以需要一种解决医疗融合数据库查询性能的新技术手段。
有鉴于此,本发明提供了一种数据查询方法,用于进行医学数据库的数据查询。具体地,针对医疗融合数据库的统计查询的查询字段和查询条件重复率较高,采用预计算的方式来对重复查询进行合并,将历史查询过程中查询的字段整理为数据立方体的形式,并保存数据立方体对应的数据立方体元数据库,从而便于下次接收到重复的查询字段时,可以直接到从数据立方体元数据库中定位到对应查询字段的信息,从而加快了查询速度。此外,在确定的数据立方体元数据库的基础上,通过一致性哈希算法,将数据立方体元数据库中各树分支的树节点的数据分散到不同的存储节点或者不同的虚拟节点,从而使数据量比较大的树节点的数据可以分散存储在不同的存储位置,从而分散了数据查询的压力,从而加快了数据查询的速度。并且针对医疗科研工作者进行数据探查时,没有一种方法能够简单快速地计算字段之间的相关性,从而影响了医学数据探查进度的情况,本发明的数据查询方法提出基于条件熵相关性算法以及历史查询过程中字段或字段组合出现的次数,确定对医学数据库进行计算得到的需要执行的目标数据立方体中字段之间的相关性,并基于所述相关性进行需要执行的目标数据立方体中字段组合的筛选;从而实现简单快速计算多个字段之间的相关性,从而便于简单快速确定数据立方体,从而提高了后续对数据立方体中相关字段的数据探查以及查询的效率。
下面结合附图说明本发明提供的数据查询方法及装置。
图1为本发明提供的一种数据查询方法的流程示意图。可以理解,该数据查询方法可以由数据查询装置执行。其中,数据查询装置可以为一个计算机设备。
如图1所示,在一个实施例中,提出了一种数据查询方法,具体可以包括以下步骤:
步骤110,基于目标数据库、历史查询过程中的第一查询字段以及条件熵相关性算法确定目标数据立方体。
其中,目标数据库可以为医学数据库,例如可以为以下至少一项:医院信息系统(hospital information system,HIS)、临床信息系统(clinical information system,CIS)、实验室信息系统(laboratory information management System,LIS)、电子病历(electronic medical record,EMR)、医学影像存贮与传输系统(picture archiving andcommunication systems,PACS)、放射信息系统(radiology information system,RIS)、临床文档架构(computer aided design,CAD)。
如前所述,由于医学数据的医疗融合数据库的统计查询的查询字段和查询条件重复率较高,因此,可以先针对历史查询过程中出现的查询字段的信息进行统计与计算,并将统计与计算得到的数据以目标数据立方体的形式保存到相应的数据立方体元数据库中,从而使后续的查询请求中出现相同的查询字段时,可以从相应的数据立方体元数据库中快速的获取对应的目标数据立方体。
此外,需要说明的是,所述条件熵相关性算法用于基于历史查询过程中字段或字段组合出现的次数,确定需要执行的目标数据立方体中字段之间的相关性;所述相关性用于需要执行的目标数据立方体中字段组合的筛选。
其中,需要执行的目标数据立方体主要为与查询字段关联的数据对应的数据立方体,以及查询次数较多的字段对应的数据立方体。
可以理解,通过基于历史查询过程中字段或字段组合出现的次数,确定需要执行的目标数据立方体中字段之间的相关性,从而提供简单的进行相关性的计算方法,并且,通过该简单的计算相关性的方法计算得到的相关性,用于后续进行需要执行的目标数据立方体中字段组合的筛选,从而减少目标数据立方体中字段的数量,使对应的数据立方体元数据库的数据更加的简洁有效,从而使后续在接收到实际的查询请求时,从数据立方体元数据库中获取数据的数量减少,从而加快数据查询的速度。
步骤120,基于所述目标数据立方体,确定数据立方体元数据库;所述数据立方体元数据库包括至少一个树分支的树节点。
其中,数据立方体元数据库可以理解为一个树状结构的目标数据立方体库及其元数据信息,其中包含了至少一个查询字段的目标数据立方体。其中,每个目标数据立方体对应树状结构中的一个树节点,每个目标数据立方体为用于反映史查询过程中的第一查询字段对应的目标数据表、已计算好的信息及其元数据信息。其中,第一查询字段对应的目标数据表的元数据信息包括:表名和表扩展信息、表血脉流信息、列名和列扩展信息以及基本的列统计信息。其中,表血脉流信息可以表示第一查询字段对应的目标数据表在树状结构的目标数据立方体库中的索引信息。可以理解,再次接收到查询请求时对应的查询字段,可能与历史查询过程中的第一查询字段相同,因此通过第一查询字段对应的目标数据表的元数据信息,有助于计算机快速确定与查询请求中第一查询字段对应的数据表信息,从而有助于计算机快速的从相应的数据表中获取用户想要查询的第一查询字段的信息。
步骤130,基于一致性哈希算法以及不同树节点的访问量,将所述至少一个树分支中每个树分支中不同层级的父节点的数据,存储到不同的存储节点上;并将不同访问量的树节点的数据存储到不同的虚拟节点上。
其中,每个树分支中包含至少一个树节点,最底层的树节点可以被称为子节点,子节点上一层或者上多层的树节点即为不同层级的父节点。不同层级的父节点例如可以为最底层的子节点的父节点、祖父节点以及曾祖父节点。存储节点可以理解为物理存储节点,对应有身份标识(identity document,ID)或者网际互连协议地址(internet protocol,IP)。虚拟节点可以理解为对存储节点进一步划分的虚拟的存储空间。
可以理解,通常情况下,一致性哈希算法用于将不同的存储节点映射到哈希环上,哈希环的不同位置的标识不同,然后,将数据分为不同的数据片,使不同的数据片分布在不同的哈希环的不同位置对应的存储节点上。在本发明中,由于每个目标数据立方体对应树状结构中的一个树节点,每个目标数据立方体为用于反映历史查询过程在某一个查询字段或多个查询字段对应的目标数据表、已计算好的信息及其元数据信息,并且,由于有些查询字段对应的数据量或者数据查询量会较大,因此不同目标数据立方体对应的数据量或数据查询量不同,也就是说,不同的树节点对应的数据量或数据查询量不同。并且,由于处于同一个树分支中不同层级的父节点中可能包含同一个数据量比较大的查询字段,因此,为了避免将数据量大的查询字段对应的数据存储的过于集中,本发明将每个树分支中不同层级的父节点的数据,存储到不同的存储节点上;并通过将不同访问量的树节点的数据存储到不同的虚拟节点上,使访问量大的数据被分散存储在不同的虚拟节点上。
步骤140,响应于用户端对第二查询字段的查询请求,从对应的存储节点上,查找所述第二查询字段对应的查询结果。
其中,查询请求为对医学数据库的查询请求,第二查询字段可以为实时查询请求中的字段。所述查询请求中包括第二查询字段的查询条件。第二查询字段的查询条件用于对第二查询字段及其相关的字段组合的信息的查询。第二查询字段的查询条件例如可以为第二查询字段等于预设阈值的历史查询信息,或者第二查询字段的历史最大值,或者第二查询字段等于预设阈值的情况下,对应的相关字段的情况。
本发明提供的数据查询方法,针对医疗融合数据库的统计查询的查询字段和查询条件重复率较高,通过将历史查询过程中查询的字段整理为数据立方体的形式,并保存数据立方体对应的数据立方体元数据库,从而便于下次接收到重复的查询字段时,可以直接到从数据立方体元数据库中定位到对应查询字段的信息,从而加快了查询速度。此外,在确定的数据立方体元数据库的基础上,通过一致性哈希算法,将数据立方体元数据库中各树分支的树节点的数据分散到不同的存储节点或者不同的虚拟节点,从而使数据量比较大的树节点的数据可以分散存储在不同的存储位置,从而分散了数据查询的压力,从而加快了数据查询的速度。并且针对医疗科研工作者进行数据探查时,没有一种方法能够简单快速地计算字段之间的相关性,从而影响了医学数据探查进度的情况,本发明的数据查询方法提出基于条件熵相关性算法以及历史查询过程中字段或字段组合出现的次数,确定对医学数据库进行计算得到的需要执行的目标数据立方体中字段之间的相关性,并基于所述相关性进行需要执行的目标数据立方体中字段组合的筛选;从而实现简单快速计算多个字段之间相关性,从而便于简单快速确定数据立方体,从而提高了后续对数据立方体中相关字段的数据探查以及查询的效率。
在其中一个实施例中,如图2所示,上述步骤130具体可以包括以下步骤:
步骤210,通过将每个树分支中不同层级的父节点的哈希值与存储节点的哈希值按位异或,确定每个树分支中不同层级的父节点对应的存储节点;并基于确定的每个树分支中不同层级的父节点对应的存储节点,将每个树分支中不同层级的父节点的数据存储到不同的存储节点上。
其中,不同层级的父节点的哈希值以及存储节点的哈希值均可以基于预设的哈希函数确定,其中预设的哈希函数例如可以为信息摘要算法(message digest algorithm 5,MD5)或者安全散列算法(secure hash algorithm,SHA)。
可以理解,可以通过第一目标预设哈希函数将不同的存储节点映射至一个哈希圆环上的对应位置,对应位置的标识即为存储节点的哈希值。进一步地,可以使用与前述第一目标预设哈希函数相同的哈希函数,计算不同层级的父节点对应的哈希值,从而可以确定不同层级的父节点在哈希环上对应的存储节点,从而可以确定每个树分支中不同层级的父节点对应的存储节点。并且,为使同一树分支下不同层级的父节点的数据分散存储,可以通过使每个树分支中不同层级的父节点的哈希值与存储节点的哈希值按位异或实现。
具体地,在其中一个实施例中,该过程可以参考以下一致性哈希算法对应的公式中hash(s,k,n,m,p)的第一项((s.hash_code()^p1^p2^p3)*(k+1))%n实现。可以理解,该公式((s.hash_code()^p1^p2^p3)*(k+1))%n仅示例性地给出一个树分支中具有三层父节点p1、p2和p3的情况下对应的一致性哈希算法的计算过程,实际情况中,可以基于不同层次的父节点的个数增加异或项。可以理解,通过与虚拟节点编号相乘,以及对预设时间段内树节点的数据量n取余,可以使一个树节点的数据可以均匀的分布在不同虚拟节点上,实际应用场景中也可以采用其他方法使一个树节点的数据可以均匀的分布在不同虚拟节点上。
在其中一个实施例中,hash(s,k,n,m,p)=(((s.hash_code()^p1^p2^p3)*(k+1))%n+m*hashed_color(k)%n)%n,其中,s.hash_code()表示对存储节点s的身份标识进行哈希计算得到的整数值,^表示按位异或运算,p表示树节点,p1、p2和p3分别表示每个树分支中不同层级的父节点,hashed_color(k)表示对编号为k的虚拟节点进行哈希计算得到的整数值,n表示在预设时间段内树节点的数据量的大小,m表示在预设时间段内树节点的数据访问量的大小。
步骤220,通过将不同访问量的树节点的数据访问量与虚拟节点的哈希值相乘,确定不同访问量的树节点对应的虚拟节点,将不同访问量的树节点的数据存储到对应的虚拟节点上。
可以理解,可以通过第二目标预设哈希函数将不同的虚拟节点映射至一个哈希圆环上的对应位置,对应位置的标识即为虚拟节点的哈希值。进一步地,可以使用与前述第二目标预设哈希函数相同的哈希函数,计算不同访问量的树节点对应的哈希值,从而可以确定不同访问量的树节点在哈希环上对应的存储节点,从而可以确定不同访问量的树节点对应的存储节点。具体地,在其中一个实施例中,该过程可以基于上述公式hash(s,k,n,m,p)中的第二项m*hashed_color(k)%n实现,通过hashed_color(k)把虚拟节点映射到一个哈希环上,然后乘以m,让不同访问量的数据分布在虚拟节点对应哈希环中的位置,从而使不同访问量大小m的数据都分布不同的虚拟节点上,从而使数据分布更加均匀,不会使访问量大的数据都集中分布在一个虚拟节点中。
在其中一个实施例中,如图3所示,基于目标数据库、历史查询过程中的第一查询字段以及条件熵相关性算法确定目标数据立方体,包括以下步骤:
步骤310,响应于对目标数据立方体的数据更新通知,基于预设时间段内的查询日志数据,从所述目标数据库确定所述查询日志数据中各第一查询字段的需要执行的目标数据立方体。
其中,数据更新通知可以为基于预设的计算资源空闲的时间段定时发送的数据更新通知。其中,预设的计算资源空闲的时间段为计算机的计算资源空闲的时间段,例如可以为凌晨0点至凌晨5点。可以理解,为了能够使计算机在计算资源空闲的时间段内进行数据立方体元数据库的更新,可以通过设定在计算资源空闲的时间段内调度计算机进行预计算,从而加快预计算的进度。
其中,预设时间段内的查询日志数据可以为在数据立方体元数据库的数据更新通知发送之前的一段时间,例如可以为在数据立方体元数据库的数据更新通知发送之前的一个月或半年。
具体地,该步骤310包括步骤3110至步骤3130。
步骤3110,基于所述查询日志数据,从目标数据库中,获取所述查询日志数据中出现的至少一个中每个第一查询字段对应的第一数据表及其第一元数据;和/或,基于关联规则,确定与所述每个第一查询字段相关的且出现频率大于第二预设阈值的目标字段所在的第二数据表及其第二元数据。
其中,关联规则可以理解为基于已有的查询日志数据中获取的高频查询字段组合,确定的字段之间的关联关系。因此,可以将关联规则预先保存好,从而使计算机可以基于关联规则,确定与所述各第一查询字段相关的且出现频率大于预设阈值的目标字段所在的第二数据表及其第二元数据。
其中,第一元数据可以包括第一数据表的表名和表扩展信息、表血脉流信息以及第一查询字段对应的列名、列扩展信息和基本的列统计信息。第二元数据可以包括第二数据表的表名和表扩展信息、表血脉流信息以及与所述各第一查询字段相关的且出现频率大于预设阈值的目标字段对应的列名、列扩展信息和基本的列统计信息。
可以理解,目标数据库可以为医学数据库,而每个医学数据库中的每个数据表中保存的各个字段是具有一定相关性的数据,因此,可以通过第一查询字段所在的第一数据表,确定与所述第一查询字段相关的字段,从而进一步构成所述目标数据库的初始目标数据立方体。
步骤3120,对所述第一数据表以及所述第二数据表的字段进行层级维度剪枝、联合维度剪枝,并对层级维度剪枝、联合维度剪枝后的第一数据表和第二数据表的字段进行k-means聚类剪枝,得到所述目标数据库的初始目标数据立方体。
其中,层级维度指的是每个层级包含两个或更多个维度。为了便于理解,对层级维度剪枝进行举例说明,比如省市县,只会以省,省市,省市县出现,不会单独出现市、县。每个联合维度中包含两个或更多个维度,联合维度剪枝指的是在一个场景中,如果总是同时进行A、B、C三个维度的查询分析,而不会出现聚合A、B或者聚合C这些维度组合,那么就可以将聚合A、B或者聚合C对应的联合维度进行去除。k-means聚类剪枝指的是通过对层级维度剪枝、联合维度剪枝后的第一数据表和第二数据表的所有字段进行k-means聚类,从而将聚类得到的同一类的字段同一划分到一个目标数据立方体,从而减少目标数据立方体的数量,加快查询速度。
步骤3130,基于所述目标数据库的初始目标数据立方体以及所述查询日志数据,确定所述查询日志数据中各第一查询字段的需要执行的目标数据立方体。
具体地,该步骤3130包括步骤3131至步骤3132。
步骤3131,基于所述关联规则,在所述目标数据库的初始目标数据立方体中,确定所述至少一个第一查询字段的关联规则目标数据立方体;和/或,根据所述查询日志数据,确定所述目标数据库的初始目标数据立方体中,查询次数排名大于第三预设阈值的频繁项集目标数据立方体。
步骤3132,基于所述关联规则目标数据立方体和所述频繁项集目标数据立方体,确定所述查询日志数据中各第一查询字段的需要执行的目标数据立方体。
可以理解,通过该步骤可以优先处理查询次数较多或者具有关联性的查询语句,从而提高查询效率。
步骤320,基于所述需要执行的目标数据立方体以及条件熵相关性算法确定最终的目标数据立方体。
在其中一个实施例中,如图4所示,上述步骤320包括以下步骤:
步骤410,基于所述需要执行的目标数据立方体中目标维度字段组合出现的第一次数、目标度量字段出现的第二次数、目标度量字段与所述目标维度字段组合联合出现的第三次数,以及所述目标维度字段组合和所述目标度量字段组成的第一组合在需要执行的目标数据立方体出现的总次数,结合条件熵公式,确定所述每个需要执行的目标数据立方体中字段之间的相关性。
其中,所述每个需要执行的目标数据立方体中字段之间的相关性,可以理解为所述每个需要执行的目标数据立方体中各第一组合中的目标维度字段组合与目标度量字段之间的相关性。
其中,维度字段指的是描述性的字段,度量字段指的是最终效果评估或者统计计算的字段。本发明中可以简单的将数字字段或者标签字段作为度量。示例性地,维度字段例如可以为饮酒量、抽烟年数,医学度量字段例如可以为是否有高血压。
其中,每个需要执行的目标数据立方体中各目标维度字段组合与目标度量字段之间的相关性,可以理解为每个需要执行的目标数据立方体中至少一个第一组合中字段之间的相关性。可以理解,一个目标数据立方体中可以包含至少一个目标维度字段与至少一个目标度量字段,并且,一个目标维度字段组合包括一个目标维度字段或多个目标维度字段,因此,一个目标数据立方体中包含一个或多个目标维度字段组合,而每个目标维度字段组合可以与一个目标度量字段组成第一组合,因此,对应的第一组合也有至少一个,因此,可以针对一个目标数据立方体中中的每个第一组合计算对应的相关性,并将其保存到第一预计算缓存模块,便于后续根据每个第一组合的字段之间的相关性,进行字段组合的筛选。
此外,维度字段与度量字段对应的条件熵公式为 其中,D表示度量字段,A表示维度字段,H(D|A)表示在维度字段出现的情况下,对应的度量字段的不确定性。示例性地,H(D|A)比如可以表示在已知饮酒量和抽烟年数的条件下,患高血压的概率是多大。N为每个需要执行的目标数据立方体中目标度量字段组合的总个数,count(d)为所述每个需要执行的目标数据立方体中目标维度字段组合d出现的第一次数,count(a)为所述每个需要执行的目标数据立方体中目标度量字段a出现的第二次数,count(a,d)为所述每个需要执行的目标数据立方体中目标度量字段a与目标维度字段组合d联合出现的第三次数。
因此,根据上述条件熵公式结合信息增益的公式g(D,A)=H(D)-H(D|A),可以得到每个目标数据立方体中字段之间的相关性r1的计算公式为:
其中,M为每个需要执行的目标数据立方体中目标度量字段的总个数,total为所述每个需要执行的目标数据立方体中所述目标维度字段组合d和所述目标度量字段a组成的第一组合出现的总次数。
为了便于理解,下面结合示例说明上述每个目标数据立方体中字段之间的相关性r1的计算过程,假设一个目标数据立方体对应的{吸烟年数,每次饮酒量}的目标维度字段组合和是否患有高血压的目标度量字段的数据如下表所示:
则计算{吸烟年数,每次饮酒量}的维度组合和是否患有高血压之间的相关系数对应的过程如下:
/>
其中,({m1,n2},否)的个数为0,因此,为0。因此,
步骤420,将所述相关性以及对应的第一查询语句标识信息,保存至数据立方体元数据库中。
其中,第一查询语句标识信息用于标识所述相关性的查询条件,因此,当用户端输入的查询请求中的查询条件中包含第一查询语句标识信息时,即可从数据立方体元数据库中获取对应的相关性信息,从而便于用户进一步的进行数据探查。
步骤430,基于所述相关性,将每个需要执行的目标数据立方体中至少一个第一组合按顺序排列,并将所述至少一个第一组合中顺序大于第一预设阈值的字段组合确定为第二组合,并基于第二组合确定最终的目标数据立方体。
如前所述,一个目标数据立方体中包括至少一个第一组合,因为可以针对每个第一组合计算相关性,从而得到每个第一组合的目标维度字段组合与目标度量字段之间的相关性,从而可以基于相关性对至少一个第一组合进行排序,将所述至少一个第一组合中顺序大于第一预设阈值的字段组合确定为第二组合,并基于第二组合确定最终的目标数据立方体的字段组成,实现对目标数据立方体的数据的筛选,从而减少了目标数据立方体中相关性不强的字段,使目标数据立方体的字段关系更加简洁有效。
在其中一个实施例中,所述方法还包括:基于数据立方体元数据库,建立所述至少一个树分支中各树分支中不同层次的树节点对应的访问权限优先级;并建立不同的用户与至少一个树分支的树节点的映射关系表。
具体地,可以设置父节点对应的树节点的访问权限优先级高于子节点对应的访问权限优先级。
此外,不同的用户与至少一个树分支的树节点的映射关系表,用于反映不同用户对不同树分支的树节点的访问权限。
可以理解,通过设置上述访问权限优先级,对数据访问过程进行预警,限制非法的数据操作。通过设置上述映射关系表,对数据访问过程进行预警,限制非授权用户的访问。
在其中一个实施例中,如图5所示,上述步骤120包括以下至少一个步骤:
步骤510,基于预设的索引算子,确定所述最终的目标数据立方体中字段之间的索引标识及索引顺序,并将所述索引标识及索引顺序,以及对应的第二查询语句标识信息,保存至数据立方体元数据库中。
其中,第二查询语句标识信息用于标识目标数据立方体中字段之间的索引标识及索引顺序的查询条件,因此,当用户端输入的查询请求中的查询条件中包含第二查询语句标识信息时,即可从数据立方体元数据库中获取对应的字段之间的索引标识及索引顺序,从而有利于加快数据查询的进度。
步骤520,基于基本统计量算子,确定所述最终的目标数据立方体中字段的统计信息和数据分布分布信息,并将所述统计信息和数据分布信息,以及对应的第三查询语句标识信息,保存至数据立方体元数据库中。
第三查询语句标识信息用于标识所述最终的目标数据立方体中字段的统计信息和数据分布分布信息的查询条件,因此,当用户端输入的查询请求中的查询条件中包含第三查询语句标识信息时,即可从数据立方体元数据库中获取对应的字段的统计信息和数据分布分布信息,从而有利于加快数据查询的进度。
其中,所述第二组合的对应字段的统计信息包括以下至少一项:求和、计数、平均、最小值、最大值。数据分布分布信息包括以下至少一项:占比、方差、均方差、标准差、偏差、峰度。
步骤530,基于医学算子,确定所述最终的目标数据立方体中字段的医学统计指标,并将所述医学统计指标,以及对应的第四查询语句标识信息,保存至数据立方体元数据库中。
其中,医学统计指标为医学统计所需指标,包括以下至少一项:死亡率、年龄别死亡率、死因别死亡率、死因构成、发病率、患病率、病死率、治愈率、生存率、中位生存期。第四查询语句标识信息用于标识所述第二组合的医学统计指标的查询条件,因此,当用户端输入的查询请求中的查询条件中包含第四查询语句标识信息时,即可从数据立方体元数据库中获取对应的第二组合的医学统计指标,从而有利于加快数据查询的进度。
步骤540,对所述最终的目标数据立方体中相关的字段进行关联,得到无聚合的宽表,并将字段的关联关系确定为预关联算子,并将所述预关联算子以及对应的第五查询语句标识信息,保存至数据立方体元数据库中。
具体地,可以通过数据库中的join关联方法,对所述第一数据表和所述第二数据表进行关联。
可以理解,由于第一查询字段所在的数据表不只有一个,且基于关联规则确定的第二数据表也不只有一个,因此,基于上述步骤3110确定的第一数据表和第二数据表均可以有多个,因此,对所述第一数据表和所述第二数据表进行关联可以为对基于步骤3110确定的所有第一数据表和所有第二数据表进行关联,从而得到无聚合的宽表,从而为后续数据查询过程中直接从对应的无聚合的宽表中获取对应的数据做好准备,从而中一定程度上加快了数据查询的速度。
可以理解,通过将目标数据立方体中字段之间的索引标识及索引顺序保存到数据立方体元数据库,从而使计算机在接收到用户的查询请求时,可以快速地从数据立方体元数据库中获取字段在目标数据立方体中的索引,从而加快了数据查询的速度。同理,通过预先计算并保存统计信息、数据分布信息和医学统计指标,从而使后续接收到相同字段的统计信息、数据分布信息和医学统计指标的查询请求时,可以直接从相应的数据立方体元数据库获取相关的信息,减少了临时计算的时间,从而加快了数据查询的速度。
在其中一个实施例中,在所述基于所述最终的目标数据立方体,确定数据立方体元数据库之后,所述方法还包括:
基于层级结构以及最终的目标数据立方体的数据条数,依次将包含第一查询字段的目标数据立方体进行标记,得到第一查询字段的树状结构的目标数据立方体库。
其中,层级结构例如可以为(a)->(a,b)->(a,b,c)->(a,b,c,d)->(a,b,c,d,e)这样的树结构组成的层级结构,a、b、c、d、e分别表示一个字段,最上层对应的数据结构(a,b)对应的字段数最少,按照层级结构向下,对应的结合上述层级结构的示例,最终的目标数据立方体的数据条数例如可以为(a,b)中字段a、b对应的所有的数据条数。具体地,层级结构可以参考图6所示的内容,为了简洁,此处先不赘述。
具体地,可以按照层级结构,从上层到下层依次选择目标数据立方体的数据条数最少的目标数据立方体进行标记,并将标记的数据条数最少的目标数据立方体确定为树状结构的目标数据立方体库中的一个。
结合图6,若需要执行的目标数据立方体为圆圈,基本的目标数据立方体(basecuboid)为方框,如果检测到(a,b)存在目标数据立方体库中,那么在包含(a,b)的父级中选择数据条数最小的目标数据立方体,如(a,b,c)、(a,b,d)、(a,b,e)中数据条数最小的是(a,b,c),那么选择(a,b,c)标记,在包含(a,b,c)的父级中选择数据条数最小的cuboid,如(a,b,c,d),而(a,b,c,d)已经是base cuboid(a,b,c,d),因此,(a)->(a,b)->(a,b,c)->(a,b,c,d)->(a,b,c,d,e)就组成了一个完整的树分支,因此,可以将这个完整的树分支上打上触及的标记,具体地,上述示例过程中触及的标记可以参考图6中的黑色标记的圆圈或方框。可以理解,通过选择数据条数最小的目标数据立方体,进行标记,形成树分支,可以减少数据查询时需要查询的数据量,从而加快数据查询的速度。通过上述方式,把目标数据立方体库中零散的目标数据立方体都整理到一个树状结构中,从而便于后续基于目标数据立方体库中的目标数据立方体进行计算,从而形成具有层次结构性的数据立方体缓存机制。
在其中一个实施例中,所述基于预设的索引算子,确定所述最终的目标数据立方体中字段之间的索引标识及索引顺序,包括:
从所述最终的目标数据立方体中,确定所述最终的目标数据立方体中字段集合的最大父类的联合索引标识,并基于所述最终的目标数据立方体中各字段对应的数据的数量,确定所述最终的目标数据立方体中各数据表中的索引顺序。
具体地,可以遍历最终的目标数据立方体,如果最终的目标数据立方体的字段集合中的每一个字段都在同一张表中,则将对应字段抽取出来,取这些字段集合的最大父类,如cuboid1的维度集合{a1,a2,a3,a4},cuboid2的维度集合{a1,a2},a1、a2、a3、a4是同一张表A中的字段,那么对A建立最大父类{a1,a2,a3,a4}的联合索引,索引顺序由各字段对应的数据的数量决定,如{a1}的数量比{a2},{a3},{a4}的数量大,则把a1放在最前面。
在其中一个实施例中,在其中一个实施例中,在从数据立方体元数据库中,没有找到所述第二查询字段对应的目标数据立方体的情况下,所述方法还包括:
从所述数据立方体元数据库中,查找所述目标数据立方体的父级目标数据立方体,基于所述目标数据立方体的父级目标数据立方体确定所述查询条件的查询结果。
示例性地,用户请求查询字段(a,b)的信息时,可以通过遍历数据立方体元数据库的树状的血脉流结构,这时候有俩种情况:一种情况为字段(a,b)的信息存在于数据立方体元数据库中,直接返回(a,b)的缓存给用户,另一种情况为(a,b)的目标数据立方体不存在数据立方体元数据库中,那么可以寻找包含字段(a,b)信息的父级目标数据立方体,如在树状结构的目标数据立方体中的(a,b,c),从(a,b,c)对应的目标数据立方体中得到查询结果。
图6为本发明提供的数据立方体元数据库的示意图。其中,方框标识的是basecuboid,圆圈标识的是需要执行的目标数据立方体,黑色的方框和黑色的圆圈示例性给出了一个树分支上对应已标记的目标数据立方体。空心的圆圈标识的是已标记的需要执行的目标数据立方体,空心的方框标识的是已标记的base cuboid,带叉号的方框标识的是未标记的base cuboid,带叉号的方框标识的是未标记的需要执行的目标数据立方体。其中,已标记的需要执行的目标数据立方体和已标记的base cuboid表示即将参与预计算的目标数据立方体,未标记的需要执行的目标数据立方体和未标记的base cuboid表示不参与预计算的目标数据立方体。其中,(a)->(a,b)->(a,b,c)->(a,b,c,d)->(a,b,c,d,e)就组成了一个层级结构完整的树分支,若(a)表示第二查询字段对应的目标数据立方体,则其父级目标数据立方体为(a,b)。
图7为本发明提供的数据查询方法的一框架示意图。如图7所示,医学科研人员和医生可以提交带有查询字段和查询条件的查询请求,系统在接收到查询请求后会自动在树状结构的元数据库中查找(lookup)查询字段和查询条件相关的数据立方体。如果找不到相关的数据立方体,相关的查询字段和查询条件会被被动地增强,即可以从所述相关的数据立方体对应的父级目标数据立方体即时计算对应的信息;如果找到,则直接找到包含查询字段和查询条件的数据立方体进行计算或者已经计算好的信息。其中,所述元数据库可以定时自动执行,按数据立方体元数据库的树状结构从base cucboid开始往上依次执行。
图8为本发明提供的确定需要执行的目标数据立方体的一框架示意图。如图8所示,首先计算数据库中所有可达的cuboid(对应前文的第一数据表及其第一元数据和第二数据表及其第二元数据),并通过层次维度剪枝、联合维度剪枝和k-means聚类剪枝等技术生成初始目标数据立方体。然后,从初始目标数据立方体中挑选目标数据立方体加入需要执行的目标数据立方体中,一般有如下两种方式:1.通过SQL查询日志,根据查询访问量计数,将计数最多、即最频繁的查询结果(排名考前的k个,Top k)从初始目标数据立方体中构建频繁项集目标数据立方体(频繁查询cuboid),并加入到需要执行的需要执行的目标数据立方体列表中。2.通过关联规则挖掘,从SQL查询日志中发现具有关联性的查询语句,将相关的关联规则cuboid加入到需要执行的目标数据立方体中。可以理解,通过上述方式,优先处理计数较多或者具有关联性的查询语句,从而提高查询效率。同时,由于预先计算可达的cuboid并进行了剪枝,可以有效减少计算量,加快查询速度。
图9为本发明提供的数据立方体元数据库的确定过程的一框架示意图。如图9所示,通过将HIS、EMR、CIS等医学数据库中的数据结构映射到数据立方体元数据库,使得用户查询时可以在数据立方体元数据库中查找查询字段和查询条件,找到对应的目标数据立方体(cuboid),然后在对应的数据立方体缓存库中获取已经计算好的真实数据。
下面对本发明提供的数据查询装置进行描述,下文描述的数据查询装置与上文描述的数据查询方法可相互对应参照。
如图10所示,在一个实施例中,提供了一种数据查询装置,该数据查询装置可以包括:
第一确定模块1010,用于基于目标数据库、历史查询过程中的第一查询字段以及条件熵相关性算法确定目标数据立方体;所述条件熵相关性算法用于基于历史查询过程中字段或字段组合出现的次数,确定需要执行的目标数据立方体中字段之间的相关性;所述相关性用于需要执行的目标数据立方体中字段组合的筛选;
第二确定模块1020,用于基于所述目标数据立方体,确定数据立方体元数据库;所述数据立方体元数据库包括至少一个树分支的树节点;
存储模块1030,用于基于一致性哈希算法以及不同树节点的访问量,将所述至少一个树分支中每个树分支中不同层级的父节点的数据,存储到不同的存储节点上;并将不同访问量的树节点的数据存储到不同的虚拟节点上;
查找模块1040,用于响应于用户端对第二查询字段的查询请求,从对应的存储节点上,查找所述第二查询字段对应的查询结果。
本发明提供的数据查询装置,针对医疗融合数据库的统计查询的查询字段和查询条件重复率较高,通过将历史查询过程中查询的字段整理为数据立方体的形式,并保存数据立方体对应的数据立方体元数据库,从而便于下次接收到重复的查询字段时,可以直接到从数据立方体元数据库中定位到对应查询字段的信息,从而加快了查询速度。此外,在确定的数据立方体元数据库的基础上,通过一致性哈希算法,将数据立方体元数据库中各树分支的树节点的数据分散到不同的存储节点或者不同的虚拟节点,从而使数据量比较大的树节点的数据可以分散存储在不同的存储位置,从而分散了数据查询的压力,从而加快了数据查询的速度。并且针对医疗科研工作者进行数据探查时,没有一种方法能够简单快速地计算字段之间的相关性,从而影响了医学数据探查进度的情况,本发明的数据查询方法提出基于条件熵相关性算法以及历史查询过程中字段或字段组合出现的次数,确定对医学数据库进行计算得到的需要执行的目标数据立方体中字段之间的相关性,并基于所述相关性进行需要执行的目标数据立方体中字段组合的筛选;从而实现简单快速计算多个字段之间相关性,从而便于简单快速确定数据立方体,从而提高了后续对数据立方体中相关字段的数据探查以及查询的效率。
图11示例了一种电子设备的实体结构示意图,如图11所示,该电子设备可以包括:处理器(processor)1110、通信接口(communications interface)1120、存储器(memory)1130和通信总线1140,其中,处理器1110,通信接口1120,存储器1130通过通信总线1140完成相互间的通信。处理器1110可以调用存储器1130中的逻辑指令,以执行数据查询方法,该方法包括:基于目标数据库、历史查询过程中的第一查询字段以及条件熵相关性算法确定目标数据立方体;所述条件熵相关性算法用于基于历史查询过程中字段或字段组合出现的次数,确定需要执行的目标数据立方体中字段之间的相关性;所述相关性用于需要执行的目标数据立方体中字段组合的筛选;基于所述目标数据立方体,确定数据立方体元数据库;所述数据立方体元数据库包括至少一个树分支的树节点;基于一致性哈希算法以及不同树节点的访问量,将所述至少一个树分支中每个树分支中不同层级的父节点的数据,存储到不同的存储节点上;并将不同访问量的树节点的数据存储到不同的虚拟节点上;响应于用户端对第二查询字段的查询请求,从对应的存储节点上,查找所述第二查询字段对应的查询结果。
此外,上述的存储器1130中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-only memory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行本发明提供的数据查询方法,所述数据查询方法包括:基于目标数据库、历史查询过程中的第一查询字段以及条件熵相关性算法确定目标数据立方体;所述条件熵相关性算法用于基于历史查询过程中字段或字段组合出现的次数,确定需要执行的目标数据立方体中字段之间的相关性;所述相关性用于需要执行的目标数据立方体中字段组合的筛选;基于所述目标数据立方体,确定数据立方体元数据库;所述数据立方体元数据库包括至少一个树分支的树节点;基于一致性哈希算法以及不同树节点的访问量,将所述至少一个树分支中每个树分支中不同层级的父节点的数据,存储到不同的存储节点上;并将不同访问量的树节点的数据存储到不同的虚拟节点上;响应于用户端对第二查询字段的查询请求,从对应的存储节点上,查找所述第二查询字段对应的查询结果。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行本发明提供的数据查询方法,所述数据查询方法包括:基于目标数据库、历史查询过程中的第一查询字段以及条件熵相关性算法确定目标数据立方体;所述条件熵相关性算法用于基于历史查询过程中字段或字段组合出现的次数,确定需要执行的目标数据立方体中字段之间的相关性;所述相关性用于需要执行的目标数据立方体中字段组合的筛选;基于所述目标数据立方体,确定数据立方体元数据库;所述数据立方体元数据库包括至少一个树分支的树节点;基于一致性哈希算法以及不同树节点的访问量,将所述至少一个树分支中每个树分支中不同层级的父节点的数据,存储到不同的存储节点上;并将不同访问量的树节点的数据存储到不同的虚拟节点上;响应于用户端对第二查询字段的查询请求,从对应的存储节点上,查找所述第二查询字段对应的查询结果。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
可以理解,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种数据查询方法,其特征在于,所述方法包括:
基于目标数据库、历史查询过程中的第一查询字段以及条件熵相关性算法确定目标数据立方体;所述条件熵相关性算法用于基于历史查询过程中字段或字段组合出现的次数,确定需要执行的目标数据立方体中字段之间的相关性;所述相关性用于需要执行的目标数据立方体中字段组合的筛选;
基于所述目标数据立方体,确定数据立方体元数据库;所述数据立方体元数据库包括至少一个树分支的树节点;
基于一致性哈希算法以及不同树节点的访问量,将所述至少一个树分支中每个树分支中不同层级的父节点的数据,存储到不同的存储节点上;并将不同访问量的树节点的数据存储到不同的虚拟节点上;
响应于用户端对第二查询字段的查询请求,从对应的存储节点上,查找所述第二查询字段对应的查询结果。
2.根据权利要求1所述的数据查询方法,其特征在于,所述基于一致性哈希算法以及不同树节点的访问量,将所述至少一个树分支中每个树分支中不同层级的父节点的数据,存储到不同的存储节点上;并将不同访问量的树节点的数据存储到不同的虚拟节点上,包括:
通过将每个树分支中不同层级的父节点的哈希值与存储节点的哈希值按位异或,确定每个树分支中不同层级的父节点对应的存储节点;并基于确定的每个树分支中不同层级的父节点对应的存储节点,将每个树分支中不同层级的父节点的数据存储到不同的存储节点上;
通过将不同访问量的树节点的数据访问量与虚拟节点的哈希值相乘,确定不同访问量的树节点对应的虚拟节点,将不同访问量的树节点的数据存储到对应的虚拟节点上。
3.根据权利要求2所述的数据查询方法,其特征在于,所述一致性哈希算法对应的公式为:hash(s,k,n,m,p)=(((s.hash_code()^p1^p2^p3)*(k+1))%n+m*hashed_color(k)%n)%n,其中,s.hash_code()表示对存储节点s的身份标识进行哈希计算得到的整数值,^表示按位异或运算,p表示树节点,p1、p2和p3分别表示每个树分支中不同层级的父节点,hashed_color(k)表示对编号为k的虚拟节点进行哈希计算得到的整数值,n表示在预设时间段内树节点的数据量的大小,m表示在预设时间段内树节点的数据访问量的大小。
4.根据权利要求1所述的数据查询方法,其特征在于,基于目标数据库、历史查询过程中的第一查询字段以及条件熵相关性算法确定目标数据立方体,包括:
响应于对目标数据立方体的数据更新通知,基于预设时间段内的查询日志数据,从所述目标数据库确定所述查询日志数据中各第一查询字段的需要执行的目标数据立方体;
基于所述需要执行的目标数据立方体以及条件熵相关性算法确定最终的目标数据立方体。
5.根据权利要求4所述的数据查询方法,其特征在于,所述基于所述需要执行的目标数据立方体以及条件熵相关性算法确定最终的目标数据立方体,包括:
基于所述需要执行的目标数据立方体中目标维度字段组合出现的第一次数、目标度量字段出现的第二次数、目标度量字段与所述目标维度字段组合联合出现的第三次数,以及所述目标维度字段组合和所述目标度量字段组成的第一组合在需要执行的目标数据立方体出现的总次数,结合条件熵公式,确定所述每个需要执行的目标数据立方体中字段之间的相关性;
将所述相关性以及对应的第一查询语句标识信息,保存至数据立方体元数据库中;
基于所述相关性,将每个需要执行的目标数据立方体中至少一个第一组合按顺序排列,并将所述至少一个第一组合中顺序大于第一预设阈值的字段组合确定为第二组合,并基于第二组合确定最终的目标数据立方体。
6.根据权利要求5所述的数据查询方法,其特征在于,所述每个目标数据立方体中字段之间的相关性r1的计算公式为:
其中,M为每个需要执行的目标数据立方体中目标度量字段的总个数,N为每个需要执行的目标数据立方体中目标度量字段组合的总个数,count(d)为所述每个需要执行的目标数据立方体中目标维度字段组合d出现的第一次数,count(a)为所述每个需要执行的目标数据立方体中目标度量字段a出现的第二次数,count(a,d)为所述每个需要执行的目标数据立方体中目标度量字段a与目标维度字段组合d联合出现的第三次数,total为所述每个需要执行的目标数据立方体中所述目标维度字段组合和所述目标度量字段组成的第一组合出现的总次数。
7.根据权利要求1所述的数据查询方法,其特征在于,所述方法还包括:
基于数据立方体元数据库,建立所述至少一个树分支中各树分支中不同层次的树节点对应的访问权限优先级;并建立不同的用户与至少一个树分支的树节点的映射关系表。
8.一种数据查询装置,其特征在于,所述装置包括:
第一确定模块,用于基于目标数据库、历史查询过程中的第一查询字段以及条件熵相关性算法确定目标数据立方体;所述条件熵相关性算法用于基于历史查询过程中字段或字段组合出现的次数,确定需要执行的目标数据立方体中字段之间的相关性;所述相关性用于需要执行的目标数据立方体中字段组合的筛选;
第二确定模块,用于基于所述目标数据立方体,确定数据立方体元数据库;所述数据立方体元数据库包括至少一个树分支的树节点;
存储模块,用于基于一致性哈希算法以及不同树节点的访问量,将所述至少一个树分支中每个树分支中不同层级的父节点的数据,存储到不同的存储节点上;并将不同访问量的树节点的数据存储到不同的虚拟节点上;
查找模块,用于响应于用户端对第二查询字段的查询请求,从对应的存储节点上,查找所述第二查询字段对应的查询结果。
9.一种计算机设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项权利要求所述数据查询方法的步骤。
10.一种存储有计算机可读指令的存储介质,其特征在于,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至7中任一项权利要求所述数据查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310915259.8A CN117171161A (zh) | 2023-07-24 | 2023-07-24 | 数据查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310915259.8A CN117171161A (zh) | 2023-07-24 | 2023-07-24 | 数据查询方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117171161A true CN117171161A (zh) | 2023-12-05 |
Family
ID=88943863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310915259.8A Pending CN117171161A (zh) | 2023-07-24 | 2023-07-24 | 数据查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117171161A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117763207A (zh) * | 2024-02-22 | 2024-03-26 | 四川大学华西医院 | 一种皮肤专业二分类专病数据库建立的方法及系统 |
-
2023
- 2023-07-24 CN CN202310915259.8A patent/CN117171161A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117763207A (zh) * | 2024-02-22 | 2024-03-26 | 四川大学华西医院 | 一种皮肤专业二分类专病数据库建立的方法及系统 |
CN117763207B (zh) * | 2024-02-22 | 2024-04-30 | 四川大学华西医院 | 一种皮肤专业二分类专病数据库建立的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180276250A1 (en) | Distributed Image Search | |
CN111046034B (zh) | 管理内存数据及在内存中维护数据的方法和系统 | |
CN102782643B (zh) | 使用布隆过滤器的索引搜索 | |
CN106663056B (zh) | 文件系统中的元数据索引搜索 | |
US6405198B1 (en) | Complex data query support in a partitioned database system | |
US9411840B2 (en) | Scalable data structures | |
KR101137147B1 (ko) | 질의 강제 인덱싱 | |
JP7046172B2 (ja) | シャード・データベースのシャード・テーブルにレコードを記憶するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、シャード・データベースのシャード・テーブルからレコードを検索するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、ならびにシャード・データベースを記憶するためのシステム | |
Hua et al. | Locality-sensitive bloom filter for approximate membership query | |
US10754853B2 (en) | Virtual edge of a graph database | |
US20150199433A1 (en) | Method and system for search engine indexing and searching using the index | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
US20140310302A1 (en) | Storing and querying graph data in a key-value store | |
EP3767483A1 (en) | Method, device, system, and server for image retrieval, and storage medium | |
US20130191523A1 (en) | Real-time analytics for large data sets | |
US20150039629A1 (en) | Method for storing and searching tagged content items in a distributed system | |
CN107451208B (zh) | 一种数据搜索方法与装置 | |
CN107368527B (zh) | 基于数据流的多属性索引方法 | |
US9229960B2 (en) | Database management delete efficiency | |
CN111475105B (zh) | 监控数据存储方法、设备、服务器及存储介质 | |
WO2013046667A1 (ja) | 情報システム、その管理方法およびプログラム、データ処理方法およびプログラム、ならびに、データ構造 | |
CN117171161A (zh) | 数据查询方法及装置 | |
CN116431726A (zh) | 一种图数据处理方法、装置、设备及计算机存储介质 | |
US11868352B2 (en) | Systems and methods for spilling data for hash joins | |
CN113626446B (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 |