CN100472526C - 一种数据存储方法、数据读取方法以及数据检索方法 - Google Patents

一种数据存储方法、数据读取方法以及数据检索方法 Download PDF

Info

Publication number
CN100472526C
CN100472526C CNB2006100905678A CN200610090567A CN100472526C CN 100472526 C CN100472526 C CN 100472526C CN B2006100905678 A CNB2006100905678 A CN B2006100905678A CN 200610090567 A CN200610090567 A CN 200610090567A CN 100472526 C CN100472526 C CN 100472526C
Authority
CN
China
Prior art keywords
data
compressed encoding
integer
byte
mode
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
CNB2006100905678A
Other languages
English (en)
Other versions
CN101075237A (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.)
Tencent Technology Shenzhen Co Ltd
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CNB2006100905678A priority Critical patent/CN100472526C/zh
Publication of CN101075237A publication Critical patent/CN101075237A/zh
Application granted granted Critical
Publication of CN100472526C publication Critical patent/CN100472526C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种数据存储方法,预先设置压缩编码信息,表示压缩编码方式对应的数据类型,该方法包括:当缓冲区中存在剩余空间时,根据所述压缩编码信息,将待存储数据进行字节复用、差分编码和整数压缩方式的压缩编码,保存在所述缓冲区中。相应地,本发明公开了一种数据读取方法,预先获取表示压缩编码方式对应的数据类型的压缩编码信息,该方法包括:将待读取数据从缓冲区中读出,根据压缩编码信息,对被读出的数据进行整数压缩方式、差分编码方式以及字节复用方式对应的解码,得到读取结果。本发明还公开了一种利用上述数据存储和数据读取方法的数据检索方法。本发明中的方法能够增加固定空间的缓冲区存储的数据量,缩短数据检索时间。

Description

