一种基于索引排序的数据读写方法及装置的制作方法

文档序号:6443528阅读:172来源:国知局
专利名称:一种基于索引排序的数据读写方法及装置的制作方法
技术领域
本发明涉及计算机数据存储技术,特别涉及一种基于索引排序的数据读写方法及
>J-U ρ α装直。
背景技术
随着计算机网络技术的发展,通过点对点的技术来实现互联网上的即时沟通的即时通信(IM, Instant Messaging)软件工具应用越来越普遍,IM已经被大多数的用户所接受并成为用户日常生活以及工作中必不可少的一部分,通过頂软件工具应用,例如,微博,用户可以实现与朋友、同事以及同学之间的交流与沟通。微群是微博中为不同用户群提供交流沟通的平台,是在微博中,一群人自发加入组成的小圈子,进行内部交流,并可以选择将部分内容分享给自己的微博听众的产品。由于微群的特点,用户访问到的群内发表数据需要按时间倒排,即对于每次用户最新发表的数据,都要写到缓存的数据队列的最前端。因而,数据读写时在数据队列的排序方式对于缓存的内核资源消耗以及后续的数据检索效率非常重要,有效的排序方式,能大量降低缓存的内核资源消耗、缩短检索 所需的时间,提高数据检索效率。图1为现有基于索引排序的数据读写方法流程示意图。以数据写入为例,参见图1,采用一级索引实现按时序倒排写入,该流程包括:步骤101,接收数据写入请求,通过数据写入请求中携带的关键词(Key)匹配微群索引表,获取待写入数据对应的微群索引;本步骤中,关键词可以是用户标识(ID,Identifier),根据发送数据写入请求的用户标识确定其所属的微群,从包含各微群索引的微群索引表中获取该对应的微群索引。步骤102,根据微群索引,获取写入数据的数据块地址ID ;本步骤中,微群索引中存储写入数据的数据块的地址ID信息,较佳地,对于按时序倒排写入数据的情形,数据块地址ID信息为数据块初始地址ID信息。步骤103,根据获取的数据块地址ID,按时序倒排写入数据。本步骤中,通过读到的数据块地址ID,按时序倒排写入数据,即将每次用户最新发表的数据写到内存的数据队列最前端,并依序将数据队列中写入的数据在内存中后移。当数据块容量小于数据容量时,可以申请更多数据块,数据块头部存放指向下一个数据块的数据块地址ID。图2为现有基于索引排序的数据读写的内存结构示意图。参见图2,包括微群索引表以及数据块区,微群索引表包括各微群索引,存储数据块地址ID信息,根据微群索引中的数据块地址ID信息,找到数据块区中相应的数据块,按时序倒排写入数据并依序将写入的数据后移。实际应用中,对于一个数据块在写入当前数据后还有剩余存储空间的情形,可以继续用于写入下一数据,即块数据合并存储。由上述可见,现有采用一级索引实现按时序倒排写入的方法,由于微群的特点,需要将用户最新发表的数据写到数据队列最前端,因此,当写入的数据量(消息量)较大时,在每次写入新数据时,需要将已写入的数据量占用的数据块在内存中执行后移处理,这样将导致大量的内核资源耗费,并且容易出错。

