一种实现数据存储和搜索的方法和系统技术方案

技术编号:8563005 阅读:155 留言:0更新日期:2013-04-11 04:39
本申请公开了一种实现数据存储和搜索的方法和系统,该数据存储的方法包括步骤:获取待存储的数据块,所述数据块中包含至少一个数据;将所述数据块压缩为压缩数据块;将每一个数据的数据关键字和压缩数据块存入第一数据结构的第一有效数据域的一个第一子数据域,其中:所述第一数据结构包括第一有效数据域和第一数据指针域,所述第一有效数据域包括多个第一子数据域,每一个第一子数据域用于保存一个数据块中各个数据的数据关键字和压缩数据块,所述第一数据指针域用于保存检索数据时查找数据关键字的指针。

【技术实现步骤摘要】

本申请主要涉及数据搜索
,尤其涉及一种实现数据存储和捜索的方法和系统。
技术介绍
随着互联网技术的不断发展,网络上的应用也是越来越多,如网络购物、网络游戏、网上银行等。尤其是近十年来,网络购物的发展速度越来越快,越来越多的消费者通过网络购物来购买商品。随着商品的数量和种类越来越多,导致消费者在购物网站购物过程中需要花很长时间来选择自己想购买的商品。为此,很多购物网站都在网络购物系统中提供给消费者检索的平台,但是这种检索为了提高检索效率,一般需要直接在内存中实现检索。如图1所示,其为现有技术中进行检索的方法流程图,具体处理流程如下SlOl :用户输入查询请求,所述的查询请求可以为关键词;S102 :将基准数据调入内存,所述的基准数据是用来提供查询的数据;S103 :将所述关键词和所述基准数据进行匹配;S104:输出检索结果,所述检索结果可以包括有一条或以上检索信息,也可以没有检索信息。现有技术方案具有在单机上实现检索的优点,但是随着网络购物平台中商品的种类和数量越来越多,对内存空间的使用也是越来越大,因而该技术方案越来越受到内存空间的限制。
技术实现思路
本申请提供了ー种数据储存方法,用以解决现有技术中查表服务内存空间受到限制的问题;另ー方面,本申请提供了一种数据捜索的方法,用以快速在上述储存的数据中进行数据搜索。一方面,本申请通过本申请中实施例一,提供如下技术方案ー种数据储存方法,所述方法包括如下步骤获取待储存的数据块,所述数据块中包含至少ー个数据;将所述数据块压缩为压缩数据块;将每ー个数据的数据关键字和压缩数据块存入第一数据结构的第一有效数据域的ー个第一子数据域,其中所述第一数据结构包括第一有效数据域和第一数据指针域,所述第一有效数据域包括多个第一子数据域,每ー个第一子数据域用于保存一个数据块中各个数据的数据关键字和压缩数据块,所述第一数据指针域用于保存检索数据时查找数据关键字的指针。可选的,所述第一数据指针域包含N个子指针域,所述将每一个数据的数据关键字和压缩数据块存入第一数据结构的第一有效数据域的一个第一子数据域时,还包括分别针对每一个数据进行如下操作在第一子数据域中,将每一个数据所在压缩数据块的指针以及数据在所述数据块中的编号和数据关键字关联保存;将数据关键字的值对N取模,当该模值是第一次出现时,将数据关键字的指针作为查找相应模值对应的第一个数据的关键字指针保存到其中一个子指针域,否则,将数据关键字的指针和相邻最近上一次模值相等的数据的数据关键字,关联保存到所述相邻最近上一次模值相等的数据的数据关键字所保存的第一子数据域中。可选的,所述第一数据结构还包括头指针域,以及将所述数据块压缩为压缩数据块之前,还包括确认需要压缩所述待储存的数据块;以及确认所述头指针域中包含压缩数据指示信息。可选的,将每一个数据的数据关键字和压缩数据块存入第一数据结构的第一有效数据域的一个第一子数据域之前,还包括对第一子数据域中除压缩数据块以外的部分进行压缩处理。可选的,获取待储存的数据块和将所述数据块压缩为压缩数据块之间,还包括基于所述头指针域内的是否有剩余空间第一子数据域的指示信息,判断所述第一数据结构的第一有效数据域中存在数据压缩未饱和的第一子数据域时,则根据所述第一数据结构的头指针域内的未饱和压缩数据块在已经存有数据的最后一个第一子数据域中的位置指示信息,取出已经存入最后一个第一子数据域的压缩数据块并解压缩,将解压缩的数据合并入待存储的数据块。可选的,确认不需要压缩所述数据块时,还包括将每一个数据的数据关键字和数据块存入第二数据结构的第二有效数据域的一个第二子数据域,其中所述第二数据结构包括第二有效数据域和第二数据指针域,所述第二有效数据域包括多个第二子数据域,每一个第二子数据域用于保存一个数据块中各个数据的数据关键字和数据,所述第二数据指针域用于保存检索数据时查找数据关键字的指针。可选的,所述第二数据指针域包含N个子指针域,所述将每一个数据的数据关键字存入第二数据结构的第二有效数据域的一个第二子数据域时,还包括将数据关键字的值对N取模,当该模值是第一次出现时,将数据关键字的指针作为查找相应模值对应的第一个数据的关键字指针保存到其中一个子指针域,否则,将数据关键字的指针和相邻最近上一次模值相等的数据的数据关键字关联保存。可选的,所述第一数据结构和第二数据结构为hash表数据结构。另一方面,本申请通过本申请中的实施例二提供如下技术方案一种查询使用实施例一方法存储的数据的方法,其特征在于,包括确定待查询数据的查询关键字;基于在第一数据指针域保存的检索数据时查找数据关键字的指针,从第一有效数据域中的一个子数据域中,获取与所述查询关键字匹配的数据关键字,以及包含待查询数据的压缩数据块,解压所述压缩数据块,获得其中的待查询数据。可选的,基于在第一数据指针域保存的检索数据时查找数据关键字的指针,从第一有效数据域中的ー个子数据域中,获取与所述查询关键字匹配的数据关键字,以及包含待查询数据的压缩数据块,解压所述压缩数据块,获得其中的待查询数据,具体包括将数据关键字的值对N取摸,从与模值对应的子指针域中,获得第一个存储的相同模值的数据的关键字指针;根据获得的关键字指针,查找相应模值对应的第一个数据的关键字,如果查找到的关键字和查询关键字匹配,则根据与数据关键字关联保存的数据所在压缩数据块的指针以及数据在所述数据块中的编号,查找出数据所在压缩数据块,解压所述数据块获得待查询数据,否则;根据与数据关键字关联保存的相邻最近下一次模值相等的数据的数据关键字指针,继续查找。可选的,所述方法还包括确认所述第一数据结构的头指针内包含数据压缩指示信息。可选的,所述基于所述查询关键字,在第二数据结构的数据子指针域内,查找出与所述查询关键字对应的数据关键字包括用所述查询关键字对N取摸,得到一个模值;基于所述模值,在所述第二数据结构的数据指针域中查找出与所述查询关键字对应的数据关键字的地址;将所述数据关键字与所述查询关键字进行匹配;如果匹配成功,直接通过所述数据关键字获得数据信息;如果匹配不成功,通过与所述数据关键字关联保存的相邻的最近下一个模值相等的数据的数据关键字的指针查找下ー个数据关键字,直到匹配为止。另ー方面,本申请通过本申请中的实施例三提供如下技术方案ー种数据存储装置,包括如下结构获取数据单元用于获取待储存的数据块,所述数据块中包含至少ー个数据;压缩数据单元用于将所述数据块压缩为压缩数据块;第一数据存储単元用于将每一个数据的数据关键字和压缩数据块存入第一数据结构的第一有效数据域的ー个第一子数据域,其中所述第一数据结构包括第一有效数据域和第一数据指针域,所述第一有效数据域包括多个第一子数据域,每ー个第一子数据域用于保存一个数据块中各个数据的数据关键字和压缩数据块,所述第一数据指针域用于保存检索数据时查找数据关键字的指针。可选的,所述装置还包括如下结构第二数据存储単元用于将每一个数据的数据关键字和数据块存入第二数据结构的第二有效数据域的ー个第二子数据域,其中所述第二数据结构包括第二有效数据域和第二数据指针域,所述第二有效数据域包括多个第二子数据域,每ー个第二子数据域用于保存一个数据块中各个数据的数据关键字和数据,所述第二数据指针本文档来自技高网...