一种数据存储方法、数据读取方法以及数据检索方法
技术领域
本发明涉及数据处理技术,尤其涉及一种数据存储方法、数据读取方法以及数据检索方法。
背景技术
随着互联网技术的迅猛发展,呈现在用户面前的信息量也出现了***性的增长趋势,并且信息数据库中所积累的数据和主题越来越多。为了能够更好地保证用户在较短的时间内从海量数据中查找到所需的信息,搜索引擎技术应运而生。此项技术作为网页搜索、新闻搜索、音乐搜索、图片搜索以及地图搜索等业务的核心,具有不可估量的使用价值和商业价值。
索引模块是搜索引擎中的关键部分,该模块为关键词检索提供数据来源和访问接口。换言之,索引模块对原始数据进行分词操作,并利用索引方法处理所获得的各个单词,建立索引并写入用于保存索引数据的文件。在检索数据时,读取保存索引数据的文件,获取检索结果。
业界衡量检索性能的指标主要包括数据量和对用户的检索请求的响应时间。数据量越大、响应时间越短,则检索性能越好。就目前的情况而言,搜索引擎所处理的是海量数据,并且对于用户的检索请求的响应时间在0.1秒的级别。而检索过程中用于对文件进行读取和写入的文件输入输出(IO)操作需要耗费较长的时间,是检索性能的瓶颈。为了提高检索性能,通常将诸如访问率较高或者最近被访问等的数据放入缓冲区(cache)中,在进行数据检索时,优先访问cache,如果能够命中检索结果,则无需进行文件IO操作,有效地缩短了响应时间,提高检索性能。
在目前的数据检索方法中,通常将未经过任何处理的数据直接放入到cache中,以备检索。由于cache的物理内存无法无限制的扩大,则在cache空间一定的情况下,能够保存其内的数据量有限,因此检索结果的命中率受到cache空间的限制,从而检索性能较低。
发明内容
有鉴于此,本发明提供一种数据存储方法,能够增加固定内存空间中的数据存储量。本发明的数据存储方法中,预先设置压缩编码信息,表示压缩编码方式对应的数据类型,当缓冲区中存在剩余空间时,根据所述压缩编码信息,判断待存储数据中是否存在字节复用方式对应的数据类型,如果是,则对所述待存储数据依次进行字节复用、差分编码以及整数压缩方式对应的压缩编码,并将压缩编码结果保存在所述缓冲区中;否则,将待存储数据依次进行差分编码以及整数压缩方式对应的压缩编码,并将压缩编码结果保存在所述缓冲区中。
其中,将待存储数据进行字节复用方式的压缩编码为:
从所述待存储数据中选择出单项数据长度小于1字节并且能够合并到1字
节中的多项数据,将所选择出的多项数据用1字节表示,并将字节复用方式的
压缩编码结果代替所选择出的多项数据,放入待存储数据中。
其中,所述将待存储数据进行差分编码方式的压缩编码为:
从所述待存储数据中选择出有序的整数序列,将有序的整数序列转换为差分序列,并将差分编码方式的压缩编码结果代替被选择出的有序的整数序列,放入待存储数据中。
较佳地,所述字节复用方式的压缩编码与差分编码方式的压缩编码之间,进一步包括:
根据所述压缩编码信息,判断待存储数据中是否存在差分编码方式对应的
有序的整数序列,如果是,则执行所述差分编码方式对应的压缩编码;否则,
执行所述整数压缩方式的压缩编码。
其中,所述将待存储数据进行整数压缩方式的压缩编码为:
从所述待存储数据中选择出整数数据,根据所选择的整数数据的实际大小,确定该整数数据所需的数据长度,按照所确定的数据长度表示该整数数据,并将整数压缩方式的压缩编码结果代替被选择出的整数数据,放入待存储数据中。
较佳地,所述差分编码方式的压缩编码与整数压缩方式的压缩编码之间,进一步包括:
根据所述压缩编码信息,判断待存储数据中是否存在整数压缩方式对应的整数数据,如果是,则执行所述整数压缩方式对应的压缩编码;否则,执行所述将压缩编码结果保存在所述缓冲区中的操作。
相应于上述数据存储方法,本发明提供一种数据读取方法,能够从存储有经过压缩编码的数据的cache中获取到原始数据。本发明的数据读取方法中,预先获取表示压缩编码方式对应的数据类型的压缩编码信息,并且将待读取数据从缓冲区中读出,根据压缩编码信息,对被读出的数据依次进行整数压缩方式、差分编码方式以及字节复用方式对应的解码,得到读取结果。
其中所述对被读出的数据进行整数压缩方式对应的解码为:
根据所述压缩编码信息,从被读出的数据中选择出经过整数压缩方式的压缩编码的数据,还原为执行整数压缩之前的数值,并将得到的解码结果代替所选择的数据,放入被读出的数据中。
较佳地,所述整数压缩方式对应的解码之前,进一步包括:
根据压缩编码信息,判断被读出的数据中是否存在经过整数压缩方式的压缩编码的数据,如果是,则执行所述整数压缩方式对应的解码;否则,执行差分方式对应的解码。
其中,所述对被读出的数据进行差分编码方式对应的解码为:
根据所述压缩编码信息,从被读出的数据中选择出经过差分编码方式的压缩编码的数据,转换为有序的整数序列,并得到的解码结果代替所选择的数据,放入被读出的数据中。
较佳地,所述整数压缩方式对应的解码与差分编码对应的解码之间,进一步包括:
根据压缩编码信息,判断被读出的数据中是否存在经过差分编码方式的压缩编码的数据,如果是,则执行所述差分编码方式对应的解码;否则,执行字节复用方式对应的解码。
其中,所述对被读出的数据进行字节复用方式对应的解码为:
根据所述压缩编码信息,从被读出的数据中选择出经过字节复用方式的压缩编码的数据,将压缩于1字节中的多项数据分别用1字节表示,并将得到的解码结果代替所选择的数据,放入被读出的数据中。
较佳地,所述差分编码方式对应的解码与字节复用方式对应的解码之间,进一步包括:
根据压缩编码信息,判断被读出的数据中是否存在经过字节复用方式对应的数据,如果是,则执行所述字节复用方式对应的解码;否则,执行所述得到读取结果的操作。
本发明还提供一种数据检索方法,能够提高检索结果的命中率。本发明的数据检索方法中,预先设置压缩编码信息,表示压缩编码方式对应的数据类型,该方法包括以下步骤:
A.在接收到来自于用户的检索请求时,判断该检索请求对应的数据是否在缓冲区中,如果是,则执行步骤B;否则,执行步骤C;
B.从缓冲区中读取出该数据,根据压缩编码信息依次进行整数压缩、差分编码以及字节复用方式对应的解码,将解码结果作为检索结果,返回给用户,并结束本数据检索流程;
C.从索引文件中读取检索请求对应的索引数据,作为检索结果,在符合存放策略时,根据压缩编码信息,将索引数据依次进行字节复用、差分编码以及整数压缩方式的压缩编码后放入所述缓冲区中,再将检索结果返回给用户。
其中,所述将索引数据进行字节复用方式的压缩编码为:
从索引数据中选择出单项数据长度小于1字节并且能够合并到1字节中的多项数据,将所选择出的多项数据用1字节表示,并将字节复用方式的压缩编码结果代替所选择出的多项数据,放入所述索引数据中;
所述进行字节复用方式对应的解码为:
根据所述压缩编码信息,从被读出的索引数据中选择出经过字节复用方式的压缩编码的数据,将压缩于1字节中的多项数据分别用1字节表示,并将得到的解码结果代替所选择的数据,放入被读出的索引数据中。
其中,所述将索引数据进行差分编码方式的压缩编码为:
从索引数据中选择出有序的整数序列,将有序的整数序列转换为差分序列,并将差分编码方式的压缩编码结果代替被选择出的有序的整数序列,放入所述索引数据中;
所述进行差分编码方式对应的解码为:
根据所述压缩编码信息,从被读出的索引数据中选择出经过差分编码方式的压缩编码的数据,转换为有序的整数序列,并得到的解码结果代替所选择的数据,放入被读出的索引数据中。
其中,所述将索引数据进行整数压缩方式的压缩编码为:
从索引数据中选择出整数数据,根据所选择的整数数据的实际大小,确定该整数数据所需的数据长度,按照所确定的数据长度表示该整数数据,并将整数压缩方式的压缩编码结果代替被选择出的整数数据,放入索引数据中;
所述进行整数压缩方式对应的解码为:
根据所述压缩编码信息,从被读出的索引数据中选择出经过整数压缩方式的压缩编码的数据,还原为执行整数压缩之前的数值,并将得到的解码结果代替所选择的数据,放入被读出的索引数据中。
较佳地,预先设置表示允许缓冲区中的索引数据被替换的替换条件,步骤C所述进行压缩编码之前,进一步包括:
C01.判断所述缓冲区中是否存在剩余空间,如果是,则继续执行所述压缩编码;否则,执行步骤C02;
C02.根据预先设置的替换条件,判断是否利用所述从文件中读取的索引数据替换缓冲区中的原索引数据,如果是,则确定并删除被替换的原索引数据,再仅需执行所述压缩编码;否则,执行所述将检索结果返回给用户的操作。
由上述方案可知,在本发明的数据存储方法中,将待存储数据经过字节复用、差分编码以及整数压缩等方式的压缩编码后,放入cache中。这样能够减少数据占用的空间,增加固定空间的cache的数据存储量。在本发明的数据读取方法中,将数据从cache中取出后,根据预先获知的压缩编码信息对数据进行解码,还原成原始数据,保证了数据读取的正确性。
另外,在本发明的数据检索方法中,由于索引数据经过压缩编码之后放入cache中,减小了每条索引数据占用的空间,增加了具有固定空间的cache的数据存储量;在数据检索时,较多的索引数据都能够在cache中找到,有效地提高了数据检索的命中率。并且,由于检索过程中访问cache的次数较多,因而大大降低了从索引文件中读取索引数据的几率,减少了因执行文件IO而耗费的时间,从而有效地提高了海量数据情况下数据检索的效率。此外,在从索引文件中读取到索引数据时,如果该索引数据符合搜索引擎中存放策略、替换条件的要求,则将该索引数据存入cache中,从而能够根据用户的检索需求及时更新cache,保证数据检索的高效率。
附图说明
下面将通过参照附图详细描述本发明的示例性实施例,使本领域的普通技术人员更清楚本发明的上述及其它特征和优点,附图中:
图1为本发明实施例中数据存储方法的流程图;
图2为本发明实施例中数据读取存储方法的流程图;
图3为本发明中数据检索方法的示例性流程图;
图4为本发明实施例中数据检索方法的流程图。
具体实施方式
为使本发明的目的、技术方案更加清楚明白,以下参照附图并举实施例,对本发明做进一步的详细说明。
本发明提供一种数据存储方法,其基本思想是:当缓冲区中存在剩余的空间时,将数据进行压缩编码后存入内存中。
压缩编码的方式包括整数压缩、差分编码、字节复用,上述三种压缩编码方式的执行顺序为:首先执行字节复用,而后执行差分编码,最后执行整数压缩。在实际的应用中,由于数据的类型决定了该数据能够被执行上述何种方式的压缩编码,这样,只要确定待存储数据包含的全部数据类型,即可确定执行的压缩编码方式以及每种方式对应的数据位置。这里,各压缩编码方式以及对应的数据类型被称作压缩编码信息。
图1示出了本发明实施例中数据存储方法的流程图。如图1所示,本实施例中的数据存储方法包括:
在步骤101~102中,在cache中存在剩余空间时,判断当前待存储的数据中是否存在能够进行字节复用的数据,如果是,则对能够进行字节复用的数据进行字节复用方式的压缩编码,将经过字节复用的数据和未经压缩编码的数据作为当前的待存储数据,并执行步骤103;否则,直接执行步骤103。
本实施例中,预先在内存中申请固定大小的空间作为cache,用于保存待存储数据。由于cache中的空间有限,因此只能在cache中存在剩余空间时,才能够放入数据。
字节复用是指将单项数据长度小于1字节并且能够合并到1字节中的多项数据用1字节表示。因此,上述待存储的数据中如果包含有单项数据长度小于1字节并且能够合并到1字节中的多项数据,则判定存在能够进行字节复用的数据;否则,判定不存在能够进行字节复用的数据。
例如:存在字体大小、大小写、是否加重以及出现位置四种类型的数据,其中字体大小的取值范围为1~32,数据长度为5比特(bit);大小写的取值为大写或者小写,数据长度为1bit;是否加重的取值为加重或者不加重,数据长度为1bit;出现位置的取值为标题或者正文,数据长度为1bit。由于1字节包括8bit,那么,上述的四种数据能够用1字节来表示,而无需每种数据都占用1字节。
在确定待存储数据中包含能够字节复用的数据后,将所确定的能够字节复用的数据选择出来,再进行字节复用方式的压缩编码,并用字节复用的结果代替被选择的数据,放入到待存储数据中,以便后续步骤中对此时形成的待存储数据进行压缩编码。
在步骤103~104中,判断当前的待存储数据中是否存在有序的整数数据,如果是,则对有序的整数数据进行差分编码方式的压缩编码,将经过差分编码的数据和未经压缩编码的数据作为当前的待存储数据,并执行步骤105;否则,直接执行步骤105。
本实施例中,有序的整数数据是指数据中的多个整数数值为递增或者递减的有序整数序列形式。例如,文档为:2006年世界杯将在德国举行,我们期待世界杯的到来;待存储数据为“世界杯”这一单词出现在该文档中的位置,即该单词为文档中的第几个单词,则该数据中包括3和10两个数值。因此上述类型的待存储数据是有序整数数据。
在进行差分编码时,将有序的整数序列转换为差分序列。具体而言,有序整数序列中的第一个元素保持不变,此后的每个元素均表示为该元素的原数值与前一元素的数值之差。对于由3和10组成的有序整数序列而言,转换后的差分序列为3,7。在完成差分编码后,将差分编码结果代替被差分编码的数据,放入待存储数据,以便后续步骤中对此时形成的待存储数据进行压缩编码。
在步骤105~106中,判断当前的待存储数据中是否存在整数数据,如果是,则对整数数据进行整数压缩方式的压缩编码,将压缩编码后的数据以及未经压缩编码的数据作为待存储数据,并执行步骤107;否则,直接执行步骤107。
在传统方法中,采用固定的数据长度表示整数,例如:每个整数占用4字节。但是在实际情况中,由于整数的数值较小,占用的空间较小,如果仍然采用固定的数据长度,则会造成空间的浪费。本实施例中根据整数的实际大小,确定表示该整数所需的数据长度。例如:对于整数1,仅需1字节;而对于整数1000,需要2字节。
在步骤107中,将待存储数据存入cache中。
至此,完成本实施例中的数据压缩流程。
上述的数据压缩方法适用于诸如索引数据存储等多种场合。在本实施例中的数据存储方法中,将待存储数据经过字节复用、差分编码以及整数压缩等方式的压缩编码后,放入cache中。这样能够减少数据占用的空间,增加固定空间的cache的数据存储量。
相应地,为了能够从cache中获得原始数据,本实施例还提供了一种数据读取方法。在实际的应用中,由于压缩编码信息中包含有执行各种方式的压缩编码的数据类型。因此,在数据读取过程中,能够根据压缩编码信息来确定被压缩编码的数据,而后通过对经过压缩编码的数据进行解码来获得原始数据。
图2示出了本实施例中数据读取方法的示例性流程图。在该方法执行之前,预先读取压缩编码信息,以便在后续数据读取过程中顺利解码。如图2所示,本实施例中的数据读取方法包括:
在步骤201~202中,将待读取数据从cache中读出,根据压缩编码信息判断被读取的数据中是否存在整数数据,如果是,则对整数数据进行整数压缩方式对应的解码,将解码后的数据替换解码前的数据,放入被读出的数据中,作为当前数据,并执行步骤203;否则,直接执行步骤203。
这里,将经过整数压缩的数据选择出来之后,再进行解码。对整数数据进行整数压缩方式对应的解码时,将从cache中读出的整数数据还原为执行整数压缩方式的压缩编码之前的数值。
在步骤203~204中,根据压缩编码信息判断当前数据中是否存在经过差分编码的数据,如果是,则对经过差分编码的数据进行差分编码方式对应的解码,将解码后的数据替换解码前的数据,放入被读出的数据中,作为当前数据,并执行步骤205;否则,直接执行步骤205。
这里在确定存在经过差分编码的数据后,将所确定的数据选择出来,再进行解码。并且,进行差分编码方式对应的解码是指,将经过差分编码的整数序列中的第一个元素保持不变,从第二个元素开始,将每个元素的当前数值与前一元素的原始数值之和作为该元素经过差分编码方式对应的解码后的结果。例如:经过差分编码的整数序列包括的元素为:3,7,6;则首先保持第一个元素3不变,将第二个元素的当前数值加上第一个元素的数值得到第二个元素的原始数值为10,再将第三个元素的当前数值加上第二个元素的原始数值得到第三个元素的原始数值为16。
在步骤205~206中,根据压缩编码信息判断当前数据中是否存在经过字节复用的数据,如果是,则对经过字节复用的数据进行字节复用方式对应的解码,并执行步骤207;否则,直接执行步骤207。
这里,在确定存在经过字节复用的数据之后,将这些数据选择出来,并将压缩于1字节中的多项数据分别用1字节表示。
在步骤207中,获取原始数据。
如果步骤201中从cache中读出的数据中不包括任何经过压缩编码的数据,则本步骤中的原始数据为所读出的数据;如果读出的数据中的一部分为经过压缩编码的数据,则本步骤中的原始数据为解码后的数据与未经解码的数据的组合;如果读出的数据全部是经过压缩编码的数据,则本步骤中的原始数据为解码后的数据。
至此,完成本实施例中的数据读取流程。
上述图1和图2所示的数据存储方法和数据读取方法可以应用于数据检索中。
图3示出了本发明中数据检索方法的示例性流程图。参见图3,该方法包括:
在步骤301中,在接收到来自于用户的检索请求时,判断该检索请求对应的数据是否在cache中,如果是,则执行步骤302;否则,执行步骤303;
在步骤302中,从cache中取出该数据,根据压缩编码信息进行整数压缩、差分编码以及字节复用方式对应的解码,将解码结果作为检索结果,并结束本数据检索流程;
在步骤303中,从索引文件中读取检索请求对应的索引数据,作为检索结果,在符合存放策略时,将索引数据进行字节复用、差分编码以及整数压缩方式的压缩编码后放入cache中。
本发明中数据检索方法适于多种索引方式,例如正排索引、倒排索引等。
下面以倒排索引为例,对本发明中的数据检索方法进行说明。
图4示出了本实施例中数据检索方法的流程图。索引数据存放的位置可以为cache或者磁盘中的索引文件。其中cache中保存的是符合搜索引擎中预先设置的存放策略的索引数据,例如:最近被访问的索引数据,访问率较高的索引数据等。另外,本实施例中还预先读取cache中的检索数据对应的压缩编码信息,以便在从cache中读出数据后进行解码。如图4所示,本实施例中的数据检索方法包括:
在步骤401~402中,搜索引擎接收到来自于用户的检索请求,判断该检索请求对应的检索数据是否存储在cache中,如果是,则执行步骤403;否则,执行步骤404。
在步骤403中,从cache中读取检索请求对应的索引数据,并根据压缩编码信息对所读出的索引数据进行解码,并将解码结果作为检索结果,而后执行步骤410。
本步骤中对来自于cache的索引数据进行解码的具体操作与图2所示的步骤201~207中的操作相同。
在步骤404~405中,从索引文件中读取检索请求对应的索引数据,将读取到的索引数据作为检索结果,并根据预先设置的存放策略判断该索引数据是否应被存储到cache中,如果是,则执行步骤406;否则,直接执行步骤410。
在步骤406~407中,判断cache中是否存在剩余空间,如果是,则将当前的索引数据经过字节复用、差分编码以及整数压缩方式的压缩编码后,存入cache中,并执行步骤410;否则,执行步骤408。
这里对数据进行压缩编码的方法与图1所示的数据存储流程中步骤101至107的操作相同。
对于倒排索引而言,其倒排索引的基本思想是记录单词在哪些文档中出现。索引数据的结构为:<T,Ft,<D,Fd,t,<P>*>*>*>。其中,T表示单词标识,Ft表示单词的文档频率,D表示文档标识,Fd,t表示单词在文档中的词频,P表示单词在文档中的位置,*表示对应的项目可有多个取值。另外还可以记录诸如字体大小、文字大小写、是否加重、出现于标题或正文等类型的单词附加信息作为索引数据。上述索引数据中各个类型的数据均为整数数据,能够进行整数压缩;P所代表的单词在文档中的位置这一类型的数据为有序数列,因此能够进行差分编码;而附加信息可以被执行字节复用。经过本步骤中的压缩编码后,索引数据所需空间能够明显减少。
在步骤408中,根据预先设置的替换条件,判断是否利用当前索引数据替换cache中的原索引数据,如果是,则确定并删除被替换的原索引数据,再将当前的索引数据经过字节复用、差分编码以及整数压缩方式的压缩编码后,存入cache中,执行步骤410;否则,直接执行步骤410。
为了保证cache中保存的是最便于检索的索引数据,本实施例还预先设置替换条件,用于在cache不存在剩余空间的情况下,衡量新的索引数据是否替代cache中的部分索引数据,以便保证cache中的内容能够根据用户的检索要求更新。这里的替换条件可以是访问次数较多、访问时间较近等。
在步骤410中,向用户返回检索结果。
至此,完成本实施例中的数据检索流程。
有上述的检索流程可见,由于索引数据经过压缩编码之后放入cache中,减小了每条索引数据占用的空间,增加了具有固定空间的cache的数据存储量;在数据检索时,较多的索引数据都能够在cache中找到,有效地提高了数据检索的命中率。并且,由于检索过程中访问cache的次数较多,因而大大降低了从索引文件中读取索引数据的几率,减少了因执行文件IO而耗费的时间,从而有效地提高了海量数据情况下数据检索的效率。另外,本实施例中在从索引文件中读取到索引数据时,如果该索引数据符合搜索引擎中存放策略、替换条件的要求,则将该索引数据存入cache中,从而能够根据用户的检索需求及时更新cache,保证数据检索的高效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (18)

