CN114817651B - 数据存储方法、数据查询方法、装置和设备 - Google Patents

数据存储方法、数据查询方法、装置和设备 Download PDF

Info

Publication number
CN114817651B
CN114817651B CN202210720497.9A CN202210720497A CN114817651B CN 114817651 B CN114817651 B CN 114817651B CN 202210720497 A CN202210720497 A CN 202210720497A CN 114817651 B CN114817651 B CN 114817651B
Authority
CN
China
Prior art keywords
data
segment
target
line segment
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210720497.9A
Other languages
English (en)
Other versions
CN114817651A (zh
Inventor
徐文栋
梁津
孙鹏宇
杨文博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202210720497.9A priority Critical patent/CN114817651B/zh
Publication of CN114817651A publication Critical patent/CN114817651A/zh
Application granted granted Critical
Publication of CN114817651B publication Critical patent/CN114817651B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供了一种数据存储方法、数据查询方法、装置和设备,涉及计算机技术领域,尤其涉及大搜索、信息检索等技术领域。具体实现方案为:将多个待存储数据划分为多个数据段,其中,多个数据段中的每个数据段包括至少一个待存储数据;针对每个数据段,对数据段中的待存储数据进行线性拟合,得到拟合线段和拟合线段的线段系数;确定数据段中每个待存储数据与拟合线段之间的偏差值;根据与每个数据段对应的线段系数和偏差值,生成索引数据;以及存储索引数据。本公开还提供了一种存储介质和程序产品。

Description

数据存储方法、数据查询方法、装置和设备
技术领域
本公开涉及计算机技术领域,尤其涉及大搜索、信息检索等技术领域。
背景技术
索引模块是搜索召回模块最重要的组成部分之一,负责完成对数据的获取,供后续排序、展现等使用。在建立索引时,可以通过资源标识符(如url id)对数据进行唯一标识。然后可以采用倒排索引结构,即按照资源标识符单调递增的顺序存放数据,查询时可根据查询算法定位待查询数据的资源标识符,并获取对应的待查询数据。另外,还可以通过特定的压缩算法对数据进行压缩,在获取数据时按照相应的解压算法进行解压。因此,查询算法复杂度和解压缩算法的复杂度共同影响数据检索的复杂度。
发明内容
本公开提供了一种数据存储方法、数据查询方法、装置、设备、存储介质以及程序产品。
根据本公开的一方面,提供了一种数据存储方法,包括:将多个待存储数据划分为多个数据段,其中,所述多个数据段中的每个数据段包括至少一个所述待存储数据;针对所述每个数据段,对所述数据段中的待存储数据进行线性拟合,得到拟合线段和所述拟合线段的线段系数;确定所述数据段中每个待存储数据与所述拟合线段之间的偏差值;根据与所述每个数据段对应的线段系数和偏差值,生成索引数据;以及存储所述索引数据。
根据本公开的另一方面,提供了一种数据查询方法,包括:获取待查询数据标识;在索引数据中查找与所述待查询数据标识对应的目标线段系数和目标偏差值,其中,所述索引数据是根据本公开实施例所述的方法存储的;以及根据所述目标线段系数和所述目标偏差值,确定目标数据。
根据本公开的另一方面,提供了一种数据查询装置,包括:划分模块,用于将多个待存储数据划分为多个数据段,其中,所述多个数据段中的每个数据段包括至少一个待存储数据;拟合模块,用于针对所述每个数据段,对所述数据段中的待存储数据进行线性拟合,得到拟合线段和所述拟合线段的线段系数;偏差值确定模块,用于确定所述数据段中每个待存储数据与所述拟合线段之间的偏差值;生成模块,用于根据与所述每个数据段对应的线段系数和偏差值,生成索引数据;以及存储模块,用于存储所述索引数据。
根据本公开的另一方面,提供了一种数据查询装置,包括:获取模块,用于获取待查询数据标识;查找模块,用于在索引数据中查找与所述待查询数据标识对应的目标线段系数和目标偏差值,其中,所述索引数据是根据本公开实施例所述的方法存储的;以及目标数据确定模块,用于根据所述目标线段系数和所述目标偏差值,确定目标数据。
本公开的另一个方面提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开实施例所示的方法。
根据本公开实施例的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行本公开实施例所示的方法。
根据本公开实施例的另一方面,提供了一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现本公开实施例所示方法的步骤。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1示意性示出了根据本公开实施例的可以应用数据存储方法、数据查询方法和装置的示例性应用场景;
图2示意性示出了根据本公开的实施例的数据存储方法的流程图;
图3示意性示出了根据本公开另一实施例的数据查询方法的流程图;
图4示意性示出了根据本公开另一实施例的划分数据段的方法的流程图;
图5示意性示出了根据本公开另一实施例的数据存储方法的流程图;
图6示意性示出了根据本公开另一实施例的查找目标线段系数和目标偏差值的方法的流程图;
图7示意性示出了根据本公开的实施例的在数据段中查找目标数据的方法的示意图;
图8示意性示出了根据本公开的实施例的确定线段系数的方法的示意图;
图9示意性示出了根据本公开的实施例的索引数据的示意图;
图10示意性示出了根据本公开实施例的数据存储装置的框图;
图11示意性示出了根据本公开实施例的数据查询装置的框图;以及
图12示意性示出了可以用来实施本公开的实施例的示例电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
以下将结合图1对本公开提供的可以应用数据存储方法、数据查询方法和装置的应用场景进行描述。
图1示意性示出了根据本公开实施例的可以应用数据存储方法、数据查询方法和装置的示例性应用场景100。需要注意的是,图1所示仅为可以应用本公开实施例的应用场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的应用场景100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供数据存储和数据检索的服务器。例如服务器105可以对用户利用终端设备101、102、103发送的数据进行存储,或者服务器105可以通过网络104获取除终端设备101、102、103之外其他设备提供的数据,并将获取的数据进行存储。又例如,服务器105可以接收用户的查询请求,根据查询请求查询对应的目标数据,并将目标数据反馈给终端设备。
在建立索引时,可以通过资源标识符(如url id)对数据进行唯一标识。然后可以采用倒排索引结构,即按照资源标识符单调递增的顺序存放数据,查询时可根据查询算法定位待查询数据的资源标识符,并获取对应的待查询数据。另外,还可以通过特定的压缩算法对数据进行压缩,在获取数据时按照相应的解压算法进行解压。因此,查询算法复杂度和解压缩算法的复杂度共同影响数据检索的复杂度。
需要说明的是,本公开实施例所提供的数据存储方法和数据检索方法一般可以由服务器105执行。相应地,本公开实施例所提供的数据存储装置和数据检索装置一般可以设置于服务器105中。本公开实施例所提供的数据存储方法和数据检索方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的数据存储装置和数据检索装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
在本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
以下将结合图2对本公开提供的数据存储方法进行描述。
图2示意性示出了根据本公开的实施例的数据存储方法的流程图。
如图2所示,该数据存储方法200a包括在操作S210a,将多个待存储数据划分为多个数据段。
其中,多个数据段中的每个数据段包括至少一个待存储数据。
根据本公开的实施例,待存储数据例如可以包括由非负整数表示的数据,例如资源标识符等。根据本公开的另一实施例,例如可以将待存储数据按照单调递增或单调递减的形式排序,然后再进行存储。
根据本公开的实施例,例如可以基于划分方案,将多个待存储数据划分为多个数据段。划分方案可以预先设置,也可以根据待存储数据的数据量等特征来选择合适的划分方案。
然后,针对每个数据段,执行操作S220 a ~S230 a。
在操作S220 a,对数据段中的待存储数据进行线性拟合,得到拟合线段和拟合线段的线段系数。
根据本公开的实施例,可以预先为每个待存储数据设置序号。可以根据待存储数据的序号和数值,确定原始点。例如,可以确定待存储数据的序号作为原始点的横坐标,确定待存储数据的数值作为原始点的纵坐标。或者,也可以确定待存储数据的序号作为原始点的纵坐标,确定待存储数据的数值作为原始点的横坐标。本实施例中,针对多个待存储数据可以确定多个原始点,每个待存储数据对应于一个原始点。针对该多个原始点,可以进行线性拟合,从而得到拟合线段。
根据本公开的实施例,拟合线段的线段系数例如可以包括拟合线段的起始位置、斜率和截距。其中,起始位置例如可以包括拟合线段起始点的横坐标或/或纵坐标。
示例性地,本实施例中,拟合线段可以表示为:
Figure 911053DEST_PATH_IMAGE001
其中,
Figure 31456DEST_PATH_IMAGE002
表示拟合线段,k表示斜率,a表示截距,x为横坐标。
例如,数据段中的待存储数据包括data1、data2、data3、data4、data5和data6, data1、data2、data3、data4、data5和data6的数值分别为3、6、10、15、18和22,那么可以将待 存储数据的序号作为横坐标,数值作为纵坐标,生成原始点(1,3)、(2,6)、(3,10)、(4,15)、 (5,18)和(6,22),根据这些原始点可以进行拟合,得到拟合线段
Figure 529302DEST_PATH_IMAGE003
,进一步得到 斜率为5,截距为0,另外可以确定第一个数据data1的横坐标1作为起始位置。从而可以确定 与该数据段对应的系数为(1,5,0)。
在操作S230 a,确定数据段中每个待存储数据与拟合线段之间的偏差值。
根据本公开的实施例,例如可以针对每个待存储数据,确定拟合线段中与待存储数据对应的拟合点。然后确定与待存储数据对应的原始点到拟合点之间的距离,作为待存储数据与拟合线段之间的偏差值。
在操作S240 a,根据与每个数据段对应的线段系数和偏差值,生成索引数据。
根据本公开的实施例,可以预先设置预定数据结构,将线段系数和偏差值存储至该预定数据结构中,得到索引数据。其中,预定数据结构可以根据实际需要设置。
在操作S250 a,存储索引数据。
根据本公开的实施例,例如可以将索引数据存储至内存中。根据本公开的另一些实施例,也可以将索引数据存储在除内存之外的其他存储器中。
根据本公开的实施例,将待存储数据划分为多个数据段,然后将每个数据段中的待存储数据用拟合线段和对应的偏差值来表示。由此,可以仅存储拟合线段的线段系数和偏差值,相比待存储数据占用的空间更小,从而可以提高空间使用效率,提高数据查询速度。
根据本公开的实施例,当需要读取原始数据时,可以根据数据所属的数据段,确定对应的线段系数。然后可以根据该线段系数,确定对应的拟合线段。接着可以根据该拟合线段上的点和偏差值,恢复原始数据。
以下将结合图3对本公开提供的数据查询方法进行描述。
图3示意性示出了根据本公开另一实施例的数据查询方法的流程图。
如图3所示,该数据查询方法300 b还包括在操作S310 b,获取待查询数据标识。
根据本公开的实施例,待查询数据标识可以用于唯一地表示待查询数据,例如可以包括资源标识符。
在操作S320 b,在索引数据中查找与待查询数据标识对应的目标线段系数和目标偏差值。
根据本公开的实施例,索引数据的生成方式例如可以参考上文。索引数据中包括多个线段系数和多个偏差值,可以在这些线段系数中查找与待查询数据标识对应的目标线段系数,在这些偏差值中查找与待查询数据标识对应的目标偏差值。
在操作S330 b,根据目标线段系数和目标偏差值,确定目标数据。
根据本公开的实施例,例如可以根据目标线段系数,确定目标拟合线段。然后,可以确定目标拟合线段中与待查询数据标识对应的目标拟合点。接着,可以根据目标拟合点和目标偏差值,确定目标数据。
根据本公开的实施例,例如可以确定步长。其中,步长的初始值可以根据需要设置。可以根据起始位置和步长,确定目标数据段中的查询位置。然后可以确定查询位置中的偏差值是否为目标偏差值。在查询位置中的偏差值是目标数据的情况下,输出该偏差值。在查询位置中的偏差值不是目标数据的情况下,可以将步长缩短为原来的一半,作为新的步长。接下来可以根据新的步长和当前的查询位置,确定新的查询位置,接着针对新的查询位置,返回确定查询位置中的偏差值是否为目标偏差值的操作。
根据本公开的另一实施例,对于多个待存储数据可以有多种分段方案,可以对该多种分段方案进行评估,从而选择多种分段方案中最优的分段方案对待存储数据进行分段。
基于此,图4示意性示出了根据本公开的另一实施例的划分数据段的方法的流程图。
如图4所示,该划分数据段的方法410 a可以包括在操作S411 a,获取多个候选分段方案。
根据本公开的实施例,例如可以预先设置多个数据量上限。数据量上限表示该每个数据段可以包含的最大数据量。例如,对于该多个待存储数据,可以按照序号从小到大的顺序,确定不超过数据量上限的前n个数据划分为一个数据段。其中,n为正整数。
在操作S412 a,确定多个候选分段方案中每个候选分段方案的空间消耗估计量。
根据本公开的实施例,空间消耗估计量可以用于估计根据候选分段方案对待存储数据划分数据段后,生成的索引数据所占用的空间大小。
在操作S413 a,根据多个候选分段方案的空间消耗估计量,确定多个候选分段方案中的目标分段方案。
根据本公开的实施例,例如可以确定多个候选分段方案中空间消耗估计量最小的候选分段方案作为目标分段方案。
在操作S414 a,根据目标分段方案,将多个待存储数据划分为多个数据段。
根据本公开的实施例,通过确定目标分段方案,可以优化分段方案,从而减少后续生成的索引数据的空间占用。
根据本公开的实施例,针对每个分段方案,例如可以根据估价函数确定每个数据段的空间消耗估计值,然后将所有数据段的空间消耗估计值相加,即可得到对应的分段方案的空间消耗估计值。其中,估价函数例如可以表示为以下公式:
Figure 127774DEST_PATH_IMAGE004
其中,i和j分别为数据段的起始位置和终止位置,即数据段所对应的数据区间为 [i,j]。B(i,j)表示数据段所对应的每个偏移值所占用的比特数。
Figure 410987DEST_PATH_IMAGE005
表示该数据段的段信 息所需要的字节数,
Figure 685980DEST_PATH_IMAGE006
表示该数据段的段信息所需要的比特数。
根据本公开的实施例,通过估价函数确定的空间消耗估计值,与真实空间消耗值之间的近似度较高,可以得到更为精确的空间消耗估计值。
根据本公开的另一实施例,在划分数据段之后,还可以针对每个数据段中的待存储数据进行压缩,以进一步减少对空间的占用。
基于此,图5示意性示出了根据本公开另一实施例的数据存储方法的流程图。
如图5所示,该数据存储方法500 a还包括在操作S560 a,针对每个数据段,确定与数据段对应的偏差值中比特数最大的标准偏差值。
在操作S570 a,根据标准偏差值的比特数,对与数据段对应的偏差值进行压缩。
根据本公开的实施例,例如与数据段对应的偏差值可以包括0,1和3。其中,0和1的比特数为1,3的比特数数2,则可以确定3作为标准偏差值。然后根据3的比特数2,对0、1和3进行压缩。
根据本公开的实施例,例如可以根据标准偏差值的比特数,将数据段中每个偏差值分别转换为二进制数位,从而实现对偏差值的压缩。其中,该二进制数位的位数等于标准偏差值的比特数。
根据本公开的实施例,通过对应偏差值进行压缩,可以破除位宽限制。在需要将偏差值存储至内存的场景下,压缩后的偏差值可以使内存更紧凑。另外,通过这种压缩方式可以减少尖刺数据对全局数据压缩的影响。
根据本公开的实施例,索引数据例如可以包括段信息和偏差数据。其中,段信息可以用于描述每个数据段的信息,例如数据段的起始位置、终止位置、与每个数据段对应的线段系数等。偏差数据可以用于描述与每个待存储数据对应的偏差值。基于此,例如可以根据每个数据段的起始位置、终止位置,以及与每个数据段对应的线段系数,确定索引数据的段信息。另外,可以根据与每个数据段对应的偏差值,确定索引数据的偏差数据。
根据本公开的另一实施例,还可以在段信息中记录每个数据段的起始位置上的偏差值和终止位置上的偏差值。在对偏移值进行压缩的情况下,还可以在段信息中记录压缩时所采用的比特数。
基于此,图6示意性示出了根据本公开另一实施例的查找目标线段系数和目标偏差值的方法的流程图。
如图6所示,该查找目标线段系数和目标偏差值的方法620 b可以包括在操作S621b,获取最近一次查询针对的历史数据段标识。
在操作S622b,确定待查询数据标识与历史数据段标识是否匹配。在待查询数据标识与历史数据段标识不匹配的情况下,执行操作操作S623b~S624b。在待查询数据标识与历史数据段标识匹配的情况下,执行操作操作S625b~S626b。
在操作S623b,根据索引数据,确定与待查询数据标识对应的目标数据段,以及目标数据段的起始位置。
根据本公开的实施例,例如可以根据二分查找算法来确定与待查询数据标识对应的目标数据段。
在操作S624b,根据起始位置,在与目标数据段对应的偏差值中查找与待查询数据标识对应的目标偏差值。
在操作S625b,获取与历史数据段对应的历史查询位置。
在操作S626b,根据历史查询位置,在与历史数据段对应的偏差值中查找与待查询数据标识对应的目标偏差值。
根据本公开的实施例,可以记录最近一次查询数据时针对目标数据段作为历史数据段,以及目标偏差值的位置作为历史查询位置。在连续查询的情况下,通过记录历史数据段和历史查询位置,可以快速定位查询位置,提高检索速度。
根据本公开的另一些实施例,可以为索引数据配置符合STL(Standard TemplateLibrary,标准模板库)标准的迭代器,以支持STL中的算法,例如STL中不需要对容器数据进行修改的算法,从而使用户可以使用STL中的算法来访问索引数据。
示例性地,例如可以将历史查询位置和历史数据段记录在迭代器中,以便利用迭代器来维护查询状态。
搜索召回场景中对资源召回可以通过倒排索引,然后对倒排索引结果求交集来实现。例如,倒排索引结果可以包括两个有序数组,在求交集的过程中,可以配置两个指针,分别指向两个有序数组的起始位置。然后比较两个指针所指数据的大小,如果其中一个数据较小,则需要将指向这个数据所对应的指针向后移动到最近的一个不小于另一个数的位置。上述操作也称为为jump_to(跳步)。
基于此,根据本公开的另一实施例,在对应数据段中查找目标数据的过程中,可以采用缩短步长的跳步算法来查找目标数据。例如,图7示意性示出了根据本公开的实施例的在数据段中查找目标数据的方法的示意图。
在图7中示出了,该方法700包括:在操作S701,初始化起始位置s和步长st。
根据本公开的实施例,在待查询数据标识与历史数据段标识不匹配的情况下,可以确定与待查询数据标识对应的目标数据段,以及目标数据段的起始位置,然后确定起始位置s为目标数据段的起始位置。在待查询数据标识与历史数据段标识匹配的情况下,可以获取与历史数据段对应的历史查询位置,确定起始位置s为历史查询位置。
根据本公开的实施例,例如可以根据以下公式计算初始的步长st:
Figure 421855DEST_PATH_IMAGE007
其中,len为目标数据段的长度,即目标数据段中的数据总数量。
接着,在操作S702,查询s+st位置上的数据,更新s=s+st。
操作S703,判断该数据是否命中待查询的目标数据。如果该数据为目标数据,则表示命中,执行操作S704。如果该数据不是目标数据,则表示未命中,执行操作S706。
操作S704,判断查询到的数据是否大于目标数据。如果小于或等于,则返回操作S702。如果大于,则执行操作S705。
操作S705,根据以下公式更新步长:
st=st/2
然后返回操作S702。
操作S706,输出该目标数据。
根据本公开的实施例,采用缩短步长的跳步算法,可以有效减小跳步的次数,从而提高处理速度。
根据本公开的另一实施例,除了段信息和偏差数据之外,索引数据还可以包括其他数据。例如,索引数据还可以包括索引数据的元信息。其中,元信息例如可以包括整个索引数据的数据量、索引数据包含的数据段的总数量、偏移值的总数量以及偏移值的起始位置。本实施例中,可以确定索引数据中偏移值的最小序号作为偏移值的起始位置。
根据本公开的另一实施例,还可以在索引数据的末尾设置空数据段,用于表示索引数据的结尾。在访问索引数据时,如果访问到该空数据段,则表示已访问到该索引数据的结尾。通过在索引数据的末尾设置空数据段可以避免访问时越界。在索引数据存储在内存中的场景中,通过在索引数据的末尾设置空数据段可以避免访问索引数据时发生内存溢出。
示例性地,本实施例中,在将索引数据存储至内存过程中,可以按照元数据、段信息、偏差数据和空白数据段的顺序来进行编排。
根据本公开的另一些实施例,在将索引数据存储至内存中时,可以将索引数据进行紧凑内存编排,即将索引数据存储到一段连续的内存空间中。内存中的索引数据出可以设置为只读。基于此,索引数据还可以支持Zero-Copy(零拷贝),可直接通过数据的裸指针访问内存中对应的数据,不需要对数据进行构造。由此可以减少访问前构造带来的内存分配开销。另外,用户也可以自定义方法,自定义方法可以实现基于定制化的方式访问索引数据。
例如,图8示意性示出了根据本公开的实施例的确定线段系数的方法的示意图。
图8示意性示出了,待存储数据可以包括data1、data2、……data10。data1、 data2、……data10的序号分别为1、2、……10,数值分别为3、6、10、15、18、22、40、43、47、和 53。可以将待存储数据分为两个数据段A和B。数据段A中的待存储数据包括data1、 data2、……data6。数据段A中的待存储数据包括data7、data8、……data10。那么可以将待 存储数据的序号作为横坐标,数值作为纵坐标,生成原始点(1,3)、(2,6)、(3,10)、(4,15)、 (5,18)、(6,22)、(7,40)、(8,43)、(9,47)和(10,53)。可以将与每个数据段对应的原始点进 行拟合。其中,对与每个数据段A对应的原始点(1,3)、(2,6)、(3,10)、(4,15)、(5,18)和(6, 22)进行拟合,得到拟合线段
Figure 292859DEST_PATH_IMAGE003
,进一步得到斜率为5,截距为0,另外可以确定第 一个数据data1的横坐标1作为起始位置。从而可以确定与该数据段A对应的线段系数S1为 (1,5,0)。对与每个数据段B对应的原始点(7,40)、(8,43)、(9,47)和(10,53)进行拟合,得到 拟合线段
Figure 961737DEST_PATH_IMAGE008
,进一步得到斜率为6,截距为37,另外可以确定第一个数据 data7的横坐标7作为起始位置。从而可以确定与该数据段B对应的线段系数S2为(7,6,37)。
然后可以确定偏差值集合为C={3,1,0,0,-2,-3,3,0,-2,-2},其中每个偏差值可以按照c bit来存储,c可以根据各数据段所对应的偏差值的比特数来设置。
例如,图9示意性示出了根据本公开的实施例的索引数据的示意图。
如图9所示,索引数据例如可以包括元信息(Flv Meta)、段信息(Segment Meta)、偏差数据(Correcttion Data)和空数据段(EOF Blank Buffer)。
其中,元信息例如可以包括整个索引数据的总数据量(Total Bytes)、索引数据包含的数据段的总数量(Segment Size)、偏移值的总数量(Correction Size)以及偏移值的起始位置(Correction Start Pos)。
段信息例如可以包括多个子数据,该多个子数据与待存储数据一一对应。每个子数据包括对应数据段的起始位置(First)、起始位置上的偏差值(First Value)、终止位置(Last)、终止位置上的偏差值(Last Value)、与每个数据段对应的斜率(Slope)、截距(Intercept)、压缩时所采用的比特数(Correction Width)等。其中,斜率例如可以使用科学计数法表示,例如,可以将斜率有效数(slope_significand)换算为科学计数法表示的斜率(slope_exponent)。通过换算可以避免存储浮点数造成空间浪费。
偏差数据例如包括待存储数据通过分段拟合后,再通过数值压缩算法对偏差值进行压缩后的数据。
空数据段例如可以包括防止内存访问越界设置的空数据段。
以下将结合图10对本公开提供的数据存储装置进行描述。
图10示意性示出了根据本公开实施例的数据存储装置的框图。
如图10所示,数据存储装置1000包括划分模块1010、拟合模块1020、偏差值确定模块1030、生成模块1040和存储模块1050。
划分模块1010,用于将多个待存储数据划分为多个数据段,其中,多个数据段中的每个数据段包括至少一个待存储数据。
拟合模块1020,用于针对每个数据段,对数据段中的待存储数据进行线性拟合,得到拟合线段和拟合线段的线段系数。
偏差值确定模块1030,用于确定数据段中每个待存储数据与拟合线段之间的偏差值。
生成模块1040,用于根据与每个数据段对应的线段系数和偏差值,生成索引数据。
存储模块1050,用于存储索引数据。
以下将结合图11对本公开提供的数据查询装置进行描述。
图11示意性示出了根据本公开实施例的数据查询装置的框图。
如图11所示,数据查询装置1100包括获取模块1110、查找模块1120和目标数据确定模块1130。
获取模块1110,用于获取待查询数据标识。
查找模块1120,用于在索引数据中查找与待查询数据标识对应的目标线段系数和目标偏差值,其中,索引数据是根据本公开实施例的方法存储的。
目标数据确定模块1130,用于根据目标线段系数和目标偏差值,确定目标数据。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图12示意性示出了可以用来实施本公开的实施例的示例电子设备1200的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图12所示,设备1200包括计算单元1201,其可以根据存储在只读存储器(ROM)1202中的计算机程序或者从存储单元1208加载到随机访问存储器(RAM)1203中的计算机程序,来执行各种适当的动作和处理。在RAM 1203中,还可存储设备1200操作所需的各种程序和数据。计算单元1201、ROM 1202以及RAM 1203通过总线1204彼此相连。输入/输出(I/O)接口1205也连接至总线1204。
设备1200中的多个部件连接至I/O接口1205,包括:输入单元1206,例如键盘、鼠标等;输出单元1207,例如各种类型的显示器、扬声器等;存储单元1208,例如磁盘、光盘等;以及通信单元1209,例如网卡、调制解调器、无线通信收发机等。通信单元1209允许设备1200通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元1201可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1201的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1201执行上文所描述的各个方法和处理,例如数据存储方法和数据查询方法。例如,在一些实施例中,数据存储方法和数据查询方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1208。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1202和/或通信单元1209而被载入和/或安装到设备1200上。当计算机程序加载到RAM 1203并由计算单元1201执行时,可以执行上文描述的数据存储方法和数据查询方法的一个或多个步骤。备选地,在其他实施例中,计算单元1201可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行数据存储方法和数据查询方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称 "VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (16)

1.一种数据存储方法,包括:
将多个待存储数据划分为多个数据段,其中,所述多个数据段中的每个数据段包括至少一个所述待存储数据;
针对所述每个数据段,
根据所述数据段中待存储数据的序号和数值进行线性拟合,得到拟合线段和所述拟合线段的线段系数,其中,所述线段系数包括所述拟合线段的起始位置、斜率和截距;
确定所述数据段中每个待存储数据与所述拟合线段之间的偏差值;
根据与所述每个数据段对应的线段系数和偏差值,生成索引数据;以及
存储所述索引数据。
2.根据权利要求1所述的方法,其中,所述将多个待存储数据划分为多个数据段包括:
获取多个候选分段方案;
确定所述多个候选分段方案中每个候选分段方案的空间消耗估计量;
根据所述多个候选分段方案的空间消耗估计量,确定所述多个候选分段方案中的目标分段方案;以及
根据所述目标分段方案,将多个待存储数据划分为多个数据段。
3.根据权利要求2所述的方法,其中,所述确定所述多个候选分段方案中每个候选分段方案的空间消耗估计量,包括:
针对所述每个候选分段方案,
根据所述候选分段方案将所述多个待存储数据划分为多个参考数据段;
针对所述多个参考数据段中的每个参考数据段,确定所述每个参考数据段中比特数最大的参考数据;以及
计算所述每个参考数据段中待存储数据的数量和所述参考数据的比特数之间的乘积,作为所述候选分段方案的空间消耗估计量。
4.根据权利要求1所述的方法,其中,所述根据所述数据段中待存储数据的序号和数值进行线性拟合,得到拟合线段和所述拟合线段的线段系数,包括:
根据所述数据段中每个待存储数据的序号和数值,确定原始点;
根据所述原始点,确定所述拟合线段;以及
确定所述拟合线段的起始位置、斜率和截距,作为所述拟合线段的线段系数。
5.根据权利要求4所述的方法,其中,所述确定所述数据段中每个待存储数据与所述拟合线段之间的偏差值,包括:
针对所述每个待存储数据,
确定所述拟合线段中与所述待存储数据对应的拟合点;以及
确定与所述待存储数据对应的原始点到所述拟合点之间的距离,作为所述待存储数据与所述拟合线段之间的偏差值。
6. 根据权利要求1所述的方法,还包括:
针对所述每个数据段,确定与所述数据段对应的偏差值中比特数最大的标准偏差值;以及
根据所述标准偏差值的比特数,对与所述数据段对应的偏差值进行压缩。
7. 根据权利要求1-6中任一项所述的方法,其中,索引数据包括:段信息和偏差数据;所述根据与所述每个数据段对应的偏差值和线段系数,生成索引数据,包括:
根据所述每个数据段的起始位置、终止位置,以及与所述每个数据段对应的线段系数,确定所述索引数据的段信息;以及
根据与所述每个数据段对应的偏差值,确定所述索引数据的偏差数据。
8.一种数据查询方法,包括:
获取待查询数据标识;
在索引数据中查找与所述待查询数据标识对应的目标线段系数和目标偏差值,其中,所述索引数据是根据权利要求1-7中任一项所述的方法存储的;以及
根据所述目标线段系数和所述目标偏差值,确定目标数据。
9.根据权利要求8所述的方法,其中,所述在索引数据中查找与所述待查询数据标识对应的目标线段系数和目标偏差值,包括:
获取最近一次查询针对的历史数据段标识;
在所述待查询数据标识与所述历史数据段标识不匹配的情况下,
根据索引数据,确定与所述待查询数据标识对应的目标数据段,以及所述目标数据段的起始位置;以及
根据所述起始位置,在与所述目标数据段对应的偏差值中查找与所述待查询数据标识对应的目标偏差值。
10.根据权利要求9所述的方法,其中,根据所述起始位置,在与所述目标数据段对应的偏差值中查找与所述待查询数据标识对应的目标偏差值,包括:
确定步长;
根据所述起始位置和所述步长,确定所述目标数据段中的查询位置;
确定所述查询位置中的偏差值是否为目标偏差值;
在所述查询位置中的偏差值不是目标数据的情况下,
将所述步长缩短为原来的一半,作为新的步长;
根据所述新的步长和所述查询位置,确定新的查询位置;以及
针对所述新的查询位置,返回所述确定所述查询位置中的偏差值是否为目标偏差值的操作。
11.根据权利要求9所述的方法,其中,所述在索引数据中查找与所述待查询数据标识对应的目标线段系数和目标偏差值,包括:
在所述待查询数据标识与所述历史数据段匹配的情况下,
获取与所述历史数据段对应的历史查询位置;以及
根据所述历史查询位置,在与所述历史数据段对应的偏差值中查找与所述待查询数据标识对应的目标偏差值。
12.根据权利要求8-11中任一项所述的方法,其中,所述根据所述目标线段系数和所述目标偏差值,确定目标数据,包括:
根据所述目标线段系数,确定目标拟合线段;
确定所述目标拟合线段中与所述待查询数据标识对应的目标拟合点;以及
根据所述目标拟合点和所述目标偏差值,确定所述目标数据。
13.一种数据存储装置,包括:
划分模块,用于将多个待存储数据划分为多个数据段,其中,所述多个数据段中的每个数据段包括至少一个所述待存储数据;
拟合模块,用于针对所述每个数据段,根据所述数据段中待存储数据的序号和数值进行线性拟合,得到拟合线段和所述拟合线段的线段系数,其中,所述线段系数包括所述拟合线段的起始位置、斜率和截距;
偏差值确定模块,用于确定所述数据段中每个待存储数据与所述拟合线段之间的偏差值;
生成模块,用于根据与所述每个数据段对应的线段系数和偏差值,生成索引数据;以及
存储模块,用于存储所述索引数据。
14.一种数据查询装置,包括:
获取模块,用于获取待查询数据标识;
查找模块,用于在索引数据中查找与所述待查询数据标识对应的目标线段系数和目标偏差值,其中,所述索引数据是根据权利要求1-7中任一项所述的方法存储的;以及
目标数据确定模块,用于根据所述目标线段系数和所述目标偏差值,确定目标数据。
15.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-12中任一项所述的方法。
16.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-12中任一项所述的方法。
CN202210720497.9A 2022-06-24 2022-06-24 数据存储方法、数据查询方法、装置和设备 Active CN114817651B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210720497.9A CN114817651B (zh) 2022-06-24 2022-06-24 数据存储方法、数据查询方法、装置和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210720497.9A CN114817651B (zh) 2022-06-24 2022-06-24 数据存储方法、数据查询方法、装置和设备

Publications (2)

Publication Number Publication Date
CN114817651A CN114817651A (zh) 2022-07-29
CN114817651B true CN114817651B (zh) 2022-09-13

Family

ID=82521474

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210720497.9A Active CN114817651B (zh) 2022-06-24 2022-06-24 数据存储方法、数据查询方法、装置和设备

Country Status (1)

Country Link
CN (1) CN114817651B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115291812B (zh) * 2022-09-30 2023-01-13 北京紫光青藤微系统有限公司 一种通信芯片的数据存储方法及装置
CN115955251B (zh) * 2023-03-15 2023-07-25 北京智蚁杨帆科技有限公司 一种基于大数据应用的可再生能源智慧管理方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114357375A (zh) * 2021-12-31 2022-04-15 深圳大普微电子科技有限公司 一种数据查询方法、系统、设备及计算机可读存储介质
CN114547146A (zh) * 2022-02-22 2022-05-27 哈尔滨工业大学 时序数据压缩查询方法、装置、计算设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017181342A1 (zh) * 2016-04-19 2017-10-26 北京中科寒武纪科技有限公司 一种非线性函数运算装置及方法
CN106844664B (zh) * 2017-01-20 2020-04-17 北京理工大学 一种基于摘要的时间序列数据索引构建方法
CN107644070B (zh) * 2017-09-13 2020-09-15 北京柠檬微趣科技股份有限公司 数据索引方法、数据查询方法及电子设备
EP3859551A4 (en) * 2019-07-24 2021-11-24 Huawei Technologies Co., Ltd. METHOD AND APPARATUS FOR ESTABLISHING AN INDEX FOR DATA
CN114077605A (zh) * 2020-08-13 2022-02-22 大唐移动通信设备有限公司 一种数据处理方法及装置
CN113849498B (zh) * 2021-08-18 2022-08-23 北京邮电大学 一种索引构建及查询方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114357375A (zh) * 2021-12-31 2022-04-15 深圳大普微电子科技有限公司 一种数据查询方法、系统、设备及计算机可读存储介质
CN114547146A (zh) * 2022-02-22 2022-05-27 哈尔滨工业大学 时序数据压缩查询方法、装置、计算设备及存储介质

Also Published As

Publication number Publication date
CN114817651A (zh) 2022-07-29

Similar Documents

Publication Publication Date Title
CN111247518B (zh) 用于数据库分片的方法和系统
CN114817651B (zh) 数据存储方法、数据查询方法、装置和设备
CN107704202B (zh) 一种数据快速读写的方法和装置
CN103345496B (zh) 多媒体信息检索方法和系统
CN108733317B (zh) 数据存储方法和装置
CN108984553B (zh) 缓存方法和装置
CN113568940B (zh) 数据查询的方法、装置、设备以及存储介质
CN113408660B (zh) 图书聚类方法、装置、设备和存储介质
CN110704677A (zh) 一种节目推荐方法、装置、可读存储介质及终端设备
CN116028618B (zh) 文本处理、文本检索方法、装置、电子设备及存储介质
CN113836157A (zh) 获取数据库增量数据的方法和装置
CN113220705B (zh) 慢查询识别的方法和装置
CN116842012A (zh) 一种Redis集群的分片存储方法、装置、设备及存储介质
CN116578646A (zh) 一种时序数据同步方法、装置、设备及存储介质
CN112887426B (zh) 信息流的推送方法、装置、电子设备以及存储介质
CN114417102B (zh) 文本去重方法、装置和电子设备
CN113468866B (zh) 非标准json串的解析方法及装置
CN112800315B (zh) 数据处理方法、装置、设备及存储介质
CN115292008A (zh) 用于分布式系统的事务处理方法、装置、设备及介质
CN115328898A (zh) 一种数据处理方法、装置、电子设备及介质
CN114579580A (zh) 存储数据的方法、查询数据的方法和装置
CN115065366A (zh) 一种时序数据的压缩方法、装置、设备及存储介质
CN109308299B (zh) 用于搜索信息的方法和装置
CN113449155B (zh) 用于特征表示处理的方法、装置、设备和介质
CN114359610B (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