CN110096477A - 一种数据存储的方法及装置 - Google Patents
一种数据存储的方法及装置 Download PDFInfo
- Publication number
- CN110096477A CN110096477A CN201910364844.7A CN201910364844A CN110096477A CN 110096477 A CN110096477 A CN 110096477A CN 201910364844 A CN201910364844 A CN 201910364844A CN 110096477 A CN110096477 A CN 110096477A
- Authority
- CN
- China
- Prior art keywords
- data
- stored
- sequence
- priority
- subsequence
- 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
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/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/113—Details of archiving
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据存储的方法和装置,在该方法中在确定出各待存储数据以及包含各待存储数据的各数据集后,可以针对每个待存储数据,根据包含该待存储数据的各数据集,确定出该待存储数据对应的优先级,根据各待存储数据的优先级,对各待存储数据进行编号,进而针对每个数据集,根据各待存储数据的编号,将该数据集按照预设的位图数据结构转换为位图数据进行存储。这样一来,基于数据序列而得到的各数据集的位图数据,能够得到尽可能多的无效位数据,从而有效的降低了存储位图数据时所占用的存储空间。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种数据存储的方法及装置。
背景技术
面对互联网中数据日益激增所带来的数据存储压力,可以采用位图数据结构进行数据存储,位图数据不仅能够在一定程度上节省存储空间,而且对于进行诸如数据分析、数据统计等数据处理较为方便。
当前,将多个待存储数据进行存储时,需要分别对这些待存储数据进行编号,并根据各待存储数据的编号,将这些待存储数据按照位图数据结构进行转换,从而得到相应的位图数据。
然而,由于在现有技术中,通常采用的是随机编号的方式对各待存储数据进行编号,这样一来,将各待存储数据转换成位图数据时,并不能保证得到的位图数据中的无效位数据尽可能的多,而无效位数据的减少,将会使存储位图数据所占用的存储空间增加。
基于此,如何能够保证位图数据中的无效位数据尽可能的多,以降低存储位图数据时所占用的存储空间,则是一个亟待解决的问题。
发明内容
本申请实施例提供一种数据存储的方法及装置,用以解决现有技术中存储位图数据时占用存储空间较大的问题。
本申请采用下述技术方案:
本申请提供了一种数据存储的方法,包括:
获取各待存储数据以及包含所述各待存储数据的各数据集;
针对每个待存储数据,根据包含该待存储数据的各数据集,确定该待存储数据对应的优先级;
根据所述各待存储数据的优先级,对所述各待存储数据进行编号,其中,针对每个待存储数据,若该待存储数据的优先级越高,则该待存储数据的编号越接近所有待存储数据的编号的中位数;
针对每个数据集,根据所述各待存储数据的编号,将该数据集按照预设的位图数据结构转换为位图数据进行存储。
可选地,针对每个待存储数据,根据包含该待存储数据的各数据集,确定该待存储数据对应的优先级,具体包括:
确定包含该待存储数据的各数据集中所有数据的数量,作为该待存储数据对应的相关数据数量;
按照所述各待存储数据对应的各相关数据数量从大到小的顺序,确定所述各待存储数据对应的优先级。
可选地,根据所述各待存储数据的优先级,对所述各待存储数据进行编号,具体包括:
按照所述各待存储数据的优先级从高到低的顺序,将所述各待存储数据进行排序,得到第一序列;
根据预设的切分方式,确定所述第一序列中的各切分点;
将所述第一序列中相邻两个切分点之间的序列作为子序列;
按照各子序列各自在所述第一序列中所处位置分别到所述第一序列的序列头的各距离的从小到大顺序,确定出各子序列的优先级;
按照各子序列的优先级从高到低的顺序,将各子序列进行排序,得到第二序列,并按照所述第二序列中所述各待存储数据的排列顺序,对所述各待存储数据进行依次编号,其中,针对每个子序列,若该子序列的优先级越高,则该子序列在所述第二序列中的位置距离所述第二序列的中间位置越近。
可选地,根据预设的切分方式,确定所述第一序列中的各切分点,具体包括:
按照预设的切分比例,确定所述第一序列中的各切分点。
本申请提供了一种数据存储的装置,包括:
获取模块,用于获取各待存储数据以及包含所述各待存储数据的各数据集;
确定模块,用于针对每个待存储数据,根据包含该待存储数据的各数据集,确定该待存储数据对应的优先级;
编号模块,用于根据所述各待存储数据的优先级,对所述各待存储数据进行编号,其中,针对每个待存储数据,若该待存储数据的优先级越高,则该待存储数据的编号越接近所有待存储数据的编号的中位数;
存储模块,用于针对每个数据集,根据所述各待存储数据的编号,将该数据集按照预设的位图数据结构转换为位图数据进行存储。
可选地,所述确定模块具体用于,确定包含该待存储数据的各数据集中所有数据的数量,作为该待存储数据对应的相关数据数量;按照所述各待存储数据对应的各相关数据数量从大到小的顺序,确定所述各待存储数据的优先级。
可选地,所述编号模块具体用于,按照所述各待存储数据的优先级从高到低的顺序,将所述各待存储数据进行排序,得到第一序列;根据预设的切分方式,确定所述第一序列中的各切分点;将所述第一序列中相邻两个切分点之间的序列作为子序列;按照各子序列各自在所述第一序列中所处位置分别到所述第一序列的序列头的各距离的从小到大顺序,确定出各子序列的优先级;按照各子序列的优先级从高到低的顺序,将各子序列进行排序,得到第二序列,并按照所述第二序列中所述各待存储数据的排列顺序,对所述各待存储数据进行依次编号,其中,针对每个子序列,若该子序列的优先级越高,则该子序列在所述第二序列中的位置距离所述第二序列的中间位置越近。
可选地,所述编号模块具体用于,按照预设的切分比例,确定所述第一序列中的各切分点。
本申请提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据存储的方法。
本申请提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数据存储的方法。
本申请采用的上述至少一个技术方案能够达到以下有益效果:
从上述方法中可以看出,在确定出各待存储数据以及包含各待存储数据的各数据集后,可以针对每个待存储数据,根据包含该待存储数据的各数据集,确定出该待存储数据对应的优先级,根据各待存储数据的优先级,对各待存储数据进行编号,进而针对每个数据集,根据各待存储数据的编号,将该数据集按照预设的位图数据结构转换为位图数据进行存储。
按照上述方法得到的各待存储数据的编号,将各数据集转换为各位图数据时,其实是尽可能的将出现频率较低的待存储数据设置于位图数据中成为无效位数据概率较大的位置上。这样一来,基于数据序列而得到的各数据集的位图数据,能够得到尽可能多的无效位数据,从而有效的降低了存储位图数据时所占用的存储空间。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为现有技术中通过位图数据结构进行数据存储的示意图;
图2为本申请实施例中一种数据存储的方法的流程示意图;
图3为本申请提供的一种数据存储的装置示意图;
图4为本申请提供的对应于图1的电子设备示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,可以采用位图数据结构进行数据存储,以应对互联网中数据激增所带来的数据存储压力,如图1所示。
图1为现有技术中通过位图数据结构进行数据存储的示意图。
例如,假设有数据[4、2、6、13、3、7、9、11],并采用如图1所示的位图数据结构存储这些数据,其中,该位图数据结构为16位,按照从右到左的顺序依次对应0~15这些数据。将数据[4、2、6、13、3、7、9、11]按照该位图数据结构进行存储时,可以将需要存储的每个数据在该位图数据结构中相应的位置置为1,如,对于数据:4,可以将位图数据结构中4所对应的位置(即从右到左数该位图数据结构中的第5位)置为1,对于数据:6,可以将位图数据结构中6所对应的位置(即从右到左数该位图数据结构中的第7位)置为1,以此类推,从而得到如图1所示的位图数据。
按照位图数据结构进行数据存储后,可以方便、快捷的判断数据是否存在,例如,判断数据:7是否存在时,从上述位图数据结构中7所对应的位置(即从右到左数该位图数据结构中的第8位)上的1可以得出数据:7存在,判断数据:10是否存在时,从上述位图数据结构中10所对应的位置(即从右到左数该位图数据结构中的第11位)上的0可以得出数据:10不存在。
在实际应用中,可以利用位图数据进行诸如数据分析、数据统计等数据处理。例如,假设有A、B、C、D四个用户,以及人群1(B、C、D)、人群2(A、B)以及人群3(A、C)这三个人群。在进行数据存储时,可以先将A、B、C、D这4个用户分别编号为1、3、4、2,而后,再按照该编号,将这三个人群分别转换为位图数据结构形式的位图数据进行存储。当采用4位的位图数据结构表示这三个人群时,人群1中包含的用户B、C、D分别对应的编号为:3、4、2,则可以将位图数据结构中的第3位、第4位、第2位的位置置为1,得到位图数据:1110,即,可以通过该位图数据:1110来表示人群1。同理,人群2可以表示为:0101,人群3可以表示为:1001。后续即可通过这三个人群所对应的位图数据,实现诸如对各用户在哪些人群中出现,各人群之间的用户相似度等人群分析。
位图数据中的各位数据可以分为有效位数据和无效位数据,其中,无效位数据是指位图数据中开头或结尾处连续若干个0所组成的部分。例如,对于为位图数据:000101011110100,从右向左数的头两位和后三位这两部分均由连续的0组成,则这5位数据可以称之为无效位数据。而位图数据中除无效位数据以外的数据则称之为有效位数据,如,1010111101即为有效位数据。
在将位图数据进行存储时,可以通过注解的形式,指出该位图数据的实际位数,以及有效位数据的起始位数,并将无效位数据省略,以降低存储该位图数据时所占用的存储空间。
然而在存储位图数据时,能够节省多少存储空间,或是能够得到多少无效位数据,往往与数据的编号有着密切的关系。继续以上述示例说明,将A、B、C、D这四个用户编号为:1、3、4、2时,上述三个人群所对应的位图数据中的无效位数据一共有2位(1110有1位,0101有1位,1001没有无效位数据),而将这四个用户编号为1、2、3、4时,上述三个人群所对应的位图数据中的无效位数据一共有4位(人群1:1110,有1位无效位数据;人群2:0011,有2位无效位数据;人群3:0101,有1位无效位数据)。所以,若数据的编号方式不当,则可能导致得到的位图数据的无效位数据较少,从而在存储位图数据时占用较多的存储空间。
为了解决现有技术中出现的问题,本申请提供了一种数据存储的方法,通过该方法能够将待存储数据转换成位图数据进行存储时得到尽可能多的无效位数据,从而有效的节省了存储空间。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图2为本申请实施例中一种数据存储的方法的流程示意图,具体包括以下步骤:
S201:获取各待存储数据以及包含所述各待存储数据的各数据集。
在本申请实施例中,可以获取需要进行存储的待存储数据以及包含有这些待存储数据的各数据集。其中,获取各待存储数据以及包含各待存储数据的数据集的执行主体可以是服务器,也可以是诸如电脑等终端设备。为了便于后续的描述,下面将仅以服务器为执行主体,对本申请提供的数据存储的方法进行说明。
S202:针对每个待存储数据,根据包含该待存储数据的各数据集,确定该待存储数据对应的优先级。
服务器在获取到各待存储数据以及包含有各待存储数据的各数据集后,可以针对每个待存储数据,确定出该待存储数据对应的优先级。具体的,服务器可以根据包含有该待存储数据的各数据集中包含的所有数据的数量,作为该待存储数据对应的相关数据数量,进而根据该相关数据数量,确定出该待存储数据的优先级。
例如,假设服务器获取到的四个待存储数据分别为:用户A、用户B、用户C、用户D,包含有这些待存储数据的数据集有三个,分别为:数据集1(包含有用户B、C、D)、数据集2(包含有用户A、B)、数据集3(包含有用户A、C)。
从各数据集中包含的数据可以看出,用户A在数据集2和数据集3中一共出现了2次,用户B在数据集1和数据集2中一共出现了2次,用户C在数据集1和数据集3一共出现了2次,用户D在数据集1中出现了1次。
基于此,针对每个待存储数据,将包含有该待存储数据的每个数据集所包含的数据的数量进行加和,以得到该待存储数据对应的相关数据数量。其中,用户A在数据集2和数据集3中出现,则在确定该用户A对应的相关数据数量时,可以将数据集2和数据集3中包含的数据的数量进行加和,即:2+2=4,进而根据得到的和值,确定出该用户A对应的相关数据数量。
同理,可以按照上述方法,分别确定出用户B、C、D对应的相关数据数量,其中,针对每个待存储数据,包含有该待存储数据的数据集所包含的所有数据的数量,具体如下表所示。
表1
从上述表中可以看出,用户B(用户C与用户B的相同)对应的相关数据数量最多,用户A对应的相关数据数量次之,用户D对应的相关数据数量最少。基于此,可以确定出用户B和用户C的优先级最高,用户A的优先级次之,用户D的优先级最低。
通过上述方法确定出各待存储数据的优先级,主要考虑到若是待存储数据在各数据集中出现的次数越多,则说明后续将各数据集转换成位图数据时,该待存储数据在位图数据中所对应的位置位于有效位的可能性越大,反之,若是该待存储数据在各数据集中出现的次数越少,则说明后续将各数据集转换成位图数据时,该待存储数据在位图数据中所对应的位置位于无效位的可能性越大。
基于包含该待存储数据的各数据集中所有数据的数量来确定该待存储数据对应的优先级,而并非单纯的基于该待存储数据在各数据集中的出现次数来确定该待存储数据对应的优先级,主要是从编号阶段,该待存储数据对其他待存储数据的编号造成多大影响的角度而出发的。其中,若是包含有该待存储数据的各数据集所包含的数据的数量越大,则说明在编号阶段,该待存储数据对其他待存储数据的编号造成的影响越大,反之则越小。
而值得一提的是,若是该待存储数据在各数据集中出现的次数越多,则包含有该待存储数据的各数据集中所包含的所有数据的数量在很大程度上也越大,所以,从该待存储数据在各数据集中出现的次数,以及该待存储数据在编号时对其他待存储数据的影响程度这两个角度出发,可以基于包含该待存储数据的各数据集中所有数据的数量来确定该待存储数据对应的优先级。
S203:根据所述各待存储数据的优先级,对所述各待存储数据进行编号,其中,针对每个待存储数据,若该待存储数据的优先级越高,则该待存储数据的编号越接近所有待存储数据的编号的中位数。
服务器可以基于确定出的各待存储数据的优先级,对各待存储数据进行编号。其中,考虑到后续基于得到的各待存储数据的编号对各数据集进行转换时需要得到较多的无效位数据,则可以使各数据集中出现次数较少的待存储数据,即,优先级较低的待存储数据的编号尽可能的位于这些待存储数据所有编号的两端。相应的,优先级较高的待存储数据的编号应尽可能的接近所有待存储数据的编号的中位数。
具体的,服务器可以按照各待存储数据的优先级的从高到低的顺序,将各待存储数据进行排序,得到第一序列,而后,可以按照预设的切分方式,在第一序列中确定出若干的切分点。服务器可以将该第一序列中相邻两个切分点之间的序列作为子序列进行切分,从而得到各子序列,其中,若子序列在该第一序列中的位置越靠前,则说明该子序列的优先级越高。服务器可以按照各子序列各自在该第一序列中所处位置分别到该第一序列的序列头的各距离的从小到大顺序,确定出各子序列的优先级。而后,按照各子序列的优先级从高到低的顺序,将各子序列进行排序,得到第二序列,并按照该第二序列中各待存储数据的排列顺序,对各待存储数据进行依次编号。其中,针对每个子序列,若是该子序列对应的优先级越高,则该子序列在该第二序列中的位置距离该第二序列的中间位置越近。
其中,服务器在对第一序列进行切分时,可以按照预设的切分比例,确定出位于第一序列中的各切分点,进而按照这些切分点,将该第一序列进行切分,得到若干子序列。
继续以上述示例进行说明,服务器确定出用户A~D的优先级后,可以将这四个用户按照优先级的高低顺序进行排序,得到第一序列:[B、C、A、D]。其中,由于用户B和用户C的优先级相同,所以,将用户B或用户C排在该第一序列中的第一位均可。
服务器可以将该第一序列按照预设的切分比例:[1/2、1/2],对该第一序列进行切分,拆分成[B、C],[A],[D]这三个子序列。其中,切分比例中的第一个1/2是指将第一序列的一半(即,从序列头到序列中部的这部分)进行切分,以得到子序列[B、C],而切分比例中的第二个1/2是指,将剩余部分的一半进行切分,从而得到子序列[A]和子序列[D]。
从这三个子序列在该第一序列所处的位置可以看出,子序列[B、C]在该第一序列中的位置最靠前,即,该子序列[B、C]在第一序列中所处位置到该第一序列的序列头的距离最小,则该子序列[B、C]的优先级最高,同理,子序列[A]的优先级次之,子序列[D]的优先级最低。基于此,可以将子序列[B、C]排在中间位置,将子序列[A]和子序列[D]分别排在子序列[B、C]的两侧,从而得到第二序列:[A、B、C、D]。
服务器确定出该第二序列后,可以按照这四个用户在该第二序列中的排列顺序,将这四个用户进行依次编号,得到的编号如下表所示。
用户A | 用户B | 用户C | 用户D |
1 | 2 | 3 | 4 |
表2
需要说明的是,除了上述示例中列举出的一种切分比例外,也可以通过其他的切分比例切分第一序列,例如,可以按照切分比例:[3/4],将该第一序列切分成子序列[B、C、A]和子序列[D];再例如,可以按照切分比例:[1/4、2/3],将该第一序列切分成子序列[B]、子序列[C、A]和子序列[D]。当然,在实际应用中,可以将对不同数据集转换成各位图数据时所采用的各种切分比例进行统计,以得出对于普遍的数据集来说,哪种切分比例最为有效,即,基于哪种切分比例得到的位图数据的无效位数据较多。进而后续可以基于统计出的最有效的切分比例,对不同的第一序列进行拆分。
S204:针对每个数据集,根据所述各待存储数据的编号,将该数据集按照预设的位图数据结构转换为位图数据进行存储。
在得到各待存储数据的编号后,针对每个数据集,可以根据各待存储数据的编号,将该数据集按照预设的位图数据结构转换为位图数据进行存储。继续以上述示例进行说明,在得到上述表2所示的各待存储数据的编号后,可以将数据集1(用户B、C、D),数据集2(用户A、B),数据集3(用户A、C)分别转换成位图数据。其中,数据集1转换成位图数据为:1110,数据集2转换成位图数据为:0011,数据集3转换成位图数据为:0101。这三个位图数据中的无效位数据一共有4个,服务器将这四个位图数据进行存储时,可以通过省略这4个无效位数据来节省一定的存储空间。
也就是说,按照上述方式对各待存储数据进行编号,能够有效的保证在得到的各位图数据的总体上尽可能的增加无效位数据的数量,从而有效的节省了存储各位图数据的存储空间。
综上所述,按照上述方法得到的各待存储数据的编号,将各数据集转换为各位图数据时,其实是尽可能的将出现频率较低的待存储数据设置于位图数据中成为无效位数据概率较大的位置上。这样一来,基于数据序列而得到的各数据集的位图数据,能够得到尽可能多的无效位数据,从而有效的降低了存储位图数据时所占用的存储空间。
换句话说,一般无效位数据均分布在位图数据中的前若干位和后若干位,所以,按照上述方法得到的各待存储数据的编号对各数据集进行转换时,其实是将出现频率较低的待存储数据的编号在位图数据中所对应的位置,尽可能的设置于位图数据中的前若干位或后若干位,从而能够有效的保证得到的位图数据的无效位数据尽可能多,节省了存储位图数据的存储空间。
以上为本申请的一个或多个实施例提供的数据存储的方法,基于同样的思路,本申请还提供了相应的数据存储的装置,如图3所示。
图3为本申请提供的一种数据存储的装置示意图,具体包括:
获取模块301,用于获取各待存储数据以及包含所述待存储数据的各数据集;
确定模块302,用于针对每个待存储数据,根据包含该待存储数据的各数据集,确定该待存储数据对应的优先级;
编号模块303,用于根据所述各待存储数据的优先级,对所述各待存储数据进行编号,其中,针对每个待存储数据,若该待存储数据的优先级越高,则该待存储数据的编号越接近所有待存储数据的编号的中位数;
存储模块304,用于针对每个数据集,根据所述各待存储数据的编号,将该数据集按照预设的位图数据结构转换为位图数据进行存储。
所述确定模块302具体用于,确定包含该待存储数据的各数据集中所有数据的数量,作为该待存储数据对应的相关数据数量;按照所述各待存储数据对应的各相关数据数量从大到小的顺序,确定所述各待存储数据对应的优先级。
所述编号模块303具体用于,按照所述各待存储数据的优先级从高到低的顺序,将所述各待存储数据进行排序,得到第一序列;根据预设的切分方式,确定所述第一序列中的各切分点;将所述第一序列中相邻两个切分点之间的序列作为子序列;按照各子序列各自在所述第一序列中所处位置分别到所述第一序列的序列头的各距离的从小到大顺序,确定出各子序列的优先级;按照各子序列的优先级从高到低的顺序,将各子序列进行排序,得到第二序列,并按照所述第二序列中所述各待存储数据的排列顺序,对所述各待存储数据进行依次编号,其中,针对每个子序列,若该子序列的优先级越高,则该子序列在所述第二序列中的位置距离所述第二序列的中间位置越近。
所述编号模块303具体用于,按照预设的切分比例,确定所述第一序列中的各切分点。
本申请实施例还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的数据存储的方法。
本申请实施例还提供了图4所示的电子设备的示意结构图。如图4所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图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 (10)
1.一种数据存储的方法,其特征在于,包括:
获取各待存储数据以及包含所述各待存储数据的各数据集;
针对每个待存储数据,根据包含该待存储数据的各数据集,确定该待存储数据对应的优先级;
根据所述各待存储数据的优先级,对所述各待存储数据进行编号,其中,针对每个待存储数据,若该待存储数据的优先级越高,则该待存储数据的编号越接近所有待存储数据的编号的中位数;
针对每个数据集,根据所述各待存储数据的编号,将该数据集按照预设的位图数据结构转换为位图数据进行存储。
2.如权利要求1所述的方法,其特征在于,针对每个待存储数据,根据包含该待存储数据的各数据集,确定该待存储数据对应的优先级,具体包括:
确定包含该待存储数据的各数据集中所有数据的数量,作为该待存储数据对应的相关数据数量;
按照所述各待存储数据对应的各相关数据数量从大到小的顺序,确定所述各待存储数据对应的优先级。
3.如权利要求1所述的方法,其特征在于,根据所述各待存储数据的优先级,对所述各待存储数据进行编号,具体包括:
按照所述各待存储数据的优先级从高到低的顺序,将所述各待存储数据进行排序,得到第一序列;
根据预设的切分方式,确定所述第一序列中的各切分点;
将所述第一序列中相邻两个切分点之间的序列作为子序列;
按照各子序列各自在所述第一序列中所处位置分别到所述第一序列的序列头的各距离的从小到大顺序,确定出各子序列的优先级;
按照各子序列的优先级从高到低的顺序,将各子序列进行排序,得到第二序列,并按照所述第二序列中所述各待存储数据的排列顺序,对所述各待存储数据进行依次编号,其中,针对每个子序列,若该子序列的优先级越高,则该子序列在所述第二序列中的位置距离所述第二序列的中间位置越近。
4.如权利要求3所述的方法,其特征在于,根据预设的切分方式,确定所述第一序列中的各切分点,具体包括:
按照预设的切分比例,确定所述第一序列中的各切分点。
5.一种数据存储的装置,其特征在于,包括:
获取模块,用于获取各待存储数据以及包含所述待存储数据的各数据集;
确定模块,用于针对每个待存储数据,根据包含该待存储数据的各数据集,确定该待存储数据对应的优先级;
编号模块,用于根据所述各待存储数据的优先级,对所述各待存储数据进行编号,其中,针对每个待存储数据,若该待存储数据的优先级越高,则该待存储数据的编号越接近所有待存储数据的编号的中位数;
存储模块,用于针对每个数据集,根据所述各待存储数据的编号,将该数据集按照预设的位图数据结构转换为位图数据进行存储。
6.如权利要求5所述的装置,其特征在于,所述确定模块具体用于,确定包含该待存储数据的各数据集中所有数据的数量,作为该待存储数据对应的相关数据数量;按照所述各待存储数据对应的各相关数据数量从大到小的顺序,确定所述各待存储数据的优先级。
7.如权利要求5所述的装置,其特征在于,所述编号模块具体用于,按照所述各待存储数据的优先级从高到低的顺序,将所述各待存储数据进行排序,得到第一序列;根据预设的切分方式,确定所述第一序列中的各切分点;将所述第一序列中相邻两个切分点之间的序列作为子序列;按照各子序列各自在所述第一序列中所处位置分别到所述第一序列的序列头的各距离的从小到大顺序,确定出各子序列的优先级;按照各子序列的优先级从高到低的顺序,将各子序列进行排序,得到第二序列,并按照所述第二序列中所述各待存储数据的排列顺序,对所述各待存储数据进行依次编号,其中,针对每个子序列,若该子序列的优先级越高,则该子序列在所述第二序列中的位置距离所述第二序列的中间位置越近。
8.如权利要求7所述的装置,其特征在于,所述编号模块具体用于,按照预设的切分比例,确定所述第一序列中的各切分点。
9.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~4任一项所述的方法。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1~4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910364844.7A CN110096477B (zh) | 2019-04-30 | 2019-04-30 | 一种数据存储的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910364844.7A CN110096477B (zh) | 2019-04-30 | 2019-04-30 | 一种数据存储的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110096477A true CN110096477A (zh) | 2019-08-06 |
CN110096477B CN110096477B (zh) | 2022-04-01 |
Family
ID=67446676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910364844.7A Active CN110096477B (zh) | 2019-04-30 | 2019-04-30 | 一种数据存储的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110096477B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116010299A (zh) * | 2023-03-29 | 2023-04-25 | 摩尔线程智能科技(北京)有限责任公司 | 一种数据处理方法、装置、设备及可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5202999A (en) * | 1992-01-10 | 1993-04-13 | Digital Equipment Corporation | Access request prioritization and summary device |
US20040199917A1 (en) * | 1999-11-12 | 2004-10-07 | Adi Ofer | Operation prioritization and selection in a probability-based job scheduler |
CN103458023A (zh) * | 2013-08-30 | 2013-12-18 | 清华大学 | 分布式闪存存储系统 |
CN103729480A (zh) * | 2014-01-29 | 2014-04-16 | 重庆邮电大学 | 一种多核实时操作系统多个就绪任务快速查找及调度方法 |
CN103853500A (zh) * | 2012-12-07 | 2014-06-11 | 中国移动通信集团河南有限公司 | 一种基于海量数据的数据分配方法、装置及系统 |
CN105204782A (zh) * | 2015-10-13 | 2015-12-30 | 中国联合网络通信集团有限公司 | 一种实现数据存储的方法及装置 |
-
2019
- 2019-04-30 CN CN201910364844.7A patent/CN110096477B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5202999A (en) * | 1992-01-10 | 1993-04-13 | Digital Equipment Corporation | Access request prioritization and summary device |
US20040199917A1 (en) * | 1999-11-12 | 2004-10-07 | Adi Ofer | Operation prioritization and selection in a probability-based job scheduler |
CN103853500A (zh) * | 2012-12-07 | 2014-06-11 | 中国移动通信集团河南有限公司 | 一种基于海量数据的数据分配方法、装置及系统 |
CN103458023A (zh) * | 2013-08-30 | 2013-12-18 | 清华大学 | 分布式闪存存储系统 |
CN103729480A (zh) * | 2014-01-29 | 2014-04-16 | 重庆邮电大学 | 一种多核实时操作系统多个就绪任务快速查找及调度方法 |
CN105204782A (zh) * | 2015-10-13 | 2015-12-30 | 中国联合网络通信集团有限公司 | 一种实现数据存储的方法及装置 |
Non-Patent Citations (1)
Title |
---|
姜伟: ""基于压缩位图索引的RDF数据存储与管理"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116010299A (zh) * | 2023-03-29 | 2023-04-25 | 摩尔线程智能科技(北京)有限责任公司 | 一种数据处理方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110096477B (zh) | 2022-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391527A (zh) | 一种基于区块链的数据处理方法及设备 | |
CN107450972A (zh) | 一种调度方法、装置以及电子设备 | |
CN107679700A (zh) | 业务流程处理方法、装置及服务器 | |
CN108415941A (zh) | 一种网页爬虫方法、装置以及电子设备 | |
CN110134668A (zh) | 应用于区块链的数据迁移方法、装置和设备 | |
CN107577697A (zh) | 一种数据处理方法、装置及设备 | |
CN106201673B (zh) | 一种地震数据处理方法及装置 | |
CN109617829A (zh) | 一种业务请求数据的处理方法、装置及系统 | |
CN109299096A (zh) | 一种流水数据的处理方法、装置及设备 | |
CN108733546A (zh) | 一种日志采集方法、装置及设备 | |
CN109327715A (zh) | 一种视频风险识别方法、装置及设备 | |
CN108021610A (zh) | 随机游走、基于分布式系统的随机游走方法、装置以及设备 | |
CN109271587A (zh) | 一种页面生成方法和装置 | |
CN110019277A (zh) | 一种数据累积的方法、数据查询的方法、装置及设备 | |
CN108073687A (zh) | 随机游走、基于集群的随机游走方法、装置以及设备 | |
US20200232855A1 (en) | Method, Apparatus, Touch Chip and Electronic Device for Determining Temperature Status of Touch Screen | |
CN109597678A (zh) | 任务处理方法及装置 | |
CN110119381A (zh) | 一种索引更新方法、装置、设备及介质 | |
CN110069523A (zh) | 一种数据查询方法、装置和查询系统 | |
CN107025259A (zh) | 一种详情页面的打开方法、设备以及移动终端 | |
CN110096477A (zh) | 一种数据存储的方法及装置 | |
CN109886804A (zh) | 一种任务处理方法及装置 | |
CN109656946A (zh) | 一种多表关联查询方法、装置及设备 | |
CN108804563A (zh) | 一种数据标注方法、装置以及设备 | |
CN108519986A (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 |