1、一种数据存储方法,其特征在于,预先设置压缩编码信息,表示压缩编码方式对应的数据类型,该方法包括:
当缓冲区中存在剩余空间时,根据所述压缩编码信息,判断待存储数据中是否存在字节复用方式对应的数据类型,如果是,则对所述待存储数据依次进行字节复用方式、差分编码以及整数压缩方式对应的压缩编码,并将压缩编码结果保存在所述缓冲区中;否则,将待存储数据依次进行差分编码以及整数压缩方式对应的压缩编码,并将压缩编码结果保存在所述缓冲区中。
2、如权利要求1所述的方法,其特征在于,将待存储数据进行字节复用方式的压缩编码为:
从所述待存储数据中选择出单项数据长度小于1字节并且能够合并到1字节中的多项数据,将所选择出的多项数据用1字节表示,并将字节复用方式的压缩编码结果代替所选择出的多项数据,放入待存储数据中。
3、如权利要求1所述的方法,其特征在于,所述将待存储数据进行差分编码方式的压缩编码为:
从所述待存储数据中选择出有序的整数序列,将有序的整数序列转换为差分序列,并将差分编码方式的压缩编码结果代替被选择出的有序的整数序列,放入待存储数据中。
4、如权利要求1或3所述的方法,其特征在于,所述字节复用方式的压缩编码与差分编码方式的压缩编码之间,进一步包括:
根据所述压缩编码信息,判断待存储数据中是否存在差分编码方式对应的有序的整数序列,如果是,则执行所述差分编码方式对应的压缩编码;否则,执行所述整数压缩方式的压缩编码。
5、如权利要求1所述的方法,其特征在于,所述将待存储数据进行整数压缩方式的压缩编码为:
从所述待存储数据中选择出整数数据,根据所选择的整数数据的实际大小,确定该整数数据所需的数据长度,按照所确定的数据长度表示该整数数据,并将整数压缩方式的压缩编码结果代替被选择出的整数数据,放入待存储数据中。
6、如权利要求1或5所述的方法,其特征在于,所述差分编码方式的压缩编码与整数压缩方式的压缩编码之间,进一步包括:
根据所述压缩编码信息,判断待存储数据中是否存在整数压缩方式对应的整数数据,如果是,则执行所述整数压缩方式对应的压缩编码;否则,执行所述将压缩编码结果保存在所述缓冲区中的操作。
7、一种数据读取方法,其特征在于,预先获取表示压缩编码方式对应的数据类型的压缩编码信息,该方法包括:
将待读取数据从缓冲区中读出,根据压缩编码信息,对被读出的数据依次进行整数压缩方式、差分编码方式以及字节复用方式对应的解码,得到读取结果。
8、如权利要求7所述的方法,其特征在于,所述对被读出的数据进行整数压缩方式对应的解码为:
根据所述压缩编码信息,从被读出的数据中选择出经过整数压缩方式的压缩编码的数据,还原为执行整数压缩之前的数值,并将得到的解码结果代替所选择的数据,放入被读出的数据中。
9、如权利要求7或8所述的方法,其特征在于,所述整数压缩方式对应的解码之前,进一步包括:
根据压缩编码信息,判断被读出的数据中是否存在经过整数压缩方式的压缩编码的数据,如果是,则执行所述整数压缩方式对应的解码;否则,执行差分方式对应的解码。
10、如权利要求7所述的方法,其特征在于,所述对被读出的数据进行差分编码方式对应的解码为:
根据所述压缩编码信息,从被读出的数据中选择出经过差分编码方式的压缩编码的数据,转换为有序的整数序列,并得到的解码结果代替所选择的数据,放入被读出的数据中。
11、如权利要求7或10所述的方法,其特征在于,所述整数压缩方式对应的解码与差分编码对应的解码之间,进一步包括:
根据压缩编码信息,判断被读出的数据中是否存在经过差分编码方式的压缩编码的数据,如果是,则执行所述差分编码方式对应的解码;否则,执行字节复用方式对应的解码。
12、如权利要求7所述的方法,其特征在于,所述对被读出的数据进行字节复用方式对应的解码为:
根据所述压缩编码信息,从被读出的数据中选择出经过字节复用方式的压缩编码的数据,将压缩于1字节中的多项数据分别用1字节表示,并将得到的解码结果代替所选择的数据,放入被读出的数据中。
13、如权利要求7或12所述的方法,其特征在于,所述差分编码方式对应的解码与字节复用方式对应的解码之间,进一步包括:
根据压缩编码信息,判断被读出的数据中是否存在经过字节复用方式对应的数据,如果是,则执行所述字节复用方式对应的解码;否则,执行所述得到读取结果的操作。
14、一种数据检索方法,其特征在于,预先设置压缩编码信息,表示压缩编码方式对应的数据类型,该方法包括:
A.在接收到来自于用户的检索请求时,判断该检索请求对应的数据是否在缓冲区中,如果是,则执行步骤B;否则,执行步骤C;
B.从缓冲区中读取出该数据,根据压缩编码信息依次进行整数压缩、差分编码以及字节复用方式对应的解码,将解码结果作为检索结果,返回给用户,并结束本数据检索流程;
C.从索引文件中读取检索请求对应的索引数据,作为检索结果,在符合存放策略时,根据压缩编码信息,将索引数据依次进行字节复用、差分编码以及整数压缩方式的压缩编码后放入所述缓冲区中,再将检索结果返回给用户。
15、如权利要求14所述的方法,其特征在于,所述将索引数据进行字节复用方式的压缩编码为:
从索引数据中选择出单项数据长度小于1字节并且能够合并到1字节中的多项数据,将所选择出的多项数据用1字节表示,并将字节复用方式的压缩编码结果代替所选择出的多项数据,放入所述索引数据中;
所述进行字节复用方式对应的解码为:
根据所述压缩编码信息,从被读出的索引数据中选择出经过字节复用方式的压缩编码的数据,将压缩于1字节中的多项数据分别用1字节表示,并将得到的解码结果代替所选择的数据,放入被读出的索引数据中。
16、如权利要求14所述的方法,其特征在于,所述将索引数据进行差分编码方式的压缩编码为:
从索引数据中选择出有序的整数序列,将有序的整数序列转换为差分序列,并将差分编码方式的压缩编码结果代替被选择出的有序的整数序列,放入所述索引数据中;
所述进行差分编码方式对应的解码为:
根据所述压缩编码信息,从被读出的索引数据中选择出经过差分编码方式的压缩编码的数据,转换为有序的整数序列,并得到的解码结果代替所选择的数据,放入被读出的索引数据中。
17、如权利要求14所述的方法,其特征在于,所述将索引数据进行整数压缩方式的压缩编码为:
从索引数据中选择出整数数据,根据所选择的整数数据的实际大小,确定该整数数据所需的数据长度,按照所确定的数据长度表示该整数数据,并将整数压缩方式的压缩编码结果代替被选择出的整数数据,放入索引数据中;
所述进行整数压缩方式对应的解码为:
根据所述压缩编码信息,从被读出的索引数据中选择出经过整数压缩方式的压缩编码的数据,还原为执行整数压缩之前的数值,并将得到的解码结果代替所选择的数据,放入被读出的索引数据中。
18、如权利要求14至17中任意一项所述的方法,其特征在于,预先设置表示允许缓冲区中的索引数据被替换的替换条件,步骤C所述进行压缩编码之前,进一步包括:
C01.判断所述缓冲区中是否存在剩余空间,如果是,则继续执行所述压缩编码;否则,执行步骤C02;
C02.根据预先设置的替换条件,判断是否利用所述从文件中读取的索引数据替换缓冲区中的原索引数据,如果是,则确定并删除被替换的原索引数据,再仅需执行所述压缩编码;否则,执行所述将检索结果返回给用户的操作。
CNB2006100905678A 2006-06-28 2006-06-28 一种数据存储方法、数据读取方法以及数据检索方法 Active CN100472526C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006100905678A CN100472526C (zh) 2006-06-28 2006-06-28 一种数据存储方法、数据读取方法以及数据检索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006100905678A CN100472526C (zh) 2006-06-28 2006-06-28 一种数据存储方法、数据读取方法以及数据检索方法

