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

文档序号:6559468阅读:219来源:国知局
专利名称:一种数据存储方法、数据读取方法以及数据检索方法
技术领域
本发明涉及数据处理技术,尤其涉及一种数据存储方法、数据读取方法以及数据检索方法。
背景技术
随着互联网技术的迅猛发展,呈现在用户面前的信息量也出现了爆炸性的增长趋势,并且信息数据库中所积累的数据和主题越来越多。为了能够更好地保证用户在较短的时间内从海量数据中查找到所需的信息,搜索引擎技术应运而生。此项技术作为网页搜索、新闻搜索、音乐搜索、图片搜索以及地图搜索等业务的核心,具有不可估量的使用价值和商业价值。
索引模块是搜索引擎中的关键部分,该模块为关键词检索提供数据来源和访问接口。换言之,索引模块对原始数据进行分词操作,并利用索引方法处理所获得的各个单词,建立索引并写入用于保存索引数据的文件。在检索数据时,读取保存索引数据的文件,获取检索结果。
业界衡量检索性能的指标主要包括数据量和对用户的检索请求的响应时间。数据量越大、响应时间越短,则检索性能越好。就目前的情况而言,搜索引擎所处理的是海量数据,并且对于用户的检索请求的响应时间在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,保证数据检索的高效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种数据存储方法,其特征在于,预先设置压缩编码信息,表示压缩编码方式对应的数据类型,该方法包括当缓冲区中存在剩余空间时,根据所述压缩编码信息,将待存储数据进行字节复用、差分编码和整数压缩方式的压缩编码,并将压缩编码结果保存在所述缓冲区中。
2.如权利要求1所述的方法,其特征在于,将待存储数据进行字节复用方式的压缩编码为从所述待存储数据中选择出单项数据长度小于1字节并且能够合并到1字节中的多项数据,将所选择出的多项数据用1字节表示,并将字节复用方式的压缩编码结果代替所选择出的多项数据,放入待存储数据中。
3.如权利要求1或2所述的方法,其特征在于,所述进行字节复用方式的压缩编码之前,进一步包括根据压缩编码信息,判断待存储数据中是否存在字节复用方式对应的数据类型,如果是,则执行所述字节复用方式的压缩编码;否则,执行所述差分编码方式的压缩编码。
4.如权利要求1所述的方法,其特征在于,所述将待存储数据进行差分编码方式的压缩编码为从所述待存储数据中选择出有序的整数序列,将有序的整数序列转换为差分序列,并将差分编码方式的压缩编码结果代替被选择出的有序的整数序列,放入待存储数据中。
5.如权利要求1或4所述的方法,其特征在于,所述字节复用方式的压缩编码与差分编码方式的压缩编码之间,进一步包括根据所述压缩编码信息,判断待存储数据中是否存在差分编码方式对应的有序的整数序列,如果是,则执行所述差分编码方式对应的压缩编码;否则,执行所述整数压缩方式的压缩编码。
6.如权利要求1所述的方法,其特征在于,所述将待存储数据进行整数压缩方式的压缩编码为从所述待存储数据中选择出整数数据,根据所选择的整数数据的实际大小,确定该整数数据所需的数据长度,按照所确定的数据长度表示该整数数据,并将整数压缩方式的压缩编码结果代替被选择出的整数数据,放入待存储数据中。
7.如权利要求1或6所述的方法,其特征在于,所述差分编码方式的压缩编码与整数压缩方式的压缩编码之间,进一步包括根据所述压缩编码信息,判断待存储数据中是否存在整数压缩方式对应的整数数据,如果是,则执行所述整数压缩方式对应的压缩编码;否则,执行所述将压缩编码结果保存在所述缓冲区中的操作。
8.一种数据读取方法,其特征在于,预先获取表示压缩编码方式对应的数据类型的压缩编码信息,该方法包括将待读取数据从缓冲区中读出,根据压缩编码信息,对被读出的数据进行整数压缩方式、差分编码方式以及字节复用方式对应的解码,得到读取结果。
9.如权利要求8所述的方法,其特征在于,所述对被读出的数据进行整数压缩方式对应的解码为根据所述压缩编码信息,从被读出的数据中选择出经过整数压缩方式的压缩编码的数据,还原为执行整数压缩之前的数值,并将得到的解码结果代替所选择的数据,放入被读出的数据中。
10.如权利要求8或9所述的方法,其特征在于,所述整数压缩方式对应的解码之前,进一步包括根据压缩编码信息,判断被读出的数据中是否存在经过整数压缩方式的压缩编码的数据,如果是,则执行所述整数压缩方式对应的解码;否则,执行差分方式对应的解码。
11.如权利要求8所述的方法,其特征在于,所述对被读出的数据进行差分编码方式对应的解码为根据所述压缩编码信息,从被读出的数据中选择出经过差分编码方式的压缩编码的数据,转换为有序的整数序列,并得到的解码结果代替所选择的数据,放入被读出的数据中。
12.如权利要求8或11所述的方法,其特征在于,所述整数压缩方式对应的解码与差分编码对应的解码之间,进一步包括根据压缩编码信息,判断被读出的数据中是否存在经过差分编码方式的压缩编码的数据,如果是,则执行所述差分编码方式对应的解码;否则,执行字节复用方式对应的解码。
13.如权利要求8所述的方法,其特征在于,所述对被读出的数据进行字节复用方式对应的解码为根据所述压缩编码信息,从被读出的数据中选择出经过字节复用方式的压缩编码的数据,将压缩于1字节中的多项数据分别用1字节表示,并将得到的解码结果代替所选择的数据,放入被读出的数据中。
14.如权利要求8或13所述的方法,其特征在于,所述差分编码方式对应的解码与字节复用方式对应的解码之间,进一步包括根据压缩编码信息,判断被读出的数据中是否存在经过字节复用方式对应的数据,如果是,则执行所述字节复用方式对应的解码;否则,执行所述得到读取结果的操作。
15.一种数据检索方法,其特征在于,预先设置压缩编码信息,表示压缩编码方式对应的数据类型,该方法包括A.在接收到来自于用户的检索请求时,判断该检索请求对应的索引数据是否在缓冲区中,如果是,则执行步骤B;否则,执行步骤C;B.从缓冲区中读取出该索引数据,根据压缩编码信息进行整数压缩、差分编码以及字节复用方式对应的解码,将解码结果作为检索结果,返回给用户,并结束本数据检索流程;C.从索引文件中读取检索请求对应的索引数据,作为检索结果,在符合存放策略时,根据压缩编码信息,将索引数据进行字节复用、差分编码以及整数压缩方式的压缩编码后放入所述缓冲区中,再将检索结果返回给用户。
16.如权利要求15所述的方法,其特征在于,所述将索引数据进行字节复用方式的压缩编码为从索引数据中选择出单项数据长度小于1字节并且能够合并到1字节中的多项数据,将所选择出的多项数据用1字节表示,并将字节复用方式的压缩编码结果代替所选择出的多项数据,放入所述索引数据中;所述进行字节复用方式对应的解码为根据所述压缩编码信息,从被读出的索引数据中选择出经过字节复用方式的压缩编码的数据,将压缩于1字节中的多项数据分别用1字节表示,并将得到的解码结果代替所选择的数据,放入被读出的索引数据中。
17.如权利要求15所述的方法,其特征在于,所述将索引数据进行差分编码方式的压缩编码为从索引数据中选择出有序的整数序列,将有序的整数序列转换为差分序列,并将差分编码方式的压缩编码结果代替被选择出的有序的整数序列,放入待存储数据中;所述进行差分编码方式对应的解码为根据所述压缩编码信息,从被读出的索引数据中选择出经过差分编码方式的压缩编码的数据,转换为有序的整数序列,并得到的解码结果代替所选择的数据,放入被读出的索引数据中。
18.如权利要求15所述的方法,其特征在于,所述将索引数据进行整数压缩方式的压缩编码为从索引数据中选择出整数数据,根据所选择的整数数据的实际大小,确定该整数数据所需的数据长度,按照所确定的数据长度表示该整数数据,并将整数压缩方式的压缩编码结果代替被选择出的整数数据,放入索引数据中;所述进行整数压缩方式对应的解码为根据所述压缩编码信息,从被读出的索引数据中选择出经过整数压缩方式的压缩编码的数据,还原为执行整数压缩之前的数值,并将得到的解码结果代替所选择的数据,放入被读出的索引数据中。
19.如权利要求15至18中任意一项所述的方法,其特征在于,预先设置表示允许缓冲区中的索引数据被替换的替换条件,步骤C所述进行压缩编码之前,进一步包括C01.判断所述缓冲区中是否存在剩余空间,如果是,则继续执行所述压缩编码;否则,执行步骤C02;C02.根据预先设置的替换条件,判断是否利用所述从文件中读取的索引数据替换缓冲区中的原索引数据,如果是,则确定并删除被替换的原索引数据,再仅需执行所述压缩编码;否则,执行所述将检索结果返回给用户的操作。
全文摘要
本发明公开了一种数据存储方法,预先设置压缩编码信息,表示压缩编码方式对应的数据类型,该方法包括当缓冲区中存在剩余空间时,根据所述压缩编码信息,将待存储数据进行字节复用、差分编码和整数压缩方式的压缩编码,保存在所述缓冲区中。相应地,本发明公开了一种数据读取方法,预先获取表示压缩编码方式对应的数据类型的压缩编码信息,该方法包括将待读取数据从缓冲区中读出,根据压缩编码信息,对被读出的数据进行整数压缩方式、差分编码方式以及字节复用方式对应的解码,得到读取结果。本发明还公开了一种利用上述数据存储和数据读取方法的数据检索方法。本发明中的方法能够增加固定空间的缓冲区存储的数据量,缩短数据检索时间。
文档编号G06F17/30GK101075237SQ20061009056
公开日2007年11月21日 申请日期2006年6月28日 优先权日2006年6月28日
发明者谢海劝, 邵荣防, 王志平 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1