发明内容
有鉴于此,本发明的主要目的在于提出一种基于索引排序的数据读写方法,降低读写数据的内核资源耗费。本发明的另一目的在于提出一种基于索引排序的数据读写装置,降低读写数据的内核资源耗费。为达到上述目的,本发明提供了一种基于索引排序的数据读写方法,该方法包括:接收数据读写请求,通过数据读写请求中携带的关键词匹配微群索引表,获取待写入数据对应的微群索引;根据数据读写请求中携带的读写时间信息,从获取的微群索引中获取与读写时间信息对应的二级索引地址标识ID信息;根据获取的二级索引地址ID信息寻址对应的二级索引,获取读写数据的数据块地址ID ;根据获取的数据块地址ID,按时序倒排读写数据。所述数据读写请求包括数据写入请求以及数据读出请求,对于数据读写请求,所述读写时间信息为接收数据写入请求的当前时间,对于数据读出请求,所述读写时间信息为携带的数据发表的时间信息。在所述接收数据读写请求之后,通过数据读写请求中携带的关键词匹配微群索引表之前,进一步包括:确定所述数据读写请求为数据写入请求;如果确定携带的读写时间信息超出控制策略预先设置的数据写入时间段范围,生成一个新二级索引并为新二级索引配置相应的二级索引地址ID信息以及写入数据的数据块地址ID信息。在所述接收数据读写请求之后,通过数据读写请求中携带的关键词匹配微群索引表之前,进一步包括:确定所述数据读写请求为数据写入请求;获取存储上一数据的二级索引对应写入数据的数据量;确定该二级索引对应写入数据的数据量与当前数据的数据量之和超出控制策略预先设置的数据量阈值,生成一个新二级索引并为新二级索引配置相应的二级索引地址ID信息以及写入数据的数据块地址ID信息。在所述接收数据读写请求之后,通过数据读写请求中携带的关键词匹配微群索引表之前,进一步包括:确定所述数据读写请求为数据写入请求;通过数据写入请求中携带的关键词匹配微群索引表后,确定未能匹配上,则构建新微群索引。所述微群索引中存储有数据写入时间段信息与二级索引地址ID信息的映射表。
所述关键词包括用户ID或用户所属的微群ID。一种基于索引排序的数据读写装置,该装置包括:第一索引模块、第二索引模块以及数据块模块,其中,第一索引模块,接收数据读写请求,通过数据读写请求中携带的关键词匹配微群索引表,获取待写入数据对应的微群索引;根据数据读写请求中携带的读写时间信息,从获取的微群索引中获取与读写时间信息对应的二级索引地址ID信息,输出至第二索引模块;第二索引模块,根据获取的二级索引地址ID信息寻址对应的二级索引,获取读写数据的数据块地址ID,输出至数据块模块;数据块模块,根据获取的数据块地址ID,按时序倒排读写数据。所述装置进一步包括:数据写入时间段控制模块,在确定接收到的数据读写请求为数据写入请求时,如果确定携带的读写时间信息超出控制策略预先设置的数据写入时间段范围,生成一个新二级索引并为新二级索引配置相应的二级索引地址ID信息以及写入数据的数据块地址ID信
肩、O所述装置进一步包括:数据量控制模块,在确定接收到的数据读写请求为数据写入请求时,获取存储上一数据的二级索引对应写入数据的数据量,确定该二级索引对应写入数据的数据量与当前数据的数据量之和超出控制策略预先设置的数据量阈值,生成一个新二级索引并为新二级索引配置相应的二级索引地址ID信息以及写入数据的数据块地址ID信息。由上述的技术方案可见,本发明实施例提供的一种基于索引排序的数据读写方法及装置,接收数据读写请求,通过数据读写请求中携带的关键词匹配微群索引表,获取待写入数据对应的微群索引;根据数据读写请求中携带的读写时间信息,从获取的微群索引中获取与读写时间信息对应的二级索引地址标识ID信息;根据获取的二级索引地址ID信息寻址对应的二级索引,获取读写数据的数据块地址ID ;根据获取的数据块地址ID,按时序倒排读写数据。这样,在对其中的一个二级索引对应的数据块进行读写时,其它已写入数据的二级索引对应的数据块无需在内存中移动,从而可以快速找到或写入数据块,更好地支持了按时序倒排的需求,减少了内核资源耗费。


