专利名称:邮件索引的存储方法
技术领域:
本发明涉及电子信息技术领域,特别涉及一种邮件索引的存储方法。
背景技术:
在现有的邮件系统中,邮件一般都是以文件的形式存储在磁盘中。当需要从磁盘中找到某一封已存储的邮件时,一般可通过邮件索引来检索该邮件中磁盘中的存储位置。其中,所述邮件索引中记录了每封邮件的唯一编号、大小、位置、主题和所有者等相关的索引信息。 邮件索引本身也需要进行存储。在现有技术中,经常采用的邮件索引的存储方法主要有两种第一种存储方法将邮件索引存储在数据库中。此时,对邮件索引中的邮件进行添力口、读取或删除的操作,都可以通过对数据库的操作来完成。例如,当需要中邮件索引中添加一封邮件时,可在数据库中添加与该所需添加的邮件相对应的一条记录,该记录中包括该邮件的唯一编号、大小、位置、主题和所有者等信息。因此,用户可以通过该数据库中的邮件索引获取该用户所有邮件的邮件列表。当用户需要读取某封邮件时,则可先从该数据库中获取邮件索引,然后根据邮件的唯一编号,从所述邮件索引中获取该邮件的存储位置,然后从该存储位置读取该邮件。而当需要删除某个邮件时,则只需从数据库的邮件索引中删除与该邮件对应的记录,并从磁盘中删除该邮件即可。第二种存储方法将邮件索引以索引文件的形式存储到文件系统或桶文件上。当需要添加一封邮件时,则在该索引文件中添加一条记录。其中,索引文件中的每条记录都包含对应邮件的唯一编号、大小、位置、主题等信息。当用户需要获取邮件列表时,可以读取整个索引文件,逐一解析索引文件中的每条记录,即可获取所需的邮件列表。当需要删除某封邮件时,则可在索引文件中与该邮件对应的记录上打上删除标记,然后在某个预先确定的时间对该邮件进行彻底地删除。但是,上述的两种存储邮件索引的方法中还存在一些问题。例如,在第一种存储方法中,由于是将整个邮件索引都存储在数据库中,当某个用户或某些用户的邮件数目很多时,这些用户对数据库的查询操作将导致整个数据库的查询操作变得比较慢,从而影响到该数据库对其他用户的服务速度。而在第二种存储方法中,由于是将邮件索引存储在文件系统或桶文件中,而文件系统出于维护其本身结构的完整性的需要,对文件系统的读写操作将需要一定的系统开销;桶文件也是建立在文件系统之上,因此也存在同样的读写开销,所以将导致系统的读写性能较差。综上可知,由于存在如上所述的各种问题,因此在现有技术中的邮件索引的存储方法中,邮件数据多的用户的操作将对其他用户的服务造成不良影响,所以系统的读写性能将随用户数量的增多而大幅下降;而且,对邮件索引的操作行为也将增加读写文件系统的开销,降低系统的读写性能。
发明内容
根据本发明,提供了一种邮件索引的存储方法,从而可有效地节省读写文件系统的开销,提高系统的读写性能。节省读写文件系统的开销根据本发明的一种邮件索引的存储方法,其包括A、在块设备上为每个用户设置一个独立的用户区域;B、将各个用户的邮件索引信息分别存储在各个用户的用户区域中。其中,该方法还进一步包括
C、设置一个索引导航器;所述索引导航器中存储有用户信息和与各个用户相应的用户区域的信息;D、当需要对用户的邮件索引进行读写操作时,根据用户信息从所述索引导航器中获取相对应的用户区域的信息,并根据所述用户区域的信息对用户的邮件索引进行读写操作。其中,所述用户区域的信息包括起始位置、总空间和当前邮件数量。其中,所述步骤D还进一步包括当邮件存储器需要对用户的邮件索引进行读写操作时,邮件存储器向索引导航器发送查询请求;所述索引导航器根据查询请求向所述邮件存储器返回相应的用户区域的信息;所述邮件存储器根据接收到的用户区域的信息向设置有多个用户区域的索引存储器发送读写请求;所述索引存储器根据所述读写请求对相应的邮件索引进行读写操作,将操作结果返回给所述邮件存储器。其中,所述查询请求中包括用户信息。其中,所述读写请求中可以包括邮件索引的信息。其中,所述用户区域包括表头分区、描述分区和索引项分区;其中,所述表头分区为用户区域的头部,用于记录该用户区域的基本信息;所述描述分区,用于存储各个用户邮件夹的描述信息;所述索引项分区,用于存储各个邮件索引。其中,所述表头分区的长度为512字节。其中,所述表头分区中还包括有效字段、大小字段和总条目数字段;所述有效字段,用于表示用户区域的数据是否有效;所述大小字段,用于表示用户区域的大小或长度;所述总条目数字段,用于表示用户区域中已存储的邮件索引的总数。其中,所述有效字段的长度为I比特。其中,所述大小字段的长度为4个字节。其中,所述总条目数字段的长度为4个字节。其中,所述描述分区的长度为512B 8KB。其中,所述描述分区中存储有一条或多条邮件夹记录;每一条邮件夹记录中都记载一个用户邮件夹的描述信息。其中,所述邮件夹记录中还包括邮件夹ID字段、邮件夹名称字段、标记字段和备注字段;其中,所述邮件夹ID字段,用于记录邮件夹ID号;所述邮件夹名称字段,用于记录邮件夹名称;所述标记字段为一组标志位,用于表示邮件夹的属性; 所述备注字段,用于记录备注信息。
其中,所述邮件夹ID字段的长度为2个字节;所述邮件夹名称字段的长度为80个字节;所述标记字段的长度为I个字节;所述备注字段的长度为45个字节。其中,所述索引项分区的长度为8KB、16KB、32KB或64KB。其中,所述索引记录中还包括邮件ID字段、所属邮件夹ID字段、邮件大小字段、到信时间字段、位置字段和保留字段;其中,所述邮件ID字段用于存储邮件的ID号;所述所属邮件夹ID字段用于存储该邮件所属邮件夹的邮件夹ID ;所述邮件大小字段用于表示该邮件的大小;所述到信时间字段用于存储该邮件的到信时间;所述位置字段用于存储该邮件在存储系统中的位置;所述保留字段用于存储该邮件其它描述信息。本发明还提供了一种邮件索引的存储装置,该装置包括设置有多个用户区域的索引存储器;所述索引存储器,用于将各个用户的邮件索引信息分别存储在各个用户的用户区域中。其中,所述邮件索引的存储装置还包括存储有用户信息和与各个用户相应的用户区域的信息的索引导航器;所述索引导航器,用于根据接收到的用户信息输出相对应的用户区域的信息,使得邮件存储器可根据用户区域的信息对相应用户的邮件索引进行读写操作。由上述技术方案可见,在本发明中所提供的邮件索引的存储方法中,由于在块设备上为每个用户都设置了一个独立的用户区域,为每个用户都分配了独立的存储空间,使得用户与用户之间相互分离,然后再将各个用户的邮件索引信息分别存储在各个用户的用户区域中,所以对于邮件索引信息的读写操作,各个用户之间是彼此独立的,从而使得邮件数据多的用户的操作并不会对其他用户的服务造成不良影响,因而可以大大提高系统的读写性能。此外,在本发明的技术方案中,用户区域是通过IN返回的begin offset来定位的,因此每次对邮件索引的读写操作都能快速地定位到该邮件索引在磁盘中的存储位置,从而可以有效地节省读写文件系统的开销,提高系统的读写性能。
为了更清楚地说明本发明实施例或现有技术中的技术方案,以下将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,以下描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员而言,还可以根据这些附图所示实施例得到其它的实施例及其附图。图I为本发明实施例中邮件索引的存储方法的流程示意图;图2为本发明实施例中步骤13的一种实现方法的流程示意图;图3为本发明实施例中的邮件索引的存储装置的结构示意图。
具体实施例方式为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。图I为本发明实施例中邮件索引的存储方法的流程示意图。如图I所示,所述邮件索引的存储方法包括
步骤11,在块设备上为每个用户设置一个独立的用户区域。目前,输入输出(I/O)设备大致可分为两类块设备和字符设备。其中,块设备可将信息存储在固定大小的数据块(可简称为块)中,而每个块则都具有相应的地址。块设备中的数据块的大小通常在512字节到32768字节之间,而磁盘则是最常见的块设备。由于上述块设备的每个数据块都能独立于其它数据块而进行读写操作,因此,在本步骤中,将在块设备上为每个用户都设置一个独立的用户区域用于存储各个用户的邮件索引信息。其中,所述用户区域是预先在所述块设备上设定的区域。步骤12,将各个用户的邮件索引信息分别存储在各个用户的用户区域中。由于在步骤11中,已经为每个用户都设置一个独立的用户区域,因此在本步骤中即可将各个用户的邮件索引信息分别存储在各个用户的用户区域中。在本发明的技术方案中,可以使用多种方式将邮件索引信息存储在用户区域中。以下将以其中的一种较佳实施例为例,对本发明的技术方案进行进一步的说明。在本发明的较佳实施例中,还可以将用户区域在逻辑上划分为三个分区表头分区(Header)、描述分区(Description)和索引项(Index item)分区。其中,所述Header分区为用户区域的头部,用于记录该用户区域的基本信息。所述Header分区的起始位置(Begin Offset)则表示其所述的用户区域在整个块设备中的起始位置或起始地址。较佳的,在本发明的具体实施例中,所述Header分区的长度可以为512字节(B)。较佳的,在本发明的具体实施例中,所述Header分区中还包括如下表所示三个字段
有效(Valid) 大小(Size)总条目数(Num)表I其中,所述有效字段用于表示该用户区域的数据是否有效。例如,当用户被删除时,或者当用户所存储的邮件数过多而需要更大的用户区域来存储邮件时,将需要将该用户原有的用户区域标记为无效,留待以后再次利用。另外,在本发明的较佳实施例中,所述有效字段的长度为I比特(bit)。较佳的,所述有效字段的取值含义可以预先设定,因此,可以根据该有效字段的取值即可获知该用户区域的数据是否有效。例如,当所述有效字段的取值为O时,表示该有效字段所在的用户区域中的数据不可用,即无效。而当所述有效字段的取值为I时,表示该有效字段所在的用户区域中的数据可用。所述大小字段,用于表示该用户区域的大小或长度。较佳的,所述大小字段的长度为4个字节(B),应已足够表示用户区域的大小。所述总条目数字段,用于表示该用户区域中已存储的邮件索引的总数。较佳的,所述总条目数字段的长度为4个字节(B),应已足够表示该用户区域中已存储的邮件索引的总数。在本发明的具体实施例中,所述Description分区用于存储各个用户邮件夹的描述信息。其中,所述Description分区中可存储有一条或多条邮件夹记录,每一条邮件夹记录中都记载一个用户邮件夹的描述信息。 较佳的,在本发明的具体实施例中,所述Description分区的长度可以是512B 8KB。较佳的,在本发明的具体实施例中,所述邮件夹记录中还可包括如下所示的4个字段邮件夹ID (Ufid)字段、邮件夹名称(Folder name)字段、标记(Flag)字段和备注(Des)字段。在本发明的具体实施例中,所述邮件夹可以具有多种类型,其功能类似于文件夹,用于存储不同类型的邮件。例如,所述邮件夹可以包括如下几种类型收件夹、已发送邮件夹、垃圾邮件夹和已删除邮件夹等。较佳的,在本发明的具体实施例中,所述用户还可以自行创建新的邮件夹。由于Description分区的长度为512B 8KB,因此当Description分区中的每条邮件夹记录的长度为128B时,则Description分区中可以记录60条邮件夹记录。如果减小每条邮件夹记录的长度,则还可以记录更多条邮件夹记录。另外,每个邮件夹中所包含的邮件数是由业务逻辑决定的,在存储形式上不做限制。为了区分各个不同的邮件夹,则可为每一个邮件夹都分配一个唯一的ID号,称为邮件夹ID号。因此,每条邮件夹记录中的所述Ufid字段可用于记录邮件夹ID号。较佳的,在本发明的具体实施例中,所述Ufid字段的长度可以是2个字节。所述Folder name字段,则可用于记录邮件夹名称。较佳的,在本发明的具体实施例中,所述Folder name字段的长度可以是80个字节。所述Flag字段是一组标志位,则用于表示邮件夹的属性。例如,所述Flag字段可以表示该邮件夹是系统定义的邮件夹,或者是用户创建的邮件夹,或者是广告、网站通知
坐寸ο较佳的,在本发明的具体实施例中,所述Flag字段的长度可以是I个字节。所述Des字段,则可用于记录备注信息。较佳的,在本发明的具体实施例中,所述Des字段的长度可以是45个字节。较佳的,在本发明的具体实施例中,邮件夹记录中的各个字段的长度可根据实际应用情况预先进行设定或调整。此外,在本发明的较佳实施例中,所述索引项(Index item)分区用于存储各个邮件索引。其中,所述Index item分区中可存储一条或多条索引记录,每一条索引记录中都记载一个邮件索引。较佳的,在本发明的具体实施例中,所述Index item分区的长度可以根据实际应用情况预先设置。例如,所述Index item分区的长度可以是8KB、16KB、32KB、64KB、……
坐寸ο较佳的,在本发明的具体实施例中,所述索引记录中还可包括如下所示的4个字段邮件ID(MID)字段、所属邮件夹ID(UID)字段、邮件大小(MSize)字段、到信时间(Ctime)字段、位置(Location)字段和保留(Reserved)字段。其中,所述MID字段用于存储邮件的ID号。所述UID字段用于存储该邮件所属邮件夹的邮件夹ID。 所述MSize字段用于表示该邮件的大小。所述Ctime字段用于存储该邮件的到信时间。所述Location字段用于存储该邮件在存储系统中的位置。所述Reserved字段用于存储该邮件其它描述信息,例如,该邮件的主题、发件人等信息。通过上述的设置,即可将各个用户的邮件索引信息分别存储在各个用户的用户区域中。进一步的,在本发明的较佳实施例中,在将各个用户的邮件索引信息分别存储在各个用户的用户区域中之后,还可进一步包括步骤13,设置一个索引导航器(Index navigator,简称IN);所述索引导航器中存储有用户信息和与各个用户相应的用户区域的信息。在本步骤中,将设置一个索引导航器,用于存储用户信息和与各个用户相应的用户区域的信息。其中,在本发明的较佳实施例中,所述用户区域的信息包括起始位置、总空间和当前邮件数量等信息。步骤14,当需要对用户的邮件索引进行读写操作时,根据用户信息从所述索引导航器中获取相对应的用户区域的信息,并根据所述用户区域的信息对用户的邮件索引进行读写操作。在本发明的技术方案中,可以使用多种方式来实现上述步骤14。以下将以其中的一种较佳实施例为例,对本发明的步骤14进行进一步的说明。图2为本发明实施例中步骤14的一种实现方法的流程示意图。如图2所示,在本实施例中,所述步骤14可以包括如下所述的步骤步骤141,当邮件存储器(Mail Storage,简称MS)需要对用户的邮件索引进行读写操作时,MS向IN发送查询请求。较佳的,在本步骤之前,还可以预先设置一个MS和索引存储器(Index Storage,简称IS)。其中,所述IS可以是块设备。所述IS中设置有多个用户区域,每个用户区域中存储有一个用户的邮件索弓I信息。因此,当MS需要对存储在IS中的邮件索引进行读写操作时(例如,当MS接收到一封邮件时),MS将向IN发送查询请求,请求查询所述邮件索引所在的用户区域的信息。其中,所述查询请求中可以包括用户信息。步骤142,IN根据查询请求向MS返回相应的用户区域的信息。具体来说,在本步骤中,所述IN在接收到所述查询请求后,可根据所述查询请求中的用户信息查找相应的用户区域的信息,并将查找到的用户区域的信息返回给所述MS。其中,所述用户区域的信息包括起始位置、总空间和当前邮件数量等信息。步骤143,MS根据接收到的用户区域的信息向IS发送读写请求。由于所述用户区域的信息中包括用户区域的起始位置,因此MS可以根据接收到的用户区域的信息向IS发送读写请求。较佳的,所述读写请求中可以包括邮件索引的信肩、O步骤144,IS根据所述读写请求对相应的邮件索引进行读写操作,将操 作结果返回给MS。在本步骤中,IS将根据读写请求对其存储的邮件索引进行读写操作,并中操作结束之后,还可将操作结果返回给MS。通过上述的步骤141 144,即可实现上述的步骤14,对用户的邮件索引进行读写操作。图3为本发明实施例中的邮件索引的存储装置的结构示意图。如图3所示,所述邮件索引的存储装置30至少包括设置有多个用户区域的索引存储器31。所述索引存储器31,用于将各个用户的邮件索引信息分别存储在各个用户的用户区域中。较佳的,在本发明的具体实施例中,所述邮件索引的存储装置还可进一步包括存储有用户信息和与各个用户相应的用户区域的信息的索引导航器32。所述索引导航器32,用于根据接收到的用户信息输出相对应的用户区域的信息,使得邮件存储器可根据用户区域的信息对相应用户的邮件索引进行读写操作。综上可知,在本发明中所提供的邮件索引的存储方法中,由于在块设备上为每个用户都设置了一个独立的用户区域,为每个用户都分配了独立的存储空间,使得用户与用户之间相互分离,然后再将各个用户的邮件索引信息分别存储在各个用户的用户区域中,所以对于邮件索引信息的读写操作,各个用户之间是彼此独立的,从而使得邮件数据多的用户的操作并不会对其他用户的服务造成不良影响,因而可以大大提高系统的读写性能。此外,在本发明的技术方案中,用户区域是通过IN返回的begin offset来定位的,因此每次对邮件索引的读写操作都能快速地定位到该邮件索引在磁盘中的存储位置,从而可以有效地节省读写文件系统的开销,提高系统的读写性能。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种邮件索引的存储方法,其特征在于,该方法包括 A、在块设备上为每个用户设置一个独立的用户区域; B、将各个用户的邮件索引信息分别存储在各个用户的用户区域中。
2.如权利要求I所述的邮件索引的存储方法,其特征在于,该方法还进一步包括 C、设置一个索引导航器;所述索引导航器中存储有用户信息和与各个用户相应的用户区域的信息; D、当需要对用户的邮件索引进行读写操作时,根据用户信息从所述索引导航器中获取相对应的用户区域的信息,并根据所述用户区域的信息对用户的邮件索引进行读写操作。
3.如权利要求2所述的邮件索引的存储方法,其特征在于,所述用户区域的信息包括起始位置、总空间和当前邮件数量。
4.如权利要求2所述的邮件索引的存储方法,其特征在于,所述步骤D还进一步包括 当邮件存储器需要对用户的邮件索引进行读写操作时,邮件存储器向索引导航器发送查询请求; 所述索引导航器根据查询请求向所述邮件存储器返回相应的用户区域的信息; 所述邮件存储器根据接收到的用户区域的信息向设置有多个用户区域的索引存储器发送读写请求; 所述索引存储器根据所述读写请求对相应的邮件索引进行读写操作,将操作结果返回给所述邮件存储器。
5.如权利要求4所述的邮件索引的存储方法,其特征在于, 所述查询请求中包括用户信息。
6.如权利要求4所述的邮件索引的存储方法,其特征在于, 所述读写请求中可以包括邮件索引的信息。
7.如权利要求I所述的邮件索引的存储方法,其特征在于,所述用户区域包括表头分区、描述分区和索引项分区;其中, 所述表头分区为用户区域的头部,用于记录该用户区域的基本信息; 所述描述分区,用于存储各个用户邮件夹的描述信息; 所述索引项分区,用于存储各个邮件索引。
8.如权利要求7所述的邮件索引的存储方法,其特征在于, 所述表头分区的长度为512字节。
9.如权利要求7所述的邮件索引的存储方法,其特征在于,所述表头分区中还包括有效字段、大小字段和总条目数字段; 所述有效字段,用于表示用户区域的数据是否有效; 所述大小字段,用于表示用户区域的大小或长度; 所述总条目数字段,用于表示用户区域中已存储的邮件索引的总数。
10.如权利要求9所述的邮件索引的存储方法,其特征在于, 所述有效字段的长度为I比特。
11.如权利要求9所述的邮件索引的存储方法,其特征在于, 所述大小字段的长度为4个字节。
12.如权利要求9所述的邮件索引的存储方法,其特征在于,所述总条目数字段的长度为4个字节。
13.如权利要求7所述的邮件索引的存储方法,其特征在于, 所述描述分区的长度为512B 8KB。
14.如权利要求7所述的邮件索引的存储方法,其特征在于, 所述描述分区中存储有一条或多条邮件夹记录;每一条邮件夹记录中都记载一个用户邮件夹的描述信息。
15.如权利要求14所述的邮件索引的存储方法,其特征在于,所述邮件夹记录中还包括邮件夹ID字段、邮件夹名称字段、标记字段和备注字段;其中, 所述邮件夹ID字段,用于记录邮件夹ID号; 所述邮件夹名称字段,用于记录邮件夹名称; 所述标记字段为一组标志位,用于表示邮件夹的属性; 所述备注字段,用于记录备注信息。
16.如权利要求14所述的邮件索引的存储方法,其特征在于, 所述邮件夹ID字段的长度为2个字节; 所述邮件夹名称字段的长度为80个字节; 所述标记字段的长度为I个字节; 所述备注字段的长度为45个字节。
17.如权利要求7所述的邮件索引的存储方法,其特征在于, 所述索引项分区的长度为8KB、16KB、32KB或64KB。
18.如权利要求7所述的邮件索引的存储方法,其特征在于,所述索引记录中还包括邮件ID字段、所属邮件夹ID字段、邮件大小字段、到信时间字段、位置字段和保留字段;其中, 所述邮件ID字段用于存储邮件的ID号; 所述所属邮件夹ID字段用于存储该邮件所属邮件夹的邮件夹ID ; 所述邮件大小字段用于表示该邮件的大小; 所述到信时间字段用于存储该邮件的到信时间; 所述位置字段用于存储该邮件在存储系统中的位置; 所述保留字段用于存储该邮件其它描述信息。
19.一种邮件索引的存储装置,其特征在于,该装置包括设置有多个用户区域的索引存储器; 所述索引存储器,用于将各个用户的邮件索引信息分别存储在各个用户的用户区域中。
20.如权利要求19所述的邮件索引的装置,其特征在于,所述邮件索引的存储装置还包括存储有用户信息和与各个用户相应的用户区域的信息的索引导航器; 所述索引导航器,用于根据接收到的用户信息输出相对应的用户区域的信息,使得邮件存储器可根据用户区域的信息对相应用户的邮件索引进行读写操作。
全文摘要
本发明公开了一种邮件索引的存储方法。本发明中的邮件索引的存储方法包括在块设备上为每个用户设置一个独立的用户区域;将各个用户的邮件索引信息分别存储在各个用户的用户区域中。通过使用本发明中的邮件索引的存储方法,可以有效地节省读写文件系统的开销,提高系统的读写性能。
文档编号G06F17/30GK102902731SQ20121033339
公开日2013年1月30日 申请日期2012年9月10日 优先权日2012年9月10日
发明者陈华英, 王安国, 王文方 申请人:新浪网技术(中国)有限公司