Publications (2)

Publication Number Publication Date
CN101075237A CN101075237A (zh) 2007-11-21
CN100472526C true CN100472526C (zh) 2009-03-25

Family

ID=38976290

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100905678A Active CN100472526C (zh) 2006-06-28 2006-06-28 一种数据存储方法、数据读取方法以及数据检索方法

Country Status (1)

Country Link
CN (1) CN100472526C (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8010704B2 (en) * 2008-05-29 2011-08-30 GM Global Technology Operations LLC Method of efficient compression for measurement data
CN103778203B (zh) * 2014-01-13 2018-01-19 中国人民解放军91655部队 一种网络管理数据无损压缩存储与检索的方法与***
CN104811265B (zh) * 2014-01-29 2018-12-18 上海数字电视国家工程研究中心有限公司 基带帧的封装方法及解封装方法
JP6344486B2 (ja) * 2015-12-29 2018-06-20 華為技術有限公司Huawei Technologies Co.,Ltd. サーバおよびデバイスによりデータを圧縮するための方法
CN108038158B (zh) * 2017-12-05 2019-11-05 北京百度网讯科技有限公司 减少数据库存储容量的数据存储方法
CN108446304A (zh) * 2018-01-30 2018-08-24 上海天旦网络科技发展有限公司 数据包检索***和方法
CN110516117A (zh) * 2019-07-22 2019-11-29 平安科技(深圳)有限公司 图计算的类别型变量存储方法、装置、设备及存储介质
CN117040542B (zh) * 2023-10-08 2024-01-12 广东佰林电气设备厂有限公司 一种智能综合配电箱能耗数据处理方法

Also Published As

Publication number Publication date
CN101075237A (zh) 2007-11-21

Similar Documents

Publication Publication Date Title
CN100472526C (zh) 一种数据存储方法、数据读取方法以及数据检索方法
TWI480744B (zh) 搜尋索引格式之最佳化
US8838551B2 (en) Multi-level database compression
US10303596B2 (en) Read-write control method for memory, and corresponding memory and server
US8255398B2 (en) Compression of sorted value indexes using common prefixes
EP2924594B1 (en) Data encoding and corresponding data structure in a column-store database
US8914718B2 (en) Coding a structured document as a bitstream by storing in memory a reference to an entry in a coding dictionary
CN107577436B (zh) 一种数据存储方法及装置
CN103339624A (zh) 支持地理结构数据的交互式模糊搜索的高效前缀搜索算法
CN104283567A (zh) 一种名称数据的压缩、解压缩方法及设备
CN102893265A (zh) 管理可独立访问的数据单元的存储
CN105068885B (zh) 一种jpg碎片文件恢复与重组的方法
US9665590B2 (en) Bitmap compression for fast searches and updates
US20020040361A1 (en) Memory based on a digital trie structure
CN115438114B (zh) 存储格式转换方法、***、装置、电子设备及存储介质
CN101551820A (zh) 兴趣点属性的索引数据库的生成方法和装置
CN101295312B (zh) 一种使用表格呈现数据的方法
CN115934730A (zh) 数据处理方法和装置、介质和计算机设备
JPH10261969A (ja) データ圧縮方法および装置
JP5626561B2 (ja) 情報処理システム及びそのデータ管理方法
CN1412694A (zh) 资料库***储存及读取记录的方法
US20090292699A1 (en) Nucleotide and amino acid sequence compression
Li et al. Study on efficiency of full-text retrieval based on lucene
CN106033454B (zh) 虚拟文件***的格式化方法、处理方法和装置
JP3601719B2 (ja) 相関のあるデータ組み合わせの数え上げ方式

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190808

Address after: 518057 Nanshan District science and technology zone, Guangdong, Zhejiang Province, science and technology in the Tencent Building on the 1st floor of the 35 layer

Co-patentee after: Tencent cloud computing (Beijing) limited liability company

Patentee after: Tencent Technology (Shenzhen) Co., Ltd.

Address before: Shenzhen Futian District City, Guangdong province 518044 Zhenxing Road, SEG Science Park 2 East Room 403

Patentee before: Tencent Technology (Shenzhen) Co., Ltd.