图1为现有基于索引排序的数据读写方法流程示意图。图2为现有基于索引排序的数据读写的内存结构示意图。图3为本发明实施例基于索引排序的数据读写方法流程示意图。图4为本发明实施例基于索引排序的数据读写的内存结构示意图。图5为本发明实施例基于索引排序的数据读写装置结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。现有基于索引排序的数据读写方法,在每次写入新数据时,需要将已写入的数据量占用的数据块在内存中执行后移处理,导致大量的内核资源耗费。本发明实施例中,考虑对现有的索引结构进行改进,采用二级索引快速排序的方法,即采用二级索引缓存的技术,对微群索引按照时间顺序进行细化控制,形成多个存储写入数据的数据块地址ID信息的二级索引,这样,在对其中的一个二级索引对应的数据块进行写入时,其它已写入数据的二级索引对应的数据块无需在内存中移动,从而减少了内核资源耗费。图3为本发明实施例基于索引排序的数据读写方法流程示意图。参见图3,该流程包括:步骤301,接收数据读写请求,通过数据读写请求中携带的关键词匹配微群索引表,获取待写入数据对应的微群索引;本步骤中,数据读写请求包括数据写入请求以及数据读出请求。关键词可以是用户ID,也可以是用户所属的微群ID,根据发送数据读写请求的用户标识或微群ID,从包含各微群索引的微群索引表中获取该对应的微群索引。对于用户ID,可以预先存储各用户ID映射的微群索引。当然,实际应用中,如果是数据写入请求,通过数据写入请求中携带的关键词匹配微群索引表后,确定未能匹配上,则构建新微群索引。步骤302,根据数据读写请求中携带的读写时间信息,从获取的微群索引中获取与读写时间信息对应的二级索引地址ID信息;本步骤中,与现有微群索引中存储写入数据的数据块的地址ID信息不同的是,本发明实施例中,微群索引中存储有数据写入时间段信息与二级索引地址ID信息的映射表。例如,微群索引中存储有二级索引I 二级索引3的地址ID信息,二级索引I映射的数据写入时间段信息为2011.01.01 2011.04.30,二级索引2映射的数据写入时间段信息为2011.05.01 2011.09.31,二级索引3映射的数据写入时间段信息为2011.10.01 。这样,对于写入数据来说,数据读写请求中携带的读写时间信息可以默认为当前时间,根据该当前时间,可以获取其映射二级索引3,从而得到二级索引3的地址ID信息;而对于读出数据来说,数据读写请求中携带的读写时间信息数据发表的时间信息,假设为2011.05.04,则根据该时间信息,可以获取其映射二级索引2,从而得到二级索引2的地址ID f目息。步骤303,根据获取的二级索引地址ID信息寻址对应的二级索引,获取读写数据的数据块地址ID ;本步骤中,二级索引中存储读写数据的数据块的地址ID信息,较佳地,对于按时序倒排读写数据的情形,数据块地址ID信息为数据块初始地址ID信息。如前所述,对于写入数据来说,在寻址到对应的二级索引3后,可以获取二级索引3用于读写数据的数据块地址ID ;而对于读出数据来说,在寻址到对应的二级索引2后,可以获取二级索引2用于读写数据的数据块地址ID。各二级索引用于读写数据的数据块地址ID互不相同。步骤304,根据获取的数据块地址ID,按时序倒排读写数据。本步骤中,在通过数据块地址ID寻址到读写数据的存储位置后,按时序倒排读写数据,即对于当前需写入的数据,将该数据写到内存的数据队列(数据块)最前端,并依序将数据队列中已写入的数据在内存中后移,当数据块容量小于数据容量时,可以申请更多数据块,数据块头部存放指向下一个数据块的数据块地址ID。对于当前需读出的数据,从内存的数据队列(数据块)的最前端,依序往后遍历数据队列,直至获取与读写时间信息对应的数据。一个二级索引用于读写数据的数据块中存放已经分配给该微群的所有数据,当该二级索引中的数据块放不下时,可以请求分配多个数据块存放数据。较佳地,微群索引按照预先设置的控制策略控制其包含的二级索引数量。控制策略包括数据写入时间段、和/或,二级索引对应存储的数据量。举例来说,如前所述,当一个二级索引对应写入数据的时间段超过4个月时,则生成一个新二级索引并为新二级索引配置相应的二级索引地址ID信息以及写入数据的数据块地址ID信息;或者,当一个二级索引对应写入数据的数据量超过预先设置的数据量阈值时,则生成一个新二级索引,从而使微群索引能够按照时间顺序或数据量进行细化控制,形成多个存储写入数据的数据块地址ID信息的二级索引。这样,对于控制策略为数据写入时间段的情形,在接收到数据写入请求时,进一步包括:如果确定携带的读写时间信息超出控制策略预先设置的数据写入时间段范围,生成一个新二级索引并为新二级索引配置相应的二级索引地址ID信息以及写入数据的数据块地址ID信息。对于控制策略为二级索引对应存储的数据量的情形,在接收到数据写入请求时,进一步包括:获取存储上一数据的二级索引对应写入数据的数据量;确定该二级索引对应写入数据的数据量与当前数据的数据量之和超出控制策略预先设置的数据量阈值,生成一个新二级索引并为新二级索引配置相应的二级索引地址ID信息以及写入数据的数据块地址ID信息。图4为本发明实施例基于索引排序的数据读写的内存结构示意图。参见图4,包括微群索引表(一级索引)、二级索引以及数据块区,微群索引表包括各微群索引,分别存储微群索引对应的一个或多个二级索引地址ID信息,通过关键词命中微群索引表中的微群索引,读到二级索引地址ID信息,根据二级索引地址ID信息寻址到相应的二级索引,二级索引中存储数据块地址ID信息,根据数据块地址ID信息,找到数据块区中相应的数据块,按时序倒排读写数据。图5为本发明实施例基于索引排序的数据读写装置结构示意图。参见图5,该装置包括:第一索引模块、第二索引模块以及数据块模块,其中,第一索引模块,接收数据读写请求,通过数据读写请求中携带的关键词匹配微群索引表,获取待写入数据对应的微群索引;根据数据读写请求中携带的读写时间信息,从获取的微群索引中获取与读写时间信息对应的二级索引地址ID信息,输出至第二索引模块;本发明实施例中,关键词可以是用户ID,也可以是用户所属的微群ID。第二索引模块,根据获取的二级索引地址ID信息寻址对应的二级索引,获取读写数据的数据块地址ID,输出至数据块模块;本发明实施例中,二级索引中存储读写数据的数据块的地址ID信息,各二级索引用于读写数据的数据块地址ID互不相同。
数据块模块,根据获取的数据块地址ID,按时序倒排读写数据。较佳地,该装置进一步包括:数据写入时间段控制模块,在确定接收到的数据读写请求为数据写入请求时,如果确定携带的读写时间信息超出控制策略预先设置的数据写入时间段范围,生成一个新二级索引并为新二级索引配置相应的二级索引地址ID信息以及写入数据的数据块地址ID信息;如果携带的读写时间信息没有超出控制策略预先设置的数据写入时间段范围,将该数据写入请求输出至第一索引模块。或者,数据量控制模块,在确定接收到的数据读写请求为数据写入请求时,获取存储上一数据的二级索引对应写入数据的数据量,确定该二级索引对应写入数据的数据量与当前数据的数据量之和超出控制策略预先设置的数据量阈值,生成一个新二级索引并为新二级索引配置相应的二级索引地址ID信息以及写入数据的数据块地址ID信息;如果该二级索引对应写入数据的数据量与当前数据的数据量之和没有超出控制策略预先设置的数据量阈值,将该数据写入请求输出至第一索引模块。由上述可见,本发明实施例的基于索引排序的数据读写方法及装置,通过采用二级缓存的技术,提供一种高效按时间倒排的方法,即采用一级索引、二级索引与数据的方式缓存,首先根据数据读写请求中携带的关键词命中到一级索引层,在一级索引层中读到二级索引地址ID,然后通过读到的二级索引地址ID,读到二级索引用于读写数据的数据块地址ID,按时序倒排读写数据。从而可以快速找到或写入数据块,相对于一级索引,更好地支持了按时序倒排的需求,使最新消息写入时,只需要写到二级索引对应第一个分配的数据块中,然后重新排序写回,不需要对已经缓存的其他二级索引对应数据块存储的数据执行移动处理,避免了大量数据的内存移动,从而减少了内核资源耗费。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于索引排序的数据读写方法,其特征在于,该方法包括: 接收数据读写请求,通过数据读写请求中携带的关键词匹配微群索引表,获取待写入数据对应的微群索引; 根据数据读写请求中携带的读写时间信息,从获取的微群索引中获取与读写时间信息对应的二级索引地址标识ID信息; 根据获取的二级索引地址ID信息寻址对应的二级索引,获取读写数据的数据块地址ID ; 根据获取的数据块地址ID,按时序倒 排读写数据。
2.如权利要求1所述的方法,其特征在于,所述数据读写请求包括数据写入请求以及数据读出请求,对于数据读写请求,所述读写时间信息为接收数据写入请求的当前时间,对于数据读出请求,所述读写时间信息为携带的数据发表的时间信息。
3.如权利要求2所述的方法,其特征在于,在所述接收数据读写请求之后,通过数据读写请求中携带的关键词匹配微群索引表之前,进一步包括: 确定所述数据读写请求为数据写入请求; 如果确定携带的读写时间信息超出控制策略预先设置的数据写入时间段范围,生成一个新二级索引并为新二级索引配置相应的二级索引地址ID信息以及写入数据的数据块地址ID信息。
4.如权利要求2所述的方法,其特征在于,在所述接收数据读写请求之后,通过数据读写请求中携带的关键词匹配微群索引表之前,进一步包括: 确定所述数据读写请求为数据写入请求; 获取存储上一数据的二级索引对应写入数据的数据量; 确定该二级索引对应写入数据的数据量与当前数据的数据量之和超出控制策略预先设置的数据量阈值,生成一个新二级索引并为新二级索引配置相应的二级索引地址ID信息以及写入数据的数据块地址ID信息。
5.如权利要求2所述的方法,其特征在于,在所述接收数据读写请求之后,通过数据读写请求中携带的关键词匹配微群索引表之前,进一步包括: 确定所述数据读写请求为数据写入请求; 通过数据写入请求中携带的关键词匹配微群索引表后,确定未能匹配上,则构建新微群索引。
6.如权利要求1至5任一项所述的方法,其特征在于,所述微群索引中存储有数据写入时间段信息与二级索引地址ID信息的映射表。
7.如权利要求6所述的方法,其特征在于,所述关键词包括用户ID或用户所属的微群ID0
8.一种基于索引排序的数据读写装置,其特征在于,该装置包括:第一索引模块、第二索引模块以及数据块模块,其中, 第一索引模块,接收数据读写请求,通过数据读写请求中携带的关键词匹配微群索引表,获取待写入数据对应的微群索引;根据数据读写请求中携带的读写时间信息,从获取的微群索引中获取与读写时间信息对应的二级索引地址ID信息,输出至第二索引模块;第二索引模块,根据获取的二级索引地址ID信息寻址对应的二级索引,获取读写数据的数据块地址ID,输出至数据块模块; 数据块模块,根据获取的数据块地址ID,按时序倒排读写数据。
9.如权利要求8所述的装置,其特征在于,所述装置进一步包括: 数据写入时间段控制模块,在确定接收到的数据读写请求为数据写入请求时,如果确定携带的读写时间信息超出控制策略预先设置的数据写入时间段范围,生成一个新二级索引并为新二级索引配置相应的二级索引地址ID信息以及写入数据的数据块地址ID信息。
10.如权利要求8所述的装置,其特征在于,所述装置进一步包括: 数据量控制模块,在确定接收到的数据读写请求为数据写入请求时,获取存储上一数据的二级索引对应写入数据的数据量,确定该二级索引对应写入数据的数据量与当前数据的数据量之和超出控制策略预先设置的数据量阈值,生成一个新二级索引并为新二级索引配置相应的二级索引地址 ID信息以及写入数据的数据块地址ID信息。
全文摘要
本发明公开了一种基于索引排序的数据读写方法及装置。该方法包括接收数据读写请求,通过数据读写请求中携带的关键词匹配微群索引表,获取待写入数据对应的微群索引;根据数据读写请求中携带的读写时间信息,从获取的微群索引中获取与读写时间信息对应的二级索引地址标识ID信息;根据获取的二级索引地址ID信息寻址对应的二级索引,获取读写数据的数据块地址ID;根据获取的数据块地址ID,按时序倒排读写数据。应用本发明,可以降低读写数据的内核资源耗费。
文档编号G06F17/30GK103186537SQ20111044480
公开日2013年7月3日 申请日期2011年12月27日 优先权日2011年12月27日
发明者舒军, 熊欢, 史业政, 田明 申请人:腾讯科技(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1