CN109634955A - 数据存储方法、数据检索方法和装置 - Google Patents
数据存储方法、数据检索方法和装置 Download PDFInfo
- Publication number
- CN109634955A CN109634955A CN201811360599.4A CN201811360599A CN109634955A CN 109634955 A CN109634955 A CN 109634955A CN 201811360599 A CN201811360599 A CN 201811360599A CN 109634955 A CN109634955 A CN 109634955A
- Authority
- CN
- China
- Prior art keywords
- dimension
- storage
- array
- amount
- data
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据存储方法,包括获取二维表中第一维度各排单元格的最大存储值;按照最大存储值的存储量确定第一维度各排的单元格存储量;根据单元格存储量和二维表中第二维度的排数确定总存储量;按照总存储量建立数组;将二维表中第二维度各排单元格的数据,按照第一维度中相应排的单元格存储量连续存储至数组,节约了存储空间。本申请还涉及一种数据检索方法,包括获取目标数据在二维表中的第一维度排序号和第二维度排序号;按第一维度排序号和相应的单元格存储量、以及第二维度排序号,确定目标数据在数组中的偏移量;按照偏移量从数组中读取目标数据,在节约了存储空间的数组中,快速检索到目标数据。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据存储方法、数据检索方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,需要经常对一些数据进行存储,但是当存储的数据量较多时,想要快速地在数据库中检索到目标数据是特别困难的,因此需要一个有规律地存储方式对数据进行存储,才能快速地检索到目标数据。
传统的数据存储技术,是通过建立数组,将二维表中的各个数据,行与行之间连续地存储至数组中。虽然能够根据目标数据在二维表中各维度的排序号,快速地检索到目标数据,但是由于各个数据均按照同样的存储量进行存储,造成了存储空间的浪费。
发明内容
基于此,有必要针对上述技术问题,提供一种能够节约存储空间的数据存储方法、数据检索方法、装置、计算机设备和存储介质。
一种数据存储方法,所述方法包括:
获取二维表中第一维度各排单元格的最大存储值;
按照最大存储值的存储量确定第一维度各排的单元格存储量;
根据单元格存储量和二维表中第二维度的排数确定总存储量;
按照总存储量建立数组;
将二维表中第二维度各排单元格的数据,按照第一维度中相应排的单元格存储量,连续存储至数组。
在其中一个实施例中,根据单元格存储量和二维表中第二维度的排数确定总存储量包括:
按照第一维度各排的单元格存储量,确定第二维度的单排存储量;
根据单排存储量和二维表中第二维度的排数确定总存储量。
在其中一个实施例中,按照总存储量建立数组包括:
获取待建立的数组的数组类型;
确定数组类型对应的单位元素的存储量;
按照总存储量和单位元素的存储量确定建立数组的元素数量;
按照元素数量创建数组类型的数组。
在其中一个实施例中,将二维表中第二维度各排单元格的数据,按照第一维度中相应排的单元格存储量,连续存储至数组包括:
按照二维表中第二维度各排的顺序以及相应排中单元格的顺序,将二维表中第二维度各排单元格的数据,按照第一维度中相应排的单元格存储量连续存储至数组;
在连续存储至数组时,从数组中首元素的首字节中的首位开始,按照数组中元素的顺序、元素中字节的顺序以及字节中位的顺序进行连续存储。
在其中一个实施例中,第一维度的排是二维表的列;第二维度的排是二维表的行;或者,
第一维度的排是二维表的行;第二维度的排是二维表的列。
一种数据存储装置,所述装置包括:
最大存储值获取模块,用于获取二维表中第一维度各排单元格的最大存储值;
单元格存储量确定模块,用于按照最大存储值的存储量确定第一维度各排的单元格存储量;
总存储量确定模块,用于根据单元格存储量和二维表中第二维度的排数确定总存储量;
数组建立模块,用于按照总存储量建立数组;
数据存储模块,用于将二维表中第二维度各排单元格的数据,按照第一维度中相应排的单元格存储量,连续存储至数组。
一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取二维表中第一维度各排单元格的最大存储值;
按照最大存储值的存储量确定第一维度各排的单元格存储量;
根据单元格存储量和二维表中第二维度的排数确定总存储量;
按照总存储量建立数组;
将二维表中第二维度各排单元格的数据,按照第一维度中相应排的单元格存储量,连续存储至数组。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取二维表中第一维度各排单元格的最大存储值;
按照最大存储值的存储量确定第一维度各排的单元格存储量;
根据单元格存储量和二维表中第二维度的排数确定总存储量;
按照总存储量建立数组;
将二维表中第二维度各排单元格的数据,按照第一维度中相应排的单元格存储量,连续存储至数组。
上述数据存储方法、装置、计算机设备和存储介质,使二维表中各数据在数组中的存储量与第一维度中各数据所在排的最大存储值的存储量相等,减小了存储数据所占用的总存储量,根据总存储量建立数组,并将数据按照单元格存储值连续存储至数组,在保证了二维表中的所有数据均能被存储下的情况下,节约了存储空间。
一种数据检索方法,所述方法包括:
获取目标数据在二维表中的第一维度排序号和第二维度排序号;
按第一维度排序号和相应的的单元格存储量、以及第二维度排序号,确定目标数据在数组中的偏移量;
按照偏移量从数组中读取目标数据。
在其中一个实施例中,按照偏移量从数组中读取目标数据包括:
根据偏移量和数组的单位元素的存储量,确定目标数据在数组中的元素序号;
根据偏移量和单位字节的位数,确定目标数据在元素序号的元素中的字节序号和位序号;
在数组中,从元素序号、字节序号和位序号所表示的位置起,按照目标数据对应的单元格存储量读取目标数据。
一种数据检索装置,所述装置包括:
排序号获取模块,用于获取目标数据在二维表中的第一维度排序号和第二维度排序号;
偏移量确定模块,用于按第一维度排序号和相应的单元格存储量、以及第二维度排序号,确定目标数据在数组中的偏移量;
数据读取模块,用于按照偏移量从数组中读取目标数据。
一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取目标数据在二维表中的第一维度排序号和第二维度排序号;
按第一维度排序号和相应的单元格存储量、以及第二维度排序号,确定目标数据在数组中的偏移量;
按照偏移量从数组中读取目标数据。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取目标数据在二维表中的第一维度排序号和第二维度排序号;
按第一维度排序号和相应的单元格存储量、以及第二维度排序号,确定目标数据在数组中的偏移量;
按照偏移量从数组中读取目标数据。
上述数据检索方法、装置、计算机设备和存储介质,根据目标数据在二维表中第一维度排序号和对应的单元格存储量、以及第二维度排序号,确定目标数据在数组中的偏移量,以按照偏移量从数组中读取目标数据,在节约了存储空间的数组中,仍然能够快速地检索到目标数据。
附图说明
图1为一个实施例中计算机设备的内部结构图;
图2为一个实施例中数据存储方法的流程示意图;
图3为一个实施例中二维表的示例图;
图4为一个实施例中统计数据的示例图;
图5为一个实施例中数组的示例图;
图6为一个实施例中数据检索方法的流程示意图;
图7为一个实施例中数据存储装置的结构框图;
图8为一个实施例中数据检索装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据存储方法和数据检索方法,可以应用于如图1所示的计算机设备。该计算机设备包括存储器和处理器,存储器中存储有计算机程序。计算机程序被处理器执行时,可以实现本申请提供的数据存储方法和数据检索方法中的至少一种。该计算机设备可以是终端,也可以是服务器。可以理解的是,当计算机设备为终端时,该计算机设备还可以包括显示屏和输入装置等。其中,终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种数据存储方法,该方法包括以下步骤:
步骤S202,获取二维表中第一维度各排单元格的最大存储值。
其中,二维表指由行方向和列方向两个维度组成的表格。第一维度指二维表中的行方向或列方向。当第一维度为行方向时,第一维度的排指二维表中的行,最大存储值指每一行中所有单元格所存储值的最大值。当第一维度为列方向时,第一维度的排指二维表中的列,最大存储值指每一列中所有单元格所存储值的最大值。
具体地,在二维表中,以第一维度的排为单位,统计每一排中所有单元格的最大存储值。进一步地,当第一维度为列方向时,统计每一列中所有单元格的最大存储值;当第一维度为行方向时,统计每一行中所有单元格的最大存储值。
步骤S204,按照最大存储值的存储量确定第一维度各排的单元格存储量。
其中,最大存储值的存储量指每一排中所有单元格的最大值所占用的位(bit)的个数。单元格存储量指第一维度中各排的每个数据所占用的位的个数。
具体地,按照二维表中第一维度各排单元格的最大存储值所占用的存储量,确定第一维度各排的每个数据在待建立的数组中所需要占用的单元格存储量,即各个数据的存储量与各数据在第一维度中所对应排的最大存储值的存储量相同。
在一个实施例中,当第一维度为列方向时,按照二维表中各列单元格的最大存储值所占用的存储量,确定各列每个数据在待建立的数组中所需要占用的单元格存储量。本实施例中,各个数据在待建立的数组中的存储量与该数据所在二维表中的列中最大存储值的存储量相同。
在一个实施例中,当第一维度为行方向时,按照二维表中各行单元格的最大存储值所占用的存储量,确定各行每个数据在待建立的数组中所需要占用的单元格存储量。本实施例中,各个数据在待建立的数组中的存储量与该数据所在二维表中的行中最大存储值的存储量相同。
步骤S206,根据单元格存储量和二维表中第二维度的排数确定总存储量。
其中,第二维度指二维表中的行方向或列方向。当第二维度为列方向时,第二维度的排数指二维表中的列数;当第二维度为行方向时,第二维度的排数指二维表中的行数。可以理解的是,当第一维度为列方向时,第二维度为行方向;当第一维度为行方向时,第二维度为列方向。
具体地,根据第一维度各排每个数据在待建立的数组中所需要占用的单元格存储量和二维表中第二维度的总排数确定待建立的数组的总存储量。当第一维度为列方向时,可根据二维表中各列的每个数据在待建立的数组中所需要占用的单元格存储量和二维表中的总行数来确定待建立的数组的总存储量。可以理解的是,总存储量还可以根据第一维度各排每个数据在待建立的数组中所需要占用的单元格存储量和二维表中单元格的总个数来确定。
步骤S208,按照总存储量建立数组。
其中,数组属于构造数据的类型,一个数组可以分解为多个元素,这些元素可以是基本数据类型或是构造类型。本实施例中,数组的元素的类型根据二维表中数据的类型来决定,可以为数值型、字符型、指针型和结构型等。
具体地,按照确定的待建立的数组的总存储量建立数组。可以理解的是,本实施例中的数组可以为任何维数的数组,例如一维数组、二维数组和三维数组等。
步骤S210,将二维表中第二维度各排单元格的数据,按照第一维度中相应排的单元格存储量,连续存储至数组。
具体地,从二维表中第二维度的第一排开始,将每一排中的各个数据,按照各个数据在第一维度中所在排的单元格存储值,连续存储至数组,直到存储完二维表中的所有数据。
上述数据存储方法中,使二维表中各数据在数组中的存储量与第一维度中各数据所在排的最大存储值的存储量相等,减小了存储数据所占用的总存储量,根据总存储量建立数组,并将数据按照单元格存储值连续存储至数组,在保证了二维表中的所有数据均能被存储下的情况下,节约了存储空间。
在一个实施例中,根据单元格存储量和二维表中第二维度的排数确定总存储量包括:按照第一维度各排的单元格存储量,确定第二维度的单排存储量;根据单排存储量和二维表中第二维度的排数确定总存储量。
其中,单排存储量指二维表中第二维度各排的所有数据所需要占用的存储量。在本实施例中,当第二维度为行方向时,则单排存储量指二维表每一行的所有数据所需要占用的存储量。
具体地,按照二维表中第一维度各排的每个数据在待建立的数组中所需要占用的单元格存储量,确定二维表中第二维度每一排的所有数据所需要的单排存储量。例如,当第一维度为列时,按照二维表中各列的每个数据在待建立的数组中所需要占用的单元格存储量,确定二维表中每一行的所有数据所需要的单行存储量。本实施例中,根据单位存储量和二维表第二维度的排数可以快速地得到存储数据所需要的总存储量。
在一个实施例中,按照总存储量建立数组包括:获取待建立的数组的数组类型;确定数组类型对应的单位元素的存储量;按照总存储量和单位元素的存储量确定建立数组的元素数量;按照元素数量创建数组类型的数组。
其中,数组类型指数组的类型,本实施例中,根据数组中每一个元素所占用的存储空间的大小来定义数组的类型。元素是组成数组的基本单元,单位元素指数组中的一个元素。
具体地,获取待建立的数组的数组类型,根据数组类型对应的每一个元素的存储量,即每一个元素所占用的存储空间的存储量,确定建立的数组所需要的元素的总数量。确定了元素的总数量后,根据元素的数量和每一个元素所占用的存储空间的大小建立用于存储二维表中所有数据的数组。本实施例中,根据数组的元素数量和每一个元素所占用存储空间的大小建立数组,从而可以使用含较少元素的数组来存储大量数据的同时,利用这种规律性的存储方式可以便于数据的快速检索。
在一个实施例中,将二维表中第二维度各排单元格的数据,按照第一维度中相应排的单元格存储量,连续存储至数组包括:按照二维表中第二维度各排的顺序以及相应排中单元格的顺序,将二维表中第二维度各排单元格的数据,按照第一维度中相应排的单元格存储量连续存储至数组;在连续存储至数组时,从数组中首元素的首字节中的首位开始,按照数组中元素的顺序、元素中字节的顺序以及字节中位的顺序进行连续存储。
其中,字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一个字节等于八位,也表示一些计算机编程语言中的数据类型和语言字符。位(bit)是计算机处理信息的最小单位,计算机中的数据都是以0和1来表示的,其中一个0或者一个1称之为一位,8位称为一个字节。
具体地,从二维表中第二维度的第一排开始,连续地将每一排的每一个单元格中的数据依次存储至数组。进一步地,在数组中,将第一排的数据按照对应的单元格存储量存储后,继续对二维表下一排的数据依次地按照对应的单元格存储量进行存储,直到存储完最后一排的所有数据。
在将数据连续存储至数组时,存储完数组中第一个元素的第一个字节的第一位后,便继续将数据存储至下一位,存储完一个字节便将数据继续存储至第一个元素中的下一个字节。直到存储完第一个元素时,便继续从下一个元素中的第一个字节的第一位开始对数据进行存储,直到存储完所有数据。本实施例中,连续地将第二维度的各排的数据依次地按照数组中元素、元素中的字节以及字节中的位的顺序进行存储,便于对数据进行检索时,能够快速地定位至数据在数组中所存储的位置。
在一个实施例中,第一维度的排是二维表的列;第二维度的排是二维表的行;或者,第一维度的排是二维表的行;第二维度的排是二维表的列。
具体地,当第一维度的排是二维表中的列时,第一维度为列方向;第二维度的排则是二维表中的行,则第二维度为行方向。当第一维度的排是二维表中的行时,第一维度为行方向;第二维度的排则是二维表中的列,则第二维度为列方向。
在一个实施例中,以待存储数组为Int32类型(Int32类型指待存储数组的单位元素的存储量为4个字节,即32位),第一维度为列方向,第二维度为行方向,对该方法进行举例说明:
在如图3所示的二维表中,以列为单位统计每一列中所有单元格的最大存储值,并确定这些最大存储值占用的存储量,即最大存储值占用的位的个数,统计结果如图4所示。
每一列的单元格将分配与该列单元格最大存储值占用的存储量相同的存储量进行存储,根据单元格存储量和二维表的总行数确定待建立数据需要的元素的数量。具体地,根据图4的统计结果可知每行需要3+3+4+1+2=13位,整个二维表则需要13*1024=13312位,即1664字节,因此待建立的数组需要1664/4=416个元素。
根据确定的元素的数量和每一个元素所占用的存储量建立Int32数组,并将二维表中各行单元格的数据,按照各列的单元格存储量,连续存储至Int32数组。图5所示的Int32数组为图3的二维表中第0行数据的存储示例。
在一个实施例中,如图6所示,提供了一种数据检索方法,该方法包括以下步骤:
步骤S602,获取目标数据在二维表中的第一维度排序号和第二维度排序号。
其中,目标数据是需要被检索的数据。第一维度排序号指目标数据在二维表第一维度中所在排的序号。第二维度排序号指目标数据在二维表第二维度中所在排的序号。例如,当第一维度为列方向时,第二维度为行方向,则第一维度排序号指目标数据在二维表中所在列的序号,第二维度排序号指目标数据在二维表中所在行的序号。
具体地,当第一维度为列方向时,第二维度为行方向,获取目标数据在二维表中所在列的序号和所在行的序号。当第一维度为行方向时,第二维度为列方向,获取目标数据在二维表中所在行的序号和所在列的序号。
步骤S604,按第一维度排序号和相应的单元格存储量、以及第二维度排序号,确定目标数据在数组中的偏移量。
其中,偏移量指从数组中第一个元素的第一位至目标数据存储位置的起始位置的距离。
具体地,可以根据第一维度排序号和相应的单元格存储量、以及第二维度排序号,确定目标数据在二维表中所在单元格之前的所有单元格的单元格存储量,将目标数据在二维表中所在单元格之前的所有单元格的单元格存储量进行加和,得到目标数据在数组中的偏移量。
步骤S606,按照偏移量从数组中读取目标数据。
具体地,根据偏移量确定目标数据的第一位在数组中的存储位置,从目标数据的第一位在数组中的存储位置开始,按照目标数据的单元格存储量读取目标数据。
上述数据检索方法,根据目标数据在二维表中第一维度排序号和对应的单元格存储量、以及第二维度排序号,确定目标数据在数组中的偏移量,以按照偏移量从数组中读取目标数据,在节约了存储空间的数组中,仍然能够快速地检索到目标数据。
在一个实施例中,按照偏移量从数组中读取目标数据包括:根据偏移量和数组的单位元素的存储量,确定目标数据在数组中的元素序号;根据偏移量和单位字节的位数,确定目标数据在元素序号的元素中的字节序号和位序号;在数组中,从元素序号、字节序号和位序号所表示的位置起,按照目标数据对应的单元格存储量读取目标数据。
本实施例中,单位元素指数组中的一个元素。元素序号指元素在数组中的序号。单位字节指数组中一个元素的一个字节。字节序号指字节在元素中的序号。位序号指位在字节中的序号。元素序号、字节序号和位序号均可以从0开始计数,也可以从1开始计数。以下主要以元素序号、字节序号和位序号均从0开始计数进行举例说明。
具体地,用偏移量除以数组中单位元素的存储量,得到的整数部分便为目标数据的第一位在数组中所在元素的元素序号;用得到的余数部份和偏移量中的任一种除以数组中单位字节的位数,得到的结果的整数部分便为目标数据的第一位在数组中元素序号的元素中的字节序号,且此时得到的余数部分便为目标数据的第一位在字节序号的字节中的位序号。从目标数据的第一位在字节序号的字节中的位序号的位起,按照目标数据的单元格存储量读取目标数据。可以理解的是,本实施例是对按照偏移量从数组中读取目标数据的一种方式进行的举例说明,还可以通过多种计算方式实现按照偏移量从数组中读取目标数据,在此不做一一赘述。
在一个实施例中,按照偏移量从数组中读取目标数据包括:根据偏移量和单位字节的位数,确定目标数据在数组中的字节序号和位序号;在数组中,从字节序号和位序号所表示的位置起,按照目标数据对应的单元格存储量读取目标数据。
本实施例中,字节序号指字节在数组中的序号。具体地,用偏移量除以数组中单位字节的位数,得到的结果的整数部分便为目标数据的第一位在数组中所在字节的字节序号,余数部分便为目标数据的第一位在字节序号的字节中所在位的位序号,从目标数据的第一位在字节序号的字节中的位序号的位起,按照目标数据的单元格存储量读取目标数据。可以理解的是,本实施例是对按照偏移量从数组中读取目标数据的一种方式进行的举例说明,还可以通过多种计算方式实现按照偏移量从数组中读取目标数据,在此不做一一赘述。
应该理解的是,虽然图2和图6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2和图6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种数据存储装置700,该装置包括最大存储值获取模块702、单元格存储量确定模块704、总存储量确定模块706、数组建立模块708和数据存储模块710,其中:
最大存储值获取模块702,用于获取二维表中第一维度各排单元格的最大存储值。
单元格存储量确定模块704,用于按照最大存储值的存储量确定第一维度各排的单元格存储量。
总存储量确定模块706,用于根据单元格存储量和二维表中第二维度的排数确定总存储量。
数组建立模块708,用于按照总存储量建立数组。
数据存储模块710,用于将二维表中第二维度各排单元格的数据,按照第一维度中相应排的单元格存储量,连续存储至数组。
在一个实施例中,总存储量确定模块706还用于按照第一维度各排的单元格存储量,确定第二维度的单排存储量;根据单排存储量和二维表中第二维度的排数确定总存储量。
在一个实施例中,数组建立模块708还用于获取待建立的数组的数组类型;确定数组类型对应的单位元素的存储量;按照总存储量和单位元素的存储量确定建立数组的元素数量;按照元素数量创建数组类型的数组。
在一个实施例中,数据存储模块710还用于按照二维表中第二维度各排的顺序以及相应排中单元格的顺序,将二维表中第二维度各排单元格的数据,按照第一维度中相应排的单元格存储量连续存储至数组;在连续存储至数组时,从数组中首元素的首字节中的首位开始,按照数组中元素的顺序、元素中字节的顺序以及字节中位的顺序进行连续存储。
在一个实施例中,第一维度的排是二维表的列;第二维度的排是二维表的行;或者,第一维度的排是二维表的行;第二维度的排是二维表的列。
在一个实施例中,如图8所示,提供了一种数据存储装置800,该装置包括排序号获取模块802、偏移量确定模块804和数据读取模块806,其中:
排序号获取模块802,用于获取目标数据在二维表中的第一维度排序号和第二维度排序号。
偏移量确定模块804,用于按第一维度排序号和相应的如权利要求1至5中任一项的单元格存储量、以及第二维度排序号,确定目标数据在如权利要求1至5中任一项的数组中的偏移量。
数据读取模块806,用于按照偏移量从数组中读取目标数据。
在一个实施例中,数据读取模块806还用于根据偏移量和数组的单位元素的存储量,确定目标数据在数组中的元素序号;根据偏移量和单位字节的位数,确定目标数据在元素序号的元素中的字节序号和位序号;在数组中,从元素序号、字节序号和位序号所表示的位置起,按照目标数据对应的单元格存储量读取目标数据。
关于数据存储装置和数据检索装置的具体限定可以参见上文中对于数据存储方法和数据检索方法的限定,在此不再赘述。上述数据存储装置和数据检索装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图1所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。可以理解的是,当计算机设备为终端时,该计算机设备还可以包括显示屏和输入装置等。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于数据存储和数据检索中的至少一种。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现数据存储方法和数据检索方法中的至少一种。
本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例的数据存储方法或数据检索方法。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例的数据存储方法或数据检索方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (11)
1.一种数据存储方法,所述方法包括:
获取二维表中第一维度各排单元格的最大存储值;
按照所述最大存储值的存储量确定第一维度各排的单元格存储量;
根据所述单元格存储量和所述二维表中第二维度的排数确定总存储量;
按照所述总存储量建立数组;
将所述二维表中第二维度各排单元格的数据,按照第一维度中相应排的所述单元格存储量,连续存储至所述数组。
2.根据权利要求1所述的方法,其特征在于,所述根据所述单元格存储量和所述二维表中第二维度的排数确定总存储量包括:
按照第一维度各排的单元格存储量,确定第二维度的单排存储量;
根据所述单排存储量和所述二维表中第二维度的排数确定总存储量。
3.根据权利要求1所述的方法,其特征在于,所述按照所述总存储量建立数组包括:
获取待建立的数组的数组类型;
确定所述数组类型对应的单位元素的存储量;
按照所述总存储量和所述单位元素的存储量确定建立数组的元素数量;
按照所述元素数量创建所述数组类型的数组。
4.根据权利要求1所述的方法,其特征在于,所述将所述二维表中第二维度各排单元格的数据,按照第一维度中相应排的所述单元格存储量,连续存储至所述数组包括:
按照所述二维表中第二维度各排的顺序以及相应排中单元格的顺序,将所述二维表中第二维度各排单元格的数据,按照第一维度中相应排的所述单元格存储量连续存储至数组;
在连续存储至数组时,从所述数组中首元素的首字节中的首位开始,按照所述数组中元素的顺序、所述元素中字节的顺序以及所述字节中位的顺序进行连续存储。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述第一维度的排是所述二维表的列;所述第二维度的排是所述二维表的行;或者,
所述第一维度的排是所述二维表的行;所述第二维度的排是所述二维表的列。
6.一种数据检索方法,所述方法包括:
获取目标数据在二维表中的第一维度排序号和第二维度排序号;
按所述第一维度排序号和相应的如权利要求1至5中任一项所述的单元格存储量、以及所述第二维度排序号,确定所述目标数据在如权利要求1至5中任一项所述的数组中的偏移量;
按照所述偏移量从所述数组中读取所述目标数据。
7.根据权利要求6所述的方法,其特征在于,所述按照所述偏移量从所述数组中读取所述目标数据包括:
根据所述偏移量和所述数组的单位元素的存储量,确定所述目标数据在所述数组中的元素序号;
根据所述偏移量和单位字节的位数,确定所述目标数据在所述元素序号的元素中的字节序号和位序号;
在所述数组中,从所述元素序号、所述字节序号和所述位序号所表示的位置起,按照所述目标数据对应的单元格存储量读取所述目标数据。
8.一种数据存储装置,其特征在于,所述装置包括:
最大存储值获取模块,用于获取二维表中第一维度各排单元格的最大存储值;
单元格存储量确定模块,用于按照所述最大存储值的存储量确定第一维度各排的单元格存储量;
总存储量确定模块,用于根据所述单元格存储量和所述二维表中第二维度的排数确定总存储量;
数组建立模块,用于按照所述总存储量建立数组;
数据存储模块,用于将所述二维表中第二维度各排单元格的数据,按照第一维度中相应排的所述单元格存储量,连续存储至所述数组。
9.一种数据检索装置,其特征在于,所述装置包括:
排序号获取模块,用于获取目标数据在二维表中的第一维度排序号和第二维度排序号;
偏移量确定模块,用于按所述第一维度排序号和相应的如权利要求1至5中任一项所述的单元格存储量、以及所述第二维度排序号,确定所述目标数据在如权利要求1至5中任一项所述的数组中的偏移量;
数据读取模块,用于按照所述偏移量从所述数组中读取所述目标数据。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811360599.4A CN109634955B (zh) | 2018-11-15 | 2018-11-15 | 数据存储方法、数据检索方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811360599.4A CN109634955B (zh) | 2018-11-15 | 2018-11-15 | 数据存储方法、数据检索方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109634955A true CN109634955A (zh) | 2019-04-16 |
CN109634955B CN109634955B (zh) | 2021-07-27 |
Family
ID=66068124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811360599.4A Active CN109634955B (zh) | 2018-11-15 | 2018-11-15 | 数据存储方法、数据检索方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109634955B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860371A (zh) * | 2019-11-28 | 2021-05-28 | 北京京东振世信息技术有限公司 | 一种Queue容器的实现方法和装置 |
CN117474442A (zh) * | 2023-12-27 | 2024-01-30 | 歌尔股份有限公司 | 料盘取放料位置确定方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1373876A (zh) * | 1999-07-29 | 2002-10-09 | 特博数据实验室公司 | 表格式数据显示方法、插入方法、删除方法和更新方法 |
US7370054B1 (en) * | 2003-09-29 | 2008-05-06 | Sun Microsystems, Inc | Method and apparatus for indexing a hash table which is organized as a linked list |
CN103164490A (zh) * | 2011-12-19 | 2013-06-19 | 北京新媒传信科技有限公司 | 一种不固定长度数据的高效存储实现方法和装置 |
CN104021161A (zh) * | 2014-05-27 | 2014-09-03 | 华为技术有限公司 | 一种聚簇存储方法及装置 |
CN108205577A (zh) * | 2016-12-20 | 2018-06-26 | 阿里巴巴集团控股有限公司 | 一种数组构建、数组查询的方法、装置及电子设备 |
-
2018
- 2018-11-15 CN CN201811360599.4A patent/CN109634955B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1373876A (zh) * | 1999-07-29 | 2002-10-09 | 特博数据实验室公司 | 表格式数据显示方法、插入方法、删除方法和更新方法 |
US7370054B1 (en) * | 2003-09-29 | 2008-05-06 | Sun Microsystems, Inc | Method and apparatus for indexing a hash table which is organized as a linked list |
CN103164490A (zh) * | 2011-12-19 | 2013-06-19 | 北京新媒传信科技有限公司 | 一种不固定长度数据的高效存储实现方法和装置 |
CN104021161A (zh) * | 2014-05-27 | 2014-09-03 | 华为技术有限公司 | 一种聚簇存储方法及装置 |
CN108205577A (zh) * | 2016-12-20 | 2018-06-26 | 阿里巴巴集团控股有限公司 | 一种数组构建、数组查询的方法、装置及电子设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860371A (zh) * | 2019-11-28 | 2021-05-28 | 北京京东振世信息技术有限公司 | 一种Queue容器的实现方法和装置 |
CN117474442A (zh) * | 2023-12-27 | 2024-01-30 | 歌尔股份有限公司 | 料盘取放料位置确定方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109634955B (zh) | 2021-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108933993A (zh) | 短信缓存队列选择方法、装置、计算机设备和存储介质 | |
CN111079917B (zh) | 张量数据分块存取的方法及装置 | |
CN109189785A (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
CN106874348B (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
CN109597571A (zh) | 数据存储方法、数据读取方法、装置和计算机设备 | |
CN106407191B (zh) | 一种数据处理方法及服务器 | |
CN108509592B (zh) | 基于Redis的数据存储方法、读取方法及装置 | |
CN109523117A (zh) | 风险预测方法、装置、计算机设备和存储介质 | |
CN109783788A (zh) | 数据表填补方法、装置、计算机设备和存储介质 | |
CN113032007B (zh) | 一种数据处理方法及装置 | |
CN109634955A (zh) | 数据存储方法、数据检索方法和装置 | |
CN109325118A (zh) | 不平衡样本数据预处理方法、装置和计算机设备 | |
CN109040191A (zh) | 文件下载方法、装置、计算机设备和存储介质 | |
CN110968585A (zh) | 面向列的存储方法、装置、设备及计算机可读存储介质 | |
CN112613271A (zh) | 数据分页方法、装置、计算机设备及存储介质 | |
CN111178830B (zh) | 成本的核算方法、装置、计算机设备和存储介质 | |
CN109614399B (zh) | 位图数据查询方法、装置、计算机设备和存储介质 | |
CN106227506A (zh) | 一种内存压缩系统中的多通道并行压缩解压系统及方法 | |
CN107451070A (zh) | 一种数据的处理方法和服务器 | |
CN109785867A (zh) | 双录流程配置方法、装置、计算机设备和存储介质 | |
CN111046240B (zh) | 网关流量统计方法、装置、计算机设备和存储介质 | |
CN109460229A (zh) | 代码文件生成方法、装置、计算机设备和存储介质 | |
US20230161835A1 (en) | Matrix operation method and accelerator | |
CN115268794A (zh) | 数据存储方法及相关装置 | |
CN113722623A (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 |