CN116166693B - 一种基于密态范围索引的数据查询方法、装置以及设备 - Google Patents
一种基于密态范围索引的数据查询方法、装置以及设备 Download PDFInfo
- Publication number
- CN116166693B CN116166693B CN202310454017.3A CN202310454017A CN116166693B CN 116166693 B CN116166693 B CN 116166693B CN 202310454017 A CN202310454017 A CN 202310454017A CN 116166693 B CN116166693 B CN 116166693B
- Authority
- CN
- China
- Prior art keywords
- data set
- node
- tree structure
- secret
- target
- 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
Links
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- 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/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
Abstract
本说明书公开了一种基于密态范围索引的数据查询方法、装置以及设备,通过在终端中以树结构存储包含密态数据及其对应的密态范围的基础数据组,在需查询目标密态数据时,基于该目标密态数据对应密态范围内的目标密态取值,从树结构中确定存储目标密态数据的基础数据组的目标节点对应的指定叶子节点,再从该指定叶子节点和根节点之间的路径上的各节点存储的基础数据组中,确定该目标密态取值落入的密态范围对应的基础数据组,将确定出的基础数据组中的密态数据作为查询到的目标密态数据。本方法无需根据目标密态取值,与该终端中存储的各密态范围进行遍历比对,即可确定出目标密态数据,降低了查询过程对计算资源的需求,保证了查询效率。
Description
技术领域
本说明书涉及计算机技术领域,尤其涉及一种基于密态范围索引的数据查询方法、装置以及设备。
背景技术
多方安全计算是指,针对无可信第三方的情况下,在多个非互信设备之间,在数据相互保密的前提下,实现数据的计算和融合。通常多方安全计算的各计算节点以加密存储的方式存储数据,即,计算节点中存储密态数据。多方安全计算通常提供了基本的加法、乘法、比较等计算,以适用于各种场景,例如,模型训练、采用模型进行预测等。
现有技术中,除了基于数据访问地址获取数据执行业务以外,通过分段函数构建数据范围关系,可以提高数据统计等场景中业务执行的效率,因此也被广泛应用。例如,假设某一数据表中存储有班级学生的考试成绩,通过分段函数可以构建不同分数范围与学生排名的对应关系,如60-61分的学生排名。在进行范围查询时,可以快速确定查询结果,如查询分数在60-85之间的学生排名范围。
但是,在多方安全计算场景下,由于计算节点存储的都密态数据,使得无法通过对基于明文运行分段函数构建数据范围的对应关系。如何在多方安全计算中实现对密态范围数据的查询,是目前亟待解决的问题。
基于此,本说明书提供一种基于密态范围索引的数据查询方法。
发明内容
本说明书提供一种基于密态范围索引的数据查询方法、装置以及设备,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供一种基于密态范围索引的数据查询的方法,所述方法应用于终端,所述终端以树结构存储若干基础数据组,一个基础数据组由密态范围及其对应的密态数据组成,所述树结构包含若干节点,每个节点中存储若干基础数据组,各基础数据组包含的密态范围互不相交,所述方法包括:
确定所需查询的目标密态数据对应密态范围内的目标密态取值;
在所述树结构中,确定存储包含所述目标密态取值的基础数据组的目标节点对应的指定叶子节点,并根据所述指定叶子节点以及根节点确定所述树结构中的路径;其中,所述指定叶子节点是所述目标节点对应的子树的叶子节点;
将所述路径中各节点存储的各基础数据组迁移至所述终端的缓存中存储;
将所述缓存中存储的各基础数据组的密态范围分别与所述目标密态取值进行比对,根据比对结果,确定所述目标密态取值落入的密态范围对应的基础数据组中包含的密态数据,作为查询到的所述目标密态数据。
本说明书提供一种基于密态范围索引的数据查询的装置,所述装置应用于终端,所述终端以树结构存储若干基础数据组,一个基础数据组由密态范围及其对应的密态数据组成,所述树结构包含若干节点,每个节点中存储若干基础数据组,各基础数据组包含的密态范围互不相交,所述装置包括:
取值确定模块,用于确定所需查询的目标密态数据对应密态范围内的目标密态取值;
节点确定模块,用于在所述树结构中,确定存储包含所述目标密态取值的基础数据组的目标节点对应的指定叶子节点,并根据所述指定叶子节点以及根节点确定所述树结构中的路径;其中,所述指定叶子节点是所述目标节点对应的子树的叶子节点;
路径确定模块,用于将所述路径中各节点存储的各基础数据组迁移至所述终端的缓存中存储;
查询模块,用于将所述缓存中存储的各基础数据组的密态范围分别与所述目标密态取值进行比对,根据比对结果,确定所述目标密态取值落入的密态范围对应的基础数据组中包含的密态数据,作为查询到的所述目标密态数据。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于密态范围索引的数据查询的方法。
本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述基于密态范围索引的数据查询的方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
通过在终端中以树结构存储包含密态数据及其对应的密态范围的基础数据组,在需查询目标密态数据时,基于该目标密态数据对应密态范围内的目标密态取值,从树结构中确定存储目标密态数据的基础数据组的目标节点对应的指定叶子节点,再从该指定叶子节点和根节点之间的路径上的各节点存储的基础数据组中,确定该目标密态取值落入的密态范围对应的基础数据组,将确定出的基础数据组中的密态数据作为查询到的目标密态数据。本方法无需根据目标密态取值,与该终端中存储的各密态范围进行遍历比对,即可确定出目标密态数据,降低了查询过程对计算资源的需求,保证了查询效率。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书提供的基于密态范围索引的数据查询的流程示意图;
图2为本说明书提供的树结构的示意图;
图3为本说明书提供的迭代压缩的树结构的示意图;
图4为本说明书提供的迭代压缩的树结构的示意图;
图5为本说明书提供的基于密态范围索引的数据查询的装置结构示意图;
图6为本说明书提供的对应于图1的电子设备示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
需要说明的是,本发明中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
随着数字经济的蓬勃发展,数据的价值已得到社会的广泛认可。在大数据背景下,由于数据可被复制,且复制成本较低,如果以明文的形式对数据进行开发和流通,会导致数据规模化泄露的风险急剧增大,甚至侵害个人隐私以及国家安全。
基于上述实际情况,为了克服数据容易复制这一问题,可以采用数据加密的方式,使得数据以密文形式流通,保证数据在流转、计算、融合等全链路安全可控。其中,非基准密文可以是数据经加密后的形式,非基准密文的多个持有方均无法从中获取原始数据的任何信息,一般情况下,可以利用非基准密文进行加法、乘法、逻辑运算、比较等密态计算,由于密文计算的输入输出都是非基准密文,且计算过程不会泄露(或仅有少量可容忍的泄露)输入输出信息。
为了进一步提高数据安全性,避免密态数据被复制,密态数据(即,密文形式的数据)在存储时,可采取将数据的存储地址设置为密态数据的方式,以密态访问地址的形式存储密态数据。也就是说,终端可采用基于密态访问地址的密态数据查询方式,来查询对应的数据。
目前,由于通过分段函数对数据进行预先处理,可以极大的提高基于取值范围进行数据统计的效率,因此分段函数被广泛应用于大数据处理场景。但是,在以密态数据的方式设置数据的存储地址的场景中,由于数据都是密态存储的,因此预先通过分段函数统计确定各取值范围应以密态形式存储,以保证分段函数确定出的各取值范围不会被外界轻易确定。并且,根据该取值范围的数据进行统计确定的统计值,也应该以密态形式存储。
这就使得在进行范围查询时,需要遍历所有密态形式的取值范围(即密态范围),才能确定范围查询的结果,这大大增加了密态形式下范围查询的复杂度。与预先通过分段函数进行数据处理,提高查询效率的初衷相违背。
尤其是,在分段函数确定的取值区间的数量较大的情况下,基于密态范围索引的数据查询对计算资源的需求较高,或需花费较长时间才可确定出目标密态数据,导致查询效率较低。例如,取值区间被分为10万份,那么需要遍历这10万个取值区间,确定需要的密态数据。而且,即使中途查询到了需要查询的密态范围,为了防止信息泄露,也需要对剩余密态范围进行访问操作,使得第三方无法通过确定遍历停止位置,确定密态范围的划分情况,也无法通过大量测试的方式确定各密态范围对应的密态数据的。
基于此,本说明书提供一种基于密态范围索引的数据查询方法,使得终端在不需要遍历自身存储的各密态范围分别对应的密态数据的情况下,即可查询到目标密态取值对应的密态数据,提高了查询效率,减少了基于密态范围索引的数据查询对计算资源的需求。
需要说明的是,前述多方安全计算的场景中,通常需基于密态数据来执行业务。但说明书所述的该密态数据查询方法,可应用于需基于密态访问地址来进行密态数据查询的场景中,该场景并不限定为多方安全计算场景。本说明书中的该密态数据查询方法的具体应用场景可根据需要进行设置,本说明书对此不做限制。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书提供的基于密态范围索引的数据查询方法的流程示意图,具体包括以下步骤:
S100:确定所需查询的目标密态数据对应密态范围内的目标密态取值。
区别于对分段函数处理后的数据进行密态存储后,进行范围查询时,需要遍历大量数据,对计算资源要求较高,查询效率较低。本说明书提供一种基于密态范围索引的数据查询方法,终端以树结构存储若干基础数据组,每组基础数据组由密态范围及其对应的密态数据组成。首先,可根据需要查询的目标密态取值,从该树结构中确定存储包含该目标密态取值的基础数据组的目标节点对应的指定叶子节点。再根据该指定叶子节点以及根节点确定该树结构中的路径,以及从该路径上各节点存储的基础数据组中,确定包含目标密态取值的密态范围,进而确定出目标密态数据。不需要对终端中存储的所有基础数据组分别与该目标密态取值进行匹配,即可确定出目标密态数据,提高了查询效率,减少了基于密态范围索引的数据查询时对计算资源的需求。
基于上述对本说明书所提供的基于密态范围索引的数据查询方法的简要说明,本说明书提供的基于密态范围索引的数据查询方法,可应用在终端需基于自身存储的密态范围对应的密态数据执行业务的场景中。例如,通过分段函数确定各分段的学生排名,在需要查询某个分数的学生排名是多少是,可确定该分数对应的目标密态取值,通过上述过程确定对应的密态形式的学生排名。该基于密态范围索引的数据查询方法,具体可由终端执行。其中,需要说明的是,该终端可为智能设备、服务器等电子设备,具体该终端对应的电子设备的类型可根据需要进行设置,本说明书对此不做限制。
基于此,该终端可确定需查询的目标密态数据对应密态范围内的目标密态取值。
具体的,该终端可接收业务请求,其中,该业务请求用于使终端至少基于自身存储的密态数据来执行业务。该业务可为查询业务,验证业务等等多种业务。
则该终端可对该业务请求进行解析,确定出执行该业务请求对应的业务需获取的目标密态数据对应密态范围内的目标密态取值,即查询值。则后续该终端可基于确定出的目标密态取值来确定目标密态数据。
S102:在所述树结构中,确定存储包含所述目标密态取值的基础数据组的目标节点对应的指定叶子节点,并根据所述指定叶子节点以及根节点确定所述树结构中的路径;其中,所述指定叶子节点是所述目标节点对应的子树的叶子节点。
在本说明书提供的一个或多个实施例中,该终端可基于该树结构来存储包含密态数据以及密态数据对应的密态范围的基础数据组。该终端可预先通过分段函数,确定若干取值范围以及每个取值范围对应的数据,例如,确定学生分数的若干取值范围,以及确定每个取值范围对应的学生排名,则对分数的取值范围加密得到的是各密态范围,而对每个取值范围对应的学生排名进行加密得到的是密态范围对应的密态数据。需要说明的是,通过分段函数确定出的各取值范围之间是互不相交的,并且,一般来说各取值范围是连续的。例如,学生分数为0-100分,若以1分为一个取值范围,通过分段函数可确定100个连续的不相交的取值范围。当然,即使取值范围之间是不连续也不影响该基于密态范围索引的数据查询的过程,但是为了方便描述,后续以取值范围互不相交且连续为基础进行说明。
通过以树结构存储各基础数据组,使得在需获取目标密态数据时,该终端可根据该树结构快速确定该目标密态数据。其原因是包含目标密态数据的基础数据组存储在该树结构的目标节点中,在需确定目标密态数据时,仅需获取包含该目标节点的路径中各节点存储的基础数据组,即可从获取到的基础数据组中确定出包含目标密态数据的基础数据组。
其中,针对树结构中的每个节点,该节点对应的子树的叶子节点和该树结构的根节点之间的路径中的各节点中包含有该节点。则基于上述思路,该终端可在确定出目标密态取值后,从目标节点对应的子树的叶子节点中,确定指定叶子节点,再确定指定叶子节点和该树结构的根节点之间的路径,以基于确定出的路径实现后续获取到的基础数据组中确定出包含目标密态数据的基础数据组的这一目的。
具体的,该终端中密态数据及其对应的密态范围以基础数据组形式进行存储,也就是说,一个基础数据组包含一个密态数据及其对应的密态范围。以密态数据为30,密态范围为60~61为例,则其对应的基础数据组可为(60-61,30)。
而如前所述的,本说明书中以树结构形式存储各基础数据组。其中,该树结构包含多个节点。具体可为根节点、中间节点和叶子节点等。而针对于每个节点,该节点中可存储一个或多个基础数据组,也可不存储基础数据组,具体该节点中如何将各基础数据组进行存储可根据需要进行设置,本说明书对此不作限制。
则该终端在确定出目标密态取值后,可确定包含该目标密态取值和包含该目标密态取值的目标节点对应的叶子节点之间的对应关系。如图2所示。
图2为本说明书提供的树结构的示意图。其中,椭圆为各节点,椭圆下的数字为该节点的标识,椭圆中的内容为该椭圆中存储的基础数据组。以叶子节点0为例,该叶子节点0中存储的数据组为(0~10,300),该数据组对应的密态范围为0~10,密态数据为300。
若目标密态取值为4,且预先存储了该密态范围0~10和叶子节点0之间的对应关系,则可确定叶子节点0为存储该目标密态取值4的目标节点对应的叶子节点,也就是说,目标节点在该叶子节点1和该树结构的根节点6之间的路径中。因此,该终端可基于预先存储的密态范围和目标节点对应的指定叶子节点的对应关系,确定目标密态取值对应的指定叶子节点,进而根据该指定叶子节点和该树结构的根节点确定路径。
当然,针对该终端自身存储的每个基础数据组,该终端可随机生成该基础数据组包含的密态范围和存储该基础数据组的目标节点对应的指定叶子节点的对应关系。也可为该终端在将基础数据组填充到该树结构中后,确定存储该基础数据组的目标节点,并确定该目标节点对应的子树,然后从该子树对应的叶子节点中,随机确定任一叶子节点,作为该目标节点对应的指定叶子节点。具体存储该基础数据组的目标节点对应的指定叶子节点,与该密态范围,之间的对应关系,可根据需要采用不同的方法确定并设置,本说明书对此不做限制。例如,该终端也可按照从上到下从左到右,密态范围从小到大的顺序,依次确定各基础数据组填入的节点,而确定密态范围与指定叶子节点的对应关系。
进一步地,以图2中节点2为目标节点对应的指定叶子节点为例,则终端需获取节点2和节点6之间的路径上的各节点存储的基础数据组。但显然节点5和节点2为空,则该终端在获取该路径上各节点的数据组时,可仅获取到包含基础数据组。在该情况下,若攻击方可确定该终端所执行的业务,以及确定终端在执行该业务时仅获取到(40~50,1)这个基础数据组。则攻击方可确定该(40~50,1)基础数据组中存储有执行业务所需的目标密态数据,从而建立业务与该目标密态数据之间的对应关系。可见,目标密态数据在一定程度上被泄露。则为了避免上述情况,针对树结构中的每个节点,该节点中可存储有无效的基础数据组。
具体的,针对每个基础数据组,该数据组可包含三部分内容:密态数据,密态数据对应的密态范围以及密态数据是否有效。
以密态数据为1,密态数据对应的密态范围为40~50,密态数据有效为1,密态数据无效为0为例,假设密态数据有效,则数据组可为(40~50,1,1)。若密态数据无效,则数据组可为(40~50,1,0)。其中,该密态数据有效,则该密态数据可用于执行业务。若密态数据无效,则该密态数据可为该终端随机生成的密态数据,无法基于该密态数据执行业务。
于是,基于上述基础数据组,该树结构中可存储有有效的基础数据组和无效的基础数据组,则在攻击方确定终端执行的业务的情况下,该终端获取到的基础数据组也为多个。由于攻击方无法确定终端中获取到的基础数据组是否为有效的基础数据组,也无法确定终端中的树结构存储的基础数据组是否均为有效的基础数据组的情况下,即使终端获取到的各基础数据组中的有效的基础数据组仅有一个。攻击方也无法确定业务和目标密态数据之间的对应关系,保证了信息安全。其中,有效的基础数据组为包含有效密态数据的基础数据组,无效的基础数据组为包含无效密态数据的基础数据组。
当然,具体如何表征该密态数据是否有效以及如何基于密态数据是否有效来确定基础数据组,可根据需要进行设置,本说明书对此不做限制。
S104:将所述路径中各节点存储的各基础数据组迁移至所述终端的缓存中存储。
在本说明书提供的一个或多个实施例中,如前所述的,存储包含该目标密态取值的密态范围的基础数据组的目标节点,为步骤S102中确定出的路径中的某个节点。也就是说,包含该目标密态数据的基础数据组,被存储在步骤S102中确定出的路径中的某个节点中。因此,该终端可获取该路径中各节点存储的各基础数据组。
基于此,该终端可将该路径中各节点存储的各基础数据组迁移至该终端的缓存中进行存储。
具体的,该终端可将该路径中各节点存储的各基础数据组进行复制,并将复制结果存储在该终端的缓存中,并将该树结构中的该路径中各节点存储的基础数据组进行删除。
其中,为了避免该树结构存储的数据在终端掉电后丢失,因此,终端通常会将该树结构对应的数据存放在非易失性存储器中。该非易失性存储器可以是硬盘,也可以是只读存储器(Read-Only Memory,ROM)。以树结构中的数据存储在硬盘中为例,则该终端可在将路径中的各节点存储的基础数据组复制到缓存中后,将树结构的该路径中各节点存储的基础数据组进行删除。
当然,该终端也可仅将该路径中各节点存储的各基础数据组复制并存储到终端的缓存中。其中,该缓存可为该终端中的易失性存储器,也可为该终端从自身的非易失性存储器中为执行业务划分出的用于存储数据组的单独存储空间。该易失性存储器可以是随机存取存储器(Random Access Memory,RAM)。具体该缓存对应的类型可根据需要进行设置,本说明书对此不做限制。
S106:将所述缓存中存储的各基础数据组的密态范围分别与所述目标密态取值进行比对,根据比对结果,确定所述目标密态取值落入的密态范围对应的基础数据组中包含的密态数据,作为查询到的所述目标密态数据。
在本说明书提供的一个或多个实施例中,该终端可在获取到该路径中各节点存储的各基础数据组后,确定目标密态数据。
具体的,该终端可确定缓存中存储的各基础数据组包含的密态范围,并将该目标密态取值分别与各基础数据组包含的密态范围进行匹配。则根据遍历各基础数据组得到的匹配结果,该终端可确定与该目标密态取值匹配的基础数据组。最后,该终端可确定该匹配的基础数据组中包含的密态数据,为查询到的目标密态数据。
也就是说,本说明书中该终端在确定目标密态数据时不需要将目标密态取值与该终端中存储的所有密态数据对应的密态范围进行匹配,而是先确定出指定叶子节点,该指定叶子节点与根节点之间的路径包含的各节点中包含了目标节点,而目标节点就是存储有包含该目标密态取值的密态范围的基础数据组的节点,因此只需要获取上述路径中各节点的基础数据组,以此来实现查询目标密态数据的这一目的。减少了查询时所需的计算资源,保证该目标密态数据的查询效率。
如图1所示的基于密态范围索引的数据查询方法,通过在终端中以树结构存储包含密态数据及其对应的密态范围的基础数据组,在需查询目标密态数据时,基于该目标密态数据对应密态范围内的目标密态取值,从树结构中确定存储目标密态数据的基础数据组的目标节点对应的指定叶子节点,再从该指定叶子节点和根节点之间的路径上的各节点存储的基础数据组中,确定该目标密态取值落入的密态范围对应的基础数据组,将确定出的基础数据组中的密态数据作为查询到的目标密态数据。本方法无需根据目标密态取值,与该终端中存储的各密态范围进行遍历比对,即可确定出目标密态数据,降低了查询过程对计算资源的需求,保证了查询效率。
另外,由于该终端获取该目标密态数据的目的是基于该目标密态数据执行业务。而执行业务可能会对该目标密态数据进行修改或者删除,当然也可以仅是获取目标密态数据,用于执行业务。例如,假设学生分数与学生排名出现变化,可能会改变某个分数取值范围对应的学生排名,则此时获取目标密态数据的目的就是修改密态数据,或者也可能是对分数的取值范围进行修改。或者也可能只是要查询某个分数对应的学生排名是多少,展示给用户查看。
因此,在步骤S106中,该终端确定出目标密态数据后,可对目标密态数据进行处理来执行业务。
具体的,该终端接收到的业务请求中可携带有处理方式,则该终端可确定对获取到的业务请求进行解析,确定该业务请求对应的处理方式,并基于该处理请求对应的处理方式,对该业务请求进行处理。
当然,该终端可预先存储有各业务和处理方式的对应关系,于是,该终端可直接根据确定出的业务标识,确定业务标识对应的业务,以及该业务对应的处理方式,再基于处理方式对该目标密态数据进行处理。具体该处理方式如何确定可根据需要进行设置,本说明书对此不做限制。
进一步的,若在确定出目标密态数据后,仅对目标密态数据进行处理,则攻击方可基于处理记录等信息可确定该目标密态数据所在的基础数据组和业务之间的对应关系,造成信息泄露。因此,在对目标密态数据进行处理的同时,该终端还可对该缓存中存储的其他基础数据组中的密态数据进行伪处理。其中,针对每个密态数据,对该密态数据进行伪处理的结果,即为该密态数据本身。当然,如果该业务请求仅仅是查询,那么对该目标密态数据也可执行伪处理。
则基于处理方式对目标密态数据进行处理,并对该缓存中存储的其他基础数据组的密态数据进行伪处理的方式,在攻击方获取到终端对应的日志的情况下,仍然无法确定业务与密态数据之间的对应关系,保证了信息安全。
更进一步的,由于在获取目标密态数据时,是将树结构中路径上各节点的基础数据组迁移到缓存中进行处理的,因此在获取目标密态数据之后,还需要将各基础数据组中至少部分回填至树结构中,以便后续任务执行时可继续根据该数据结构确定目标密态数据。
具体的,该终端可针对该指定叶子节点和根节点之间的路径中的每个节点,从自身的缓存中存储的各基础数据组中,选择若干基础数据组回填到该节点中。则该终端可根据回填后的路径,更新该树结构。
进一步的,若该终端历史上将包含目标密态数据的基础数据组迁移到缓存中,但在将缓存中的基础数据组回填至该节点中的过程中,未将该基础数据组回填到该树结构中,则即使从树结构中的路径对应的各节点中获取各基础数据组,获取到的各基础数据组中也不包含上述包含该目标密态数据的基础数据组。而若基于缓存中存储的各基础数据组,则终端可确定出该包含目标密态数据的基础数据组。
因此,该终端的缓存中可存有历史数据组,即历史上存储在缓存中但未回填至树结构中的基础数据组。
也就是说,该终端的缓存中可存储有两部分数据,一部分为历史迁移至该缓存且未回填至树结构的基础数据组,一部分为该终端本次基于目标密态取值确定的路径中各节点存储的基础数据组。
于是,该终端可确定该路径中各节点中存储的各基础数据组,作为当前数据组,并将该目标密态取值分别和该当前数据组和历史数据组进行匹配。则根据匹配结果,可确定包含目标密态数据的数据组。
更进一步的,包含目标密态数据的基础数据组被存储在该树结构的该路径的某个节点中,若直接将包含目标密态数据的基础数据组回填至该路径中,则可能出现攻击方通过多次监测该终端执行的业务,以及终端执行各业务的过程中获取的基础数据组对应的叶子节点,确定各业务以及存储执行各业务所需的基础数据组的目标节点对应的指定叶子节点之间的对应关系的情况,造成信息泄露。因此,为了避免上述情况的发生,在确定包含该目标密态数据的基础数据组后,该终端还可从该树结构包含的各叶子节点中,重新确定存储该基础数据组的目标节点,以及该目标节点对应的指定叶子节点。
具体的,该终端可从树结构包含的各叶子节点中,重新确定存储包含该目标密态数据的基础数据组的目标节点。
然后,该终端可根据重新确定的目标节点,从该目标节点对应的子树的叶子节点中,随机确定任一叶子节点,作为重新确定该目标节点对应的指定叶子节点。
最后,该终端可根据重新确定出的指定叶子节点,将该基础数据组回填至该路径中。即,当重新确定出的指定叶子节点与该节点匹配时,该终端可将该包含目标密态数据的基础数据组作为与该节点对应的基础数据组。其中,若该指定叶子节点与原叶子节点为相同节点,则该基础数据组可能被回填至该路径的叶子节点中,若叶子节点和原叶子节点不为相同节点,则该基础数据组可能不会被回填到该路径的叶子节点中。
基于上述方式,由于包含目标密态数据的基础数据组对应的目标节点和目标节点对应的指定叶子节点在每次执行业务的过程中都可能发生改变,因此,即使是攻击方多次监测终端执行的业务,以及终端执行业务的过程中获取基础数据组时对应的路径,也无法确定出该树结构中各路径中的节点中存储的基础数据组与各业务之间的对应关系,保证了信息安全。
当然,该终端也可直接从该树结构对应的各叶子节点中,随机确定任一叶子节点,作为该基础数据组对应的指定叶子节点,再从该指定叶子节点和根节点之间的路径中,选择任一节点作为目标节点。具体如何重新确定包含该目标密态数据的基础数据组对应的指定叶子节点可根据需要进行设置,本说明书对此不做限制。
另外,在将该基础数据组回填至该路径中的各节点的过程中,该基础数据组可针对该路径中的每个节点,从该缓存中存储的各数据组中,确定与该节点对应的基础数据组,以及将与该节点对应的基础数据组回填至该节点中。
又由于每个树结构的存储空间有限,因此,每个节点对应的存储空间是有限的,则将该节点对应的基础数据组回填至该节点的过程中,该终端可实时确定该节点中回填的基础数据组的数量,并根据确定出的数量,判断该节点回填的基础数据组是否达到该节点的存储上限。
若达到,则该终端可确定该节点回填完毕,并继续对该路径中的下一个节点回填基础数据组,直至将该路径中各节点均回填完毕为止。
若未达到,则该终端可继续对该节点回填基础数据组,直至将该节点回填的基础数据组达到该节点的存储上限为止。
进一步的,由于终端的缓存中存储的基础数据组对应的叶子节点可不完全相同,因此,在将缓存中存储的基础数据组回填至节点中时,若将该路径中各节点的基础数据组回填到根节点中,则缓存中存储的对应于其他叶子节点的基础数据组可能无法回填至该路径,且该路径中的叶子节点的存储空间尚未到达存储上限的情况出现。导致缓存中存储了较多数据,树结构的利用率也较低。因此,该终端可按照从叶子节点指向根节点的方向,从叶子节点开始,依次针对该路径中的每个节点,将该节点对应的基础数据组回填至该节点中。
于是,按照上述方式,可最大程度将该缓存中存储的基础数据组填充到该路径上的各节点中。避免了该缓存中存储较多基础数据组导致该缓存在对基础数据组进行处理时出现的处理缓慢的情况。保证了该树结构的利用率,同时也保证了查询效率。
更进一步的,针对每个节点,可能存在将该节点对应的基础数据组均填充到该节点中,但仍未达到该节点对应的存储上限的情况。在该情况下,若基于包含未到达存储上限的节点的路径将树结构进行更新,假设攻击方获取到树结构中各节点分别对应的剩余存储空间,则攻击方可基于各节点分别对应的剩余存储空间以及该终端执行各业务时获取的基础数据组对应的叶子节点的情况,可推测得到业务和各基础数据组之间的对应关系,造成信息泄露。因此,为了避免上述情况发生,当缓存中与该节点对应的基础数据组均回填至该节点时,且该节点回填的基础数据组仍未达到该节点的存储上限时,该终端可根据该节点的剩余存储空间,生成空数据组,并将生成的空数据组继续回填至该节点中。
其中,该空数据组可为该终端随机生成的,也可为该终端将自身缓存中存储的有效的基础数据组进行复制,并将复制结果中的用于表征该基础数据组中包含的密态数据是否有效的标志从有效更改为无效生成的。以密态数据为4,密态数据对应的密态范围为40~50,密态数据有效为1,密态数据无效为0为例,假设缓存中存储的有效数据组为(40~50,4,1),该终端可根据该有效数据组,生成无效数据组(40~50,4,0),作为空数据组。
于是,该节点中包含有该节点对应的基础数据组以及空数据组,由于攻击方无法确定到基础数据组与空数据组之间的区别,自然也无法确定各节点分别对应的数据存储情况,更无法基于数据存储情况来确定各节点与各基础数据组之间的对应关系。
需要说明的是,针对每个节点,该终端可预先规定该节点对应的存储上限,即,可存储几个基础数据组。则在根据该节点的剩余存储空间来确定空数据组时,该终端可基于该节点的剩余存储空间,确定该节点还可存储的基础数据组的数量,再根据该数量来生成空数据组。当然,该树结构中各节点分别对应的存储上限对应的基础数据组的数量可为相同数量,也可为不同数量。具体如何设置各节点分别对应的存储上限可根据需要进行设置,本说明书对此不做限制。
在本说明书提供的一个或多个实施例中,针对每个节点,还可能出现该节点已经回填完毕,但该缓存中仍然剩余有该节点对应的基础数据组的情况。在此情况下,该终端可继续将该节点对应的尚未回填至该节点中的剩余的基础数据组,继续存储在该缓存中,而将已回填至该节点中的基础数据组进行删除。则后续该终端可继续针对该路径对应的其他节点,确定其他节点对应的基础数据组,并将该终端中存储的基础数据组回填至该节点中。或者,在该终端下一次基于密态范围索引的数据查询,并将缓存中存储的各基础数据组回填至路径中时,将上述该节点对应的尚未回填至该节点中的剩余的基础数据组,进行回填。
当然,对于回填至该节点中的每个基础数据组,该终端还可采用将缓存中存储的该基础数据组对应的是否有效的标志进行更改的方式,来将缓存中存储的该有效的基础数据组更改为无效的基础数据组。具体在将基础数据组回填至节点后如何对缓存中存储的该基础数据组进行处理可根据需要进行设置,本说明书对此不做限制。
进一步的,针对每个基础数据组,该终端可在将该基础数据组回填至路径中的节点前,先确定各节点分别对应的基础数据组,再在将基础数据组回填至路径中的节点时,将各基础数据组回填至其对应的节点中即可,提高了数据回填的效率。
具体的,该终端可针对每个节点,确定该节点在该树结构中的位置,并针对每个基础数据组,判断该基础数据组对应的叶子节点与该节点在该树结构中的位置是否匹配。即,该基础数据组对应的叶子节点与根节点之间的路径,是否包含该节点。
若是,则该终端可将该基础数据组作为与该节点对应的基础数据组。
若否,则该终端可继续确定该节点对应的基础数据组。
更进一步的,由于该终端中存储的树结构中各节点存储的基础数据组中的密态范围和密态数据为密文形式,各节点分别对应的节点标识也为密文形式。因此,针对每个节点,在该节点的节点标识和各基础数据组的节点标识都为密文形式的情况下,显然无法直接确定该节点对应的基础数据组。基于此,本说明书提供一种基于节点在树结构中的层级和位次来确定节点对应的基础数据组的方式。
具体的,该终端可针对每个节点,按照从叶子节点指向根节点的方向,确定该节点对应的次序,并将该次序作为该节点的层级。同时,该终端可按照从左到右的顺序,确定该节点在自身层级中的各节点中的次序,并将该次序作为该节点的位次。
以图2中的节点0为例,该节点0的层级为0,次序为0。而对于图2中的节点4,该节点4的层级为1,次序为0。
然后,该终端可针对每个基础数据组,确定该基础数据组对应的叶子节点的明文信息,并确定该明文信息对应的二进制码。
最后,该终端可根据确定出的该节点的层级和次序,判断将该二进制码右移该层级位后的结果是否为该位次。
若是,则该终端可将该基础数据组作为与该节点对应的基础数据组。
若否,则该终端可将该基础数据组不作为与该节点对应的基础数据组。
以基础数据组对应的叶子节点的明文信息对应的二进制码为0010为例,假设该节点对应的层级为1,位次为1,则将该二进制码0010右移1位后的结果为0001,与该节点对应的位次恰好对应,则该基础数据组可作为与该节点对应的基础数据组。需要说明的是,叶子节点的明文信息可为该叶子节点在自身层级中的位次。
当然,上述以树结构为二叉树进行说明,因此在确定节点对应的基础数据组时,采用的是基于该叶子节点对应的明文信息对应的二进制码的方式。
而该树结构在实际应用过程中,其对应的结构可为三叉树、四叉树、多叉树等多种结构。显然,在该树结构为三叉树、四叉树、多叉树等多种结构的情况下,基于该基础数据组的叶子节点对应的明文信息的二进制码的方式不太恰当。因此,在将基础数据组进行回填时,该基础数据组可首先确定该树结构对应的树形结构的类型。再根据该类型,确定该类型对应的进制,再根据该类型对应的进制来确定各节点分别对应的基础数据组。
以树结构对应的树形结构的类型为三叉树为例,该终端可根据该三叉树类型,确定该三叉树类型对应的进制为三进制。于是,该终端可针对每个基础数据组,确定该基础数据组对应的叶子节点的明文信息的三进制码。假设基础数据组对应的叶子节点的明文信息对应的三进制码为0012,若该节点对应的层级为1,位次为1,则将该三进制码0012右移1位后的结果为0001,与该节点对应的位次恰好对应,则该基础数据组可作为与该节点对应的基础数据组。
具体该树结构对应的树形结构的类型,以及使用何种进制码来将数据组回填至路径中的各节点中,可根据需要进行设置,本说明书对此不做限制。
另外,如前所述的,为了避免信息泄露,树结构中可存储有有效的基础数据组和无效的基础数据组。而不论是有效的基础数据组还是无效的基础数据组,都可为与节点对应的基础数据组。因此,若仅基于基础数据组是否为节点对应的基础数据组,即可将基础数据组回填到节点中,则可能出现树结构中存储了大量的无效额基础数据组,而有较多有效的基础数据组被存储在缓存中,导致缓存的计算资源被占用的情况出现。基于此,为了避免上述情况的发生,在将基础数据组回填至节点的过程中,该终端还可基于基础数据组是否有效来将基础数据组进行回填。
具体的,针对该树结构中存储的每个基础数据组,该基础数据组中可包含三项内容:密态数据、密态数据对应的密态范围以及数据组的第一标识。其中,该第一标识用于表征该基础数据组中的密态数据是否有效,该第一标识可为有效标识符和无效标识符。针对每个基础数据组,若该基础数据组的第一标识为有效标识符,则该基础数据组为有效的基础数据组,该基础数据组中存储的密态数据也为有效密态数据。若该基础数据组的第一标识为无效标识符,则该基础数据组为无效的基础数据组,该基础数据组中存储的密态数据也为无效密态数据。该有效标识符和无效标识符可用数字表征,也可用字符串表征,还可用汉字表征。具体该有效标识符和无效标识符如何表征可根据需要进行设置,本说明书对此不做限制。
于是,该终端可针对前述确定出的每个与该节点对应的基础数据组,将该基础数据组的第二标识确定为有效标识符。其中,该第二标识用于表征该基础数据组与该节点是否对应。针对每个基础数据组,若该基础数据组的第二标识为有效标识符,则该基础数据组为该节点对应的基础数据组。若该基础数据组的第二标识为无效标识符,则该基础数据组不为该节点对应的基础数据组。该第二标识对应的有效标识符和无效标识符,与上述第一标识对应的有效标识符和无效标识符,可采用相同内容进行表征,也可采用不同内容进行表征。以第一标识的有效标识符为1为例,该第二标识的有效标识符也可为1,也可为0,还可为其他字符串等。具体该第一标识和第二标识的有效标识符和无效标识符如何表征可根据需要进行设置,本说明书对此不做限制。
则在确定出各基础数据组分别对应的第二标识后,该终端可从该缓存中存储的各基础数据组中,确定第一标识和第二标识均为有效标识符的基础数据组,并将确定出的第一标识和第二标识均为有效标识符的基础数据组作为各待选数据组。其中,针对每个待选数据组,该基础数据组既为有效数据组,还与该节点对应。
又因为节点对应的存储空间有限,则对该节点回填的过程中,可能出现待选数据组的数量与该节点对应的存储空间并不匹配的情况。而若节点中存储的数据组未达到节点的存储上限,则可能会导致信息泄露。因此,该终端可确定预设的基础数据组对应的存储上限,再基于该存储上限和各待选数据组的数量,判断各待选数据组的数量是否小于存储上限。
若不小于,则该终端可从各待选数据组中,确定指定数量的待选数据组回填到该节点中。
若小于,则除上述待选数据组外,该节点中还需存储一些无效的基础数据组。则该终端可根据该节点的存储上限和各待选数据组的数量,生成空数据组。则该终端可将生成的空数据组和各待选数据组回填到该节点中。
其中,空数据组的数量和待选数据组的数量之和为存储上限对应的数量。且空数据组对应的第一标识或第二标识中的任一一项为无效标识符。
则基于上述方式,可尽可能将该节点对应的有效的基础数据组回填至节点中,避免了缓存中存储较多数据导致查询效率较低的情况出现,保证了信息安全,提高了树结构的利用率。
进一步的,该终端可采用下述方式生成空数据组。
具体的,该终端可根据缓存中存储的各基础数据组分别对应的第一标识和第二标识,对各基础数据组进行排序。其中,以有效标识符和无效标识符均为数字为例,假设有效标识符比无效标识符大,若排序结果为从高到低进行排序,则排序结果中,从前至后依次为:第一标识和第二标识均为有效标识符的基础数据组,第一标识或第二标识为有效标识符的基础数据组,第一标识和第二标识均为无效标识符的基础数据组。
于是,该终端可根据该节点的存储上限,从排序结果中确定指定数量的基础数据组。其中,该节点的存储上限为可存储指定数量的基础数据组。
则确定出的指定数量的基础数据组中,包含各待选数据组,以及第一标识或第二标识为有效标识符的基础数据组。这些第一标识或第二标识为有效标识符的基础数据组对于该节点来说是无效的。则该终端可确定该指定数量的基础数据组中除各待选数据组外的其他基础数据组,作为空数据组,并确定空数据组的第三标识为无效标识符。
当然,该终端可采用随机生成包含第一标识为无效标识符的基础数据组,或随机生成第二标识为无效标识符的基础数据组,或者第一标识和第二标识均为无效标识符的基础数据组,作为空数据组的方式,来确定空数据组。也可采用将各基础数据组进行排序,并根据排序结果确定空数据组的方式,来确定空数据组。具体如何对生成空数据组可根据需要进行设置,本说明书对此不做限制。
更进一步的,在确定出空数据组和待选数据组后,该终端可针对每个空数据组,将该空数据组回填至该节点中时,将该节点中存储的该空数据组的第一标识更新为无效标识符。并针对每个待选数据组,当该待选数据组回填至该节点时,该终端可将缓存中存储的该待选数据组的第一标识更新为无效标识符。
则基于上述方式,对于被回填至节点中的待选数据组,其在缓存中被更新为无效的基础数据组,没有删除的动作,保证了信息安全。且在该缓存中的剩余计算资源较低的情况下,可将缓存中存储的无效数据组进行清空,提高了缓存中的资源利用率。对于被回填至节点中的空数据组,其在节点中对应的第一标识为无效标识符,若该节点中的该空数据组后续被迁移到缓存中时,终端可根据其对应的第一标识,来将该空数据组与其他有效数据组进行区分,以此来执行其他业务,保证了处理效率和信息安全。
另外,在本说明书中,若该终端通过该分段函数构建的取值范围的数量较多时,需要存储大量的密态查询范围与叶子节点的对应关系,不仅导致存储空间占用较多,也容易被攻击方窃取对应关系,并且进行范围查询时,需要遍历的基础数据组的数量较多,查询复杂度较高。因此,为了提高查询效率,进一步增加安全性,该终端可将该树结构中存储的基础数据组与叶子节点的对应关系,作为压缩数据组,并以新的树结构存储各压缩数据组。
具体的,在本说明书中,将存储基础数据组的树结构,作为上级树结构,并确定该上级树结构进行结构迭代压缩后的下级树结构。该下级树结构具体为何种结构,可以根据需要设置,例如,根据上级树结构的节点数量,进行数量缩减后,确定下级树结构的节点数量。
该服务器,在确定下级树结构后,可根据预设的指定数量,将各基础数据组划分为不同的数据集。其中,指定数量与缩减后的下级树结构的节点数量成反比,也就是说数据集中包含的基础数据组越多,则下级树结构压缩的越小,也就是下级树结构的节点数量越小。
之后,针对每个数据集,将该数据集中各基础数据组的密态范围与该上级树结构的叶子节点的对应关系,作为压缩数据组中的密态数据,将该数据集中各基础数据组的密态范围,作为压缩数据组中的密态范围,确定该数据集对应的压缩数据组。
然后,根据该下级树结构,将得到的各压缩数据组填充至该下级树结构的各节点中。
最后,确定各压缩数据组包含的密态范围与该下级树结构中叶子节点的对应关系,并存储。
并且,该终端可以对树结构进行多次迭代压缩,每次得到下级树结构后,还可以判断填充后的下级树结构的大小是否符合压缩结束条件,若是,则确定各压缩数据组包含的密态范围与该下级树结构中叶子节点的对应关系,若否,则将该下级树结构存储的压缩数据组,重新作为基础数据组,将该下级树结构,重新作为上级树结构,重新确定下级树结构和各压缩数据组,继续填充重新确定的下级树结构的各节点,直至该下级树结构的大小符合压缩结束条件为止。
其中,压缩结束条件可以为最下级的树结构的节点数量是否小于预设值,或者迭代压缩得到的各级树结构的数量是否大于预设值。例如,当最下级的树结构的节点数量小于10时,确定数据压缩的足够,停止迭代压缩。或者,当已经迭代压缩得到了10个树结构之后,在查询时需要从每级树结构中确定路径,影响查询复杂度,也会增加对缓存空间的占用,因此也可停止迭代压缩。
进一步地,在本说明书中,该终端在根据预设的指定数量,将各基础数据组划分为不同的数据集时,同一数据集中的各基础数据组包含的密态范围可以不连续,则确定出的压缩数据组需要包含每个基础数据组的密态范围与该基础数据组所在树结构的指定叶子节点的对应关系,如图3所示。
图3为本说明书提供的迭代压缩的树结构的示意图。虚线表示省略的树结构,上方的树结构为上级树结构,下方的树结构为下级树结构。可见下级树结构的叶子节点M1中存储两组压缩数据组,压缩数据组中存储有上级树结构中密态范围,与上级树结构中叶子节点的对应关系,即,(a1~a2,L11),(a3~a4,L12),(a7~a8,L30)以及(a10~a11,L2),而密态范围与密态数据的对应关系,只存在与上级树结构中。可见,由于压缩数据组中的密态范围是不连续,因此需要全量的记录压缩数据组对应的各密态范围。即下级树结构中压缩数据组,由于包含两个不连续的密态范围,因此该压缩数据组对应的密态范围也是不连续的,需要以(a1~a2,a3~a4)和(a7~a8,a10~a11)来表示。
可见,如果数据集中的基础数据组包含的密态范围不连续,则会导致压缩数据组的数据结构变得复杂,因此在本说明书中,该终端可从该密态取值极值开始,按照密态取值的大小顺序,从各密态范围中,确定该指定数量的相邻的密态范围,将确定出的各密态范围对应的基础数据组,作为划分至同一数据集的基础数据组。并且,该终端将该数据集中各基础数据组的密态范围进行范围合并,确定新的密态范围,作为压缩数据组中的密态范围。如图4所示。
图4为本说明书提供的迭代压缩的树结构的示意图。与图3内容类似,区别在于终端将连续的密态范围,作为一个数据集,使得压缩数据组可以整合各密态范围,确定一个新的密态范围。
采用上述过程,可以在迭代压缩时,将结构更大的树作为上级树结构,将结构更小的数作为下级树结构,如此反复进行数据压缩。并且,由于对于除了最上级的树结构来说,针对每级树结构,该级树结构的节点中存储了上一级树结构的密态范围与上一级树结构的叶子节点的对应关系。因此该终端只需要存储最下一级树结构中密态范围与该最下一级树结构的叶子节点的对应关系即可。
于是,在基于密态范围索引的数据查询时,该终端可按照树结构从下级到上级的顺序,依次针对每个树结构,根据该目标密态取值,以及该树结构中存储的数据,将该树结构中的至少部分数据存储至缓存中。并根据缓存中存储的数据,确定该树结构的上一级树结构中该目标密态取值对应的叶子节点,直至确定出最上级的树结构的叶子节点为止。
具体来说,针对每个树结构,当该树结构为最下级的树结构时,根据预先存储的最下级树结构中叶子节点与密态范围的对应关系,确定该目标密态取值在该树结构中对应的指定叶子节点。
然后,根据该指定叶子节点以及该树结构的根节点确定该树结构中的路径。
之后,将该路径中存储的各压缩数据组迁移至该树结构对应的缓存中存储。
最后,将该缓存中存储的各压缩数据组的密态范围分别与该目标密态取值进行比对,根据比对结果,确定该目标密态取值落入的密态范围对应的压缩数据组中包含的叶子节点,作为目标叶子节点,该目标叶子节点为该树结构的上级树结构中的叶子节点。
而当该树结构不是最下级的树结构时,确定在该树结构的下级树结构中确定出的目标叶子节点。
然后,根据该目标叶子节点以及该树结构的根节点确定该树结构中的路径。
之后,将该路径中存储的各压缩数据组迁移至该树结构对应的缓存中存储。
最后,将该缓存中存储的各压缩数据组的密态范围分别与该目标密态取值进行比对,根据比对结果,确定该目标密态取值落入的密态范围对应的压缩数据组中包含的叶子节点,作为目标叶子节点,该目标叶子节点为该树结构的上级树结构中的叶子节点。
也就是说,该终端根据目标密态取值,确定该目标密态取值在最下级的树结构中对应的叶子节点,获取该叶子节点到根节点路径上各节点的压缩数据组,并从中确定该目标密态取值在上一级树结构中的叶子节点,如此反复,针对每个树结构,从中获取一条路径中各节点的数据,以确定下一个树结构需要获取那条路径中的各节点,直到找到目标密态数据为止。
进一步地,在本说明书中,该终端在从各树结构中获取数据并存储在缓存之后,可在确定目标密态数据后,按照从上级到下级的顺序,依次将各树结构对应的缓存中存储的数据,回填至各树结构中。
更进一步地,该终端可针对每个树结构,为该树结构中所述目标密态取值对应的密态范围重新确定对应的叶子节点,按照重新确定叶子节点,将该树结构对应的缓存中存储的数据,回填至该树结构中。
另外,针对步骤S104中说明的该终端将树结构存储在非易失性存储器中,将路径中各节点的基础数据组存储至缓存中,由于该缓存中存储的数据可能也是后续进行查询时需要的数据,因此即使通过数据回填将缓存中的基础数据组回填至树结构,该缓存中也可能剩余基础数据组未能回填至树结构中,于是该终端也可在掉电前(如关机前)将缓存中的数据存储至非易失性存储器中。
需要说明的是,本说明书中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
需要说明的是,本说明书中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
基于同样思路,本说明书还提供一种基于密态范围索引的数据查询的装置,如图5所示。
图5为本说明书提供的基于密态范围索引的数据查询的装置,所述装置应用于终端,所述终端以树结构存储若干基础数据组,一个基础数据组由密态范围及其对应的密态数据组成,所述树结构包含若干节点,每个节点中存储若干基础数据组,各基础数据组包含的密态范围互不相交,包括:
取值确定模块400,用于确定所需查询的目标密态数据对应密态范围内的目标密态取值;
节点确定模块402,用于在所述树结构中,确定存储包含所述目标密态取值的基础数据组的目标节点对应的指定叶子节点,并根据所述指定叶子节点以及根节点确定所述树结构中的路径;其中,所述指定叶子节点是所述目标节点对应的子树的叶子节点;
路径确定模块404,用于将所述路径中各节点存储的各基础数据组迁移至所述终端的缓存中存储;
查询模块406,用于将所述缓存中存储的各基础数据组的密态范围分别与所述目标密态取值进行比对,根据比对结果,确定所述目标密态取值落入的密态范围对应的基础数据组中包含的密态数据,作为查询到的所述目标密态数据。
可选的,所述装置还包括:部署模块408,用于采用下述方法确定所述树结构各节点包含的基础数据组:通过预设的分段函数,将所述密态数据划分为多个密态范围,以及确定每个密态范围对应的密态数据,得到各基础数据组;根据所述树结构,将得到的各基础数据组填充至所述树结构的各节点中;针对每个基础数据组,根据该基础数据组回填后的节点,在所述树结构中的位置,确定该数据组对应的叶子节点;确定该基础数据组包含的密态范围与所述叶子节点的对应关系,并存储。
可选地,所述部署模块408,用于确定所述目标密态取值落入的密态范围,作为目标密态范围;根据存储的各密态范围与叶子节点的对应关系,确定所述目标密态范围对应的叶子节点,作为所述存储包含所述目标密态取值的基础数据组的目标节点对应的指定叶子节点。
可选地,所述部署模块408,还用于将存储基础数据组的所述树结构,作为上级树结构,并确定所述上级树结构进行结构迭代压缩后的下级树结构;根据预设的指定数量,将各基础数据组划分为不同的数据集;针对每个数据集,将该数据集中各基础数据组的密态范围与所述上级树结构的叶子节点的对应关系,作为压缩数据组中的密态数据,将该数据集中各基础数据组的密态范围,作为压缩数据组中的密态范围,确定该数据集对应的压缩数据组;根据所述下级树结构,将得到的各压缩数据组填充至所述下级树结构的各节点中;确定各压缩数据组包含的密态范围与所述下级树结构中叶子节点的对应关系,并存储。
可选地,所述部署模块408,用于判断填充后的下级树结构的大小是否符合压缩结束条件;若是,则确定各压缩数据组包含的密态范围与所述下级树结构中叶子节点的对应关系;若否,则将所述下级树结构存储的压缩数据组,重新作为基础数据组,将所述下级树结构,重新作为上级树结构,重新确定下级树结构和各压缩数据组,继续填充重新确定的下级树结构的各节点,直至所述下级树结构的大小符合压缩结束条件为止。
可选地,所述部署模块408,用于从所述密态取值极值开始,按照密态取值的大小顺序,从各密态范围中,确定所述指定数量的相邻的密态范围;将确定出的各密态范围对应的基础数据组,作为划分至同一数据集的基础数据组。
可选地,所述部署模块408,用于将该数据集中各基础数据组的密态范围进行范围合并,确定新的密态范围,作为压缩数据组中的密态范围。
可选地,所述节点确定模块402,用于按照树结构从下级到上级的顺序,依次针对每个树结构,根据所述目标密态取值,以及该树结构中存储的数据,将该树结构中的至少部分数据存储至缓存中;根据缓存中存储的数据,确定该树结构的上一级树结构中所述目标密态取值对应的叶子节点,直至确定出最上级的树结构的叶子节点为止。
可选地,所述节点确定模块402,用于当该树结构为最下级的树结构时,根据预先存储的最下级树结构中叶子节点与密态范围的对应关系,确定所述目标密态取值在该树结构中对应的指定叶子节点;根据所述指定叶子节点以及该树结构的根节点确定该树结构中的路径;将所述路径中存储的各压缩数据组迁移至该树结构对应的缓存中存储;将所述缓存中存储的各压缩数据组的密态范围分别与所述目标密态取值进行比对,根据比对结果,确定所述目标密态取值落入的密态范围对应的压缩数据组中包含的叶子节点,作为目标叶子节点,所述目标叶子节点为该树结构的上级树结构中的叶子节点。
可选地,所述节点确定模块402,用于当该树结构不是最下级的树结构时,确定在该树结构的下级树结构中确定出的目标叶子节点;根据所述目标叶子节点以及该树结构的根节点确定该树结构中的路径;将所述路径中存储的各压缩数据组迁移至该树结构对应的缓存中存储;将所述缓存中存储的各压缩数据组的密态范围分别与所述目标密态取值进行比对,根据比对结果,确定所述目标密态取值落入的密态范围对应的压缩数据组中包含的叶子节点,作为目标叶子节点,所述目标叶子节点为该树结构的上级树结构中的叶子节点。
可选地,所述查询模块406,还用于当查询到的所述目标密态数据时,按照从上级到下级的顺序,依次将各树结构对应的缓存中存储的数据,回填至各树结构中。
可选地,所述查询模块406,用于针对每个树结构,为该树结构中所述目标密态取值对应的密态范围重新确定对应的叶子节点;按照重新确定叶子节点,将该树结构对应的缓存中存储的数据,回填至该树结构中。
可选地,所述取值确定模块400,用于根据接收到的业务请求,确定所述业务请求中携带的查询值,作为所需查询的目标密态数据对应密态范围内的目标密态取值;所述查询模块406,还用于根据所述业务请求中携带的处理方式,对所述目标密态数据进行处理,以及对所述缓存中存储的其他基础数据组中的密态数据进行伪处理,其中,对所述其他基础数据组中的密态数据进行伪处理的结果为所述其他基础数据组中的密态数据本身;将处理后的至少部分基础数据组,回填至所述树结构的所述路径中的各节点。
可选地,所述查询模块406,用于依次针对所述路径中的每个节点,从所述缓存中存储的各基础数据组中,确定与该节点对应的基础数据组;将所述与该节点对应的基础数据组回填至该节点中;根据该节点回填的基础数据组的数量,判断该节点回填的基础数据组是否达到该节点的存储上限;若是,则确定该节点回填完毕,继续对所述路径中的下一个节点回填基础数据组,直至将所述路径中各节点均回填完毕为止;若否,则继续对该节点回填基础数据组。
可选地,所述查询模块406,还用于将处理后的至少部分基础数据组,回填至所述树结构的所述路径中的各节点之前,从所述树结构对应的各叶子节点中,重新确定所述目标密态数据的基础数据组对应的叶子节点。
可选地,所述查询模块406,用于针对所述缓存中存储的每个基础数据组,确定该基础数据组对应的叶子节点;判断该基础数据组对应的叶子节点到所述根节点的路径上是否存在该节点;若是,则确定该基础数据组与该节点对应;若否,则确定该基础数据组与该节点不对应。
可选地,所述查询模块406,还用于当所述缓存中与该节点对应的基础数据组均回填至该节点,且该节点回填的基础数据组仍未达到该节点的存储上限时,根据该节点的剩余存储空间生成空数据组;将生成的空数据组继续回填至该节点。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的基于密态范围索引的数据查询方法。
本说明书还提供了图6所示的电子设备的示意结构图。如图6所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所述的基于密态范围索引的数据查询方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元应用容器,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、***、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、***或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (19)
1.一种基于密态范围索引的数据查询方法,所述方法应用于终端,所述终端以树结构存储若干基础数据组,一个基础数据组由密态范围及其对应的密态数据组成,所述树结构包含若干节点,每个节点中存储若干基础数据组,各基础数据组包含的密态范围互不相交,所述方法包括:
根据接收到的业务请求,确定所述业务请求中携带的查询值,作为所需查询的目标密态数据对应密态范围内的目标密态取值;
在所述树结构中,确定存储包含所述目标密态取值的基础数据组的目标节点对应的指定叶子节点,并根据所述指定叶子节点以及根节点确定所述树结构中的路径;其中,所述指定叶子节点是所述目标节点对应的子树的叶子节点;
将所述路径中各节点存储的各基础数据组迁移至所述终端的缓存中存储;
将所述缓存中存储的各基础数据组的密态范围分别与所述目标密态取值进行比对,根据比对结果,确定所述目标密态取值落入的密态范围对应的基础数据组中包含的密态数据,作为查询到的所述目标密态数据;
其中,所述终端根据所述业务请求中携带的处理方式,对所述目标密态数据进行处理,以及对所述缓存中存储的其他基础数据组中的密态数据进行伪处理,其中,对所述其他基础数据组中的密态数据进行伪处理的结果为所述其他基础数据组中的密态数据本身;
将处理后的至少部分基础数据组,回填至所述树结构的所述路径中的各节点。
2.如权利要求1所述的方法,采用下述方法确定所述树结构各节点包含的基础数据组:
通过预设的分段函数,将所述密态数据划分为多个密态范围,以及确定每个密态范围对应的密态数据,得到各基础数据组;
根据所述树结构,将得到的各基础数据组填充至所述树结构的各节点中;
针对每个基础数据组,根据该基础数据组回填后的节点,在所述树结构中的位置,确定该数据组对应的叶子节点;
确定该基础数据组包含的密态范围与所述叶子节点的对应关系,并存储。
3.如权利要求2所述方法,在所述树结构中,确定存储包含所述目标密态取值的基础数据组的目标节点对应的指定叶子节点,具体包括:
确定所述目标密态取值落入的密态范围,作为目标密态范围;
根据存储的各密态范围与叶子节点的对应关系,确定所述目标密态范围对应的叶子节点,作为所述存储包含所述目标密态取值的基础数据组的目标节点对应的指定叶子节点。
4.如权利要求2所述的方法,所述方法还包括:
将存储基础数据组的所述树结构,作为上级树结构,并确定所述上级树结构进行结构迭代压缩后的下级树结构;
根据预设的指定数量,将各基础数据组划分为不同的数据集;
针对每个数据集,将该数据集中各基础数据组的密态范围与所述上级树结构的叶子节点的对应关系,作为压缩数据组中的密态数据,将该数据集中各基础数据组的密态范围,作为压缩数据组中的密态范围,确定该数据集对应的压缩数据组;
根据所述下级树结构,将得到的各压缩数据组填充至所述下级树结构的各节点中;
确定各压缩数据组包含的密态范围与所述下级树结构中叶子节点的对应关系,并存储。
5.如权利要求4所述的方法,确定各压缩数据组包含的密态范围与所述下级树结构中叶子节点的对应关系,具体包括:
判断填充后的下级树结构的大小是否符合压缩结束条件;
若是,则确定各压缩数据组包含的密态范围与所述下级树结构中叶子节点的对应关系;
若否,则将所述下级树结构存储的压缩数据组,重新作为基础数据组,将所述下级树结构,重新作为上级树结构,重新确定下级树结构和各压缩数据组,继续填充重新确定的下级树结构的各节点,直至所述下级树结构的大小符合压缩结束条件为止。
6.如权利要求4所述的方法,根据预设的数量,将各基础数据组划分为不同的数据集,具体包括:
从所述密态取值极值开始,按照密态取值的大小顺序,从各密态范围中,确定所述指定数量的相邻的密态范围;
将确定出的各密态范围对应的基础数据组,作为划分至同一数据集的基础数据组。
7.如权利要求6所述的方法,将该数据集中各基础数据组的密态范围,作为压缩数据组中的密态范围,具体包括:
将该数据集中各基础数据组的密态范围进行范围合并,确定新的密态范围,作为压缩数据组中的密态范围。
8.如权利要求4所述的方法,在所述树结构中,确定存储包含所述目标密态取值的基础数据组的目标节点对应的指定叶子节点,具体包括:
按照树结构从下级到上级的顺序,依次针对每个树结构,根据所述目标密态取值,以及该树结构中存储的数据,将该树结构中的至少部分数据存储至缓存中;
根据缓存中存储的数据,确定该树结构的上一级树结构中所述目标密态取值对应的叶子节点,直至确定出最上级的树结构的叶子节点为止。
9.如权利要求8所述的方法,根据缓存中存储的数据,确定该树结构的上一级树结构中所述目标密态取值对应的叶子节点,具体包括:
当该树结构为最下级的树结构时,根据预先存储的最下级树结构中叶子节点与密态范围的对应关系,确定所述目标密态取值在该树结构中对应的指定叶子节点;
根据所述指定叶子节点以及该树结构的根节点确定该树结构中的路径;
将所述路径中存储的各压缩数据组迁移至该树结构对应的缓存中存储;
将所述缓存中存储的各压缩数据组的密态范围分别与所述目标密态取值进行比对,根据比对结果,确定所述目标密态取值落入的密态范围对应的压缩数据组中包含的叶子节点,作为目标叶子节点,所述目标叶子节点为该树结构的上级树结构中的叶子节点。
10.如权利要求8所述的方法,根据缓存中存储的数据,确定该树结构的上一级树结构中所述目标密态取值对应的叶子节点,具体包括:
当该树结构不是最下级的树结构时,确定在该树结构的下级树结构中确定出的目标叶子节点;
根据所述目标叶子节点以及该树结构的根节点确定该树结构中的路径;
将所述路径中存储的各压缩数据组迁移至该树结构对应的缓存中存储;
将所述缓存中存储的各压缩数据组的密态范围分别与所述目标密态取值进行比对,根据比对结果,确定所述目标密态取值落入的密态范围对应的压缩数据组中包含的叶子节点,作为目标叶子节点,所述目标叶子节点为该树结构的上级树结构中的叶子节点。
11.如权利要求8所述的方法,所述方法还包括:
当查询到的所述目标密态数据时,按照从上级到下级的顺序,依次将各树结构对应的缓存中存储的数据,回填至各树结构中。
12.如权利要求11所述的方法,依次将各树结构对应的缓存中存储的数据,回填至各树结构中,具体包括:
针对每个树结构,为该树结构中所述目标密态取值对应的密态范围重新确定对应的叶子节点;
按照重新确定叶子节点,将该树结构对应的缓存中存储的数据,回填至该树结构中。
13.如权利要求1所述的方法,将处理后的至少部分基础数据组,回填至所述树结构的所述路径中的各节点,具体包括:
依次针对所述路径中的每个节点,从所述缓存中存储的各基础数据组中,确定与该节点对应的基础数据组;
将所述与该节点对应的基础数据组回填至该节点中;
根据该节点回填的基础数据组的数量,判断该节点回填的基础数据组是否达到该节点的存储上限;
若是,则确定该节点回填完毕,继续对所述路径中的下一个节点回填基础数据组,直至将所述路径中各节点均回填完毕为止;
若否,则继续对该节点回填基础数据组。
14.如权利要求13所述的方法,将处理后的至少部分基础数据组,回填至所述树结构的所述路径中的各节点之前,所述方法还包括:
从所述树结构对应的各叶子节点中,重新确定所述目标密态数据的基础数据组对应的叶子节点。
15.如权利要求13所述的方法,从所述缓存中存储的各基础数据组中,确定与该节点对应的基础数据组,具体包括:
针对所述缓存中存储的每个基础数据组,确定该基础数据组对应的叶子节点;
判断该基础数据组对应的叶子节点到所述根节点的路径上是否存在该节点;
若是,则确定该基础数据组与该节点对应;
若否,则确定该基础数据组与该节点不对应。
16.如权利要求14所述的方法,所述方法还包括:
当所述缓存中与该节点对应的基础数据组均回填至该节点,且该节点回填的基础数据组仍未达到该节点的存储上限时,根据该节点的剩余存储空间生成空数据组;
将生成的空数据组继续回填至该节点。
17.一种基于密态范围索引的数据查询装置,所述装置应用于终端,所述终端以树结构存储若干基础数据组,一个基础数据组由密态范围及其对应的密态数据组成,所述树结构包含若干节点,每个节点中存储若干基础数据组,各基础数据组包含的密态范围互不相交,所述装置包括:
取值确定模块,用于根据接收到的业务请求,确定所述业务请求中携带的查询值,作为所需查询的目标密态数据对应密态范围内的目标密态取值;
节点确定模块,用于在所述树结构中,确定存储包含所述目标密态取值的基础数据组的目标节点对应的指定叶子节点,并根据所述指定叶子节点以及根节点确定所述树结构中的路径;其中,所述指定叶子节点是所述目标节点对应的子树的叶子节点;
路径确定模块,用于将所述路径中各节点存储的各基础数据组迁移至所述终端的缓存中存储;
查询模块,用于将所述缓存中存储的各基础数据组的密态范围分别与所述目标密态取值进行比对,根据比对结果,确定所述目标密态取值落入的密态范围对应的基础数据组中包含的密态数据,作为查询到的所述目标密态数据,其中,所述查询模块,还用于根据所述业务请求中携带的处理方式,对所述目标密态数据进行处理,以及对所述缓存中存储的其他基础数据组中的密态数据进行伪处理,其中,对所述其他基础数据组中的密态数据进行伪处理的结果为所述其他基础数据组中的密态数据本身;将处理后的至少部分基础数据组,回填至所述树结构的所述路径中的各节点。
18.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~16任一项所述的方法。
19.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述权利要求1~16任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310454017.3A CN116166693B (zh) | 2023-04-21 | 2023-04-21 | 一种基于密态范围索引的数据查询方法、装置以及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310454017.3A CN116166693B (zh) | 2023-04-21 | 2023-04-21 | 一种基于密态范围索引的数据查询方法、装置以及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116166693A CN116166693A (zh) | 2023-05-26 |
CN116166693B true CN116166693B (zh) | 2023-07-25 |
Family
ID=86418588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310454017.3A Active CN116166693B (zh) | 2023-04-21 | 2023-04-21 | 一种基于密态范围索引的数据查询方法、装置以及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116166693B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8856138B1 (en) * | 2012-08-09 | 2014-10-07 | Google Inc. | Faster substring searching using hybrid range query data structures |
CN114090638A (zh) * | 2022-01-20 | 2022-02-25 | 支付宝(杭州)信息技术有限公司 | 基于隐私保护的联合数据查询方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103324642B (zh) * | 2012-03-23 | 2016-12-14 | 日电(中国)有限公司 | 为数据建立索引的***和方法以及数据查询方法 |
CN103699854B (zh) * | 2013-12-31 | 2017-02-22 | 华为技术有限公司 | 数据存储方法、数据访问方法及存储设备 |
US11341128B2 (en) * | 2015-11-12 | 2022-05-24 | Sap Se | Poly-logarithmic range queries on encrypted data |
-
2023
- 2023-04-21 CN CN202310454017.3A patent/CN116166693B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8856138B1 (en) * | 2012-08-09 | 2014-10-07 | Google Inc. | Faster substring searching using hybrid range query data structures |
CN114090638A (zh) * | 2022-01-20 | 2022-02-25 | 支付宝(杭州)信息技术有限公司 | 基于隐私保护的联合数据查询方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116166693A (zh) | 2023-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102226257B1 (ko) | 서비스 데이터를 블록체인 시스템에 기입하기 위한 방법 및 디바이스 | |
KR102098548B1 (ko) | 블록체인에서 블록 데이터를 검증하기 위한 방법 및 장치 | |
JP6940615B2 (ja) | データ処理方法およびデバイス | |
US20200160336A1 (en) | Method and apparatus for consensus verification | |
CN116167092B (zh) | 一种密态数据查询方法、装置、存储介质以及电子设备 | |
CN108959510B (zh) | 一种分布式数据库的分区级连接方法和装置 | |
CN109800582B (zh) | 可溯源的多方数据处理方法、装置及设备 | |
US11270227B2 (en) | Method for managing a machine learning model | |
CN111428880A (zh) | 隐私机器学习实现方法、装置、设备及存储介质 | |
CN116010992A (zh) | 一种数据处理方法、装置、可读存储介质及电子设备 | |
CN115129728A (zh) | 一种文件校验的方法及装置 | |
WO2024139320A1 (zh) | 一种数据排序方法、装置、设备及可读存储介质 | |
CN117421771A (zh) | 一种面向结构化数据的可搜索加密方法、装置及电子设备 | |
CN116166693B (zh) | 一种基于密态范围索引的数据查询方法、装置以及设备 | |
CN116108498A (zh) | 一种程序执行的方法、装置、存储介质及电子设备 | |
EP3648039A1 (en) | Random walking and cluster-based random walking method, apparatus and device | |
CN115934161A (zh) | 一种代码变更的影响分析方法、装置以及设备 | |
CN115563116A (zh) | 一种数据库表扫描方法、装置以及设备 | |
CN114676132A (zh) | 一种数据表关联方法、装置、存储介质及电子设备 | |
CN117473133A (zh) | 一种密态数据查询方法、装置、存储介质以及电子设备 | |
CN110009389A (zh) | 一种设备识别方法及装置 | |
CN117453969A (zh) | 一种密态数据查询方法、装置、存储介质及电子设备 | |
CN116366667A (zh) | 区块链网络的数据传输方法、装置、电子设备及存储介质 | |
CN116226902A (zh) | 一种数据查询方法、装置、存储介质及电子设备 | |
CN112749227A (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 |