【技术保护点】
一种数据储存方法,其特征在于,包括:获取待储存的数据块,所述数据块中包含至少一个数据;将所述数据块压缩为压缩数据块;将每一个数据的数据关键字和压缩数据块存入第一数据结构的第一有效数据域的一个第一子数据域,其中:所述第一数据结构包括第一有效数据域和第一数据指针域,所述第一有效数据域包括多个第一子数据域,每一个第一子数据域用于保存一个数据块中各个数据的数据关键字和压缩数据块,所述第一数据指针域用于保存检索数据时查找数据关键字的指针。

【技术特征摘要】
1.一种数据储存方法,其特征在于,包括获取待储存的数据块,所述数据块中包含至少一个数据;将所述数据块压缩为压缩数据块;将每一个数据的数据关键字和压缩数据块存入第一数据结构的第一有效数据域的一个第一子数据域,其中所述第一数据结构包括第一有效数据域和第一数据指针域,所述第一有效数据域包括多个第一子数据域,每一个第一子数据域用于保存一个数据块中各个数据的数据关键字和压缩数据块,所述第一数据指针域用于保存检索数据时查找数据关键字的指针。2.如权利要求1的数据储存方法,其特征在于,所述第一数据指针域包含N个子指针域,所述将每一个数据的数据关键字和压缩数据块存入第一数据结构的第一有效数据域的一个第一子数据域时,还包括分别针对每一个数据进行如下操作在第一子数据域中,将每一个数据所在压缩数据块的指针以及数据在所述数据块中的编号和数据关键字关联保存;将数据关键字的值对N取模,当该模值是第一次出现时,将数据关键字的指针作为查找相应模值对应的第一个数据的关键字指针保存到其中一个子指针域,否则,将数据关键字的指针和相邻最近上一次模值相等的数据的数据关键字,关联保存到所述相邻最近上一次模值相等的数据的数据关键字所保存的第一子数据域中。3.如权利要求2的数据储存方法,其特征在于,所述第一数据结构还包括头指针域,以及将所述数据块压缩为压缩数据块之前,还包括确认需要压缩所述待储存的数据块;以及确认所述头指针域中包含压缩数据指示信息。4.如权利要求3所述的数据储存方法,其特征在于,将每一个数据的数据关键字和压缩数据块存入第一数据结构的第一有效数据域的一个第一子数据域之前,还包括对第一子数据域中除压缩数据块以外的部分进行压缩处理。5.如权利要求1所述的数据储存方法,其特征在于,获取待储存的数据块和将所述数据块压缩为压缩数据块之间,还包括基于所述头指针域内的是否有剩余空间第一子数据域的指示信息,判断所述第一数据结构的第一有效数据域中存在数据压缩未饱和的第一子数据域时,则根据所述第一数据结构的头指针域内的未饱和压缩数据块在已经存有数据的最后一个第一子数据域中的位置指示信息,取出已经存入最后一个第一子数据域的压缩数据块并解压缩,将解压缩的数据合并入待存储的数据块。6.如权利要求3所述的数据储存方法,其特征在于,确认不需要压缩所述数据块时,还包括将每一个数据的数据关键字和数据块存入第二数据结构的第二有效数据域的一个第二子数据域,其中所述第二数据结构包括第二有效数据域和第二数据指针域,所述第二有效数据域包括多个第二子数据域,每一个第二子数据域用于保存一个数据块中各个数据的数据关键字和数据,所述第二数据指针域用于保存检索数据时查找数据关键字的指针。7.如权利要求6的数据储存方法,其特征在于,所述第二数据指针域包含N个子指针域,所述将每一个数据的数据关键字存入第二数据结构的第二有效数据域的一个第二子数据域时,还包括将数据关键字的值对N取模,当该模值是第一次出现时,将数据关键字的指针作为查找相应模值对应的第一个数据的关键字指针保存到其中一个子指针域,否则,将数据关键字的指针和相邻最近上一次模值相等的数据的数据关键字关联保存。8.如权利要求5所述的数据储存方法,其特征在于,所述第一数据结构和第二数据结构为hash表数据结构。9.一种查询使用权利要求1所述方法存储的数据的方法,其特征在于,包括确定待查询数据的查询关键字;基于在第一数据指针域保存的检索数据时查找数据关键字的指针,从第一有效数据域中的一个子数据域中,获取与所述查询关键字匹配的数据关键字,以及包含待查询数据的压缩数据块,...

【专利技术属性】
技术研发人员:何正刚
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1