一种数据存储方法及装置的制作方法

文档序号:7561786阅读:146来源:国知局
专利名称:一种数据存储方法及装置的制作方法
技术领域
本发明涉及数据存储领域,尤其涉及一种高效率数据存储方法及装置。
背景技术
在当今网络时代,网络业务服务系统越来越普通,随着宽带网络、3G技术应用的普及,多媒体内容的存储对这些系统越来越重要。如图1所示,网络业务服务系统在向用户提供多媒体服务时,该系统先存储多媒体,待收到用户A发出获取多媒体请求后,查询特定多媒体,然后向用户A提供查询结果以提供多媒体服务。再如图2所示多媒体服务中,也涉及多媒体的存储。多媒体存储的应用还有很多,这里不一一列举。总之,网络服务系统在为客户提供服务之前都需要快速存储、查询、删除对应的多媒体记录。
在Internet、无线网络技术不完善的时代,网络带宽受到很大的限制,客户访问、转发的媒体往往是简短的文字,网络应用系统往往使用普通商用数据库即可实现媒体的存储、快速访问。
随着网络技术越来越完善,使用越来越普及,所传递的媒体不再仅局限于简短的文字内容,而是内容与表现形式极大丰富的多媒体内容,包括声音、图像、电影、商用文件等,且需要存储的多媒体记录数目巨大,单条记录大小不定,往往从几K到几百K不等。普通商用数据库用来存储这些多媒体数据力不从心,效率低下,对于那些对效率要求较高的系统不适用。有的系统转而直接求助于操作系统,直接采用操作系统文件来存储媒体,具体方案是一个文件对应于一条多媒体消息,以后按照文件名来访问多媒体消息。该方案对于那些效率要求不高,小型系统尚可,却无法满足大规模系统的要求,因为该方案导致系统中不可避免地存在大量文件,操作系统负担极大地增加,从而导致系统整体性能低下。而且操作系统增加、删除文件操作性能不高,且不可避免地会产生磁盘碎片,使得系统的性能每况愈下。总之,对于数目巨大,单条记录大小不大的多媒体存储需求,这不是一个可行方案。
有的系统则采用数据库+大文件方案将多媒体,统一存储在一个(或一组)大文件中,将具体多媒体消息存放的起始地址存放在数据库中。该方案需要增加一个昂贵的商用数据库系统,成本很高;并且必须辗转多次访问数据库、多媒体文件才能访问到多媒体内容,因而效率不尽如人意。而多媒体内容在大文件中存储组织一样复杂,没有因数据库的使用而降低。

发明内容
针对现有技术的上述缺陷,本发明的目的在于提供一种数据存储方法及装置以实现数据的快速存储、快速访问、快速删除,且成本低。
本发明提供一种数据存储的方法,该方法为为待存储的数据记录分配一个数据记录标识(ID);将所述数据记录保存在一个被分割成簇的文件中;将存储所述数据记录的头一个簇的地址保存于索引存储区,并建立该地址与数据记录ID的一一映射关系。
其中建立数据记录ID空闲堆栈,当删除某一数据记录时,将该记录的ID放置于数据记录ID空闲堆栈中,并保存已经分配出去的ID的最大值。
为待存储的数据记录分配数据记录ID时,首先判断数据记录ID空闲堆栈中是否有空闲ID,如果有,则优先使用该空闲ID,如没有空闲ID则接续已经分配出去的ID的最大值生成新的ID。
为存放数据记录的文件的簇建立空闲簇指针堆栈,当删除某一数据记录时,将该记录的对应的簇指针放置于空闲簇指针堆栈中,并保存已经分配出去的簇指针的最大值。
将所述数据记录存储在文件中时,首先判断数据记录空闲簇堆栈中是否有空闲簇指针,如果有,则优先使用该空闲簇;否则,接续已经分配出去的簇使用新的簇。
当访问数据记录时,通过该数据记录的ID访问所述记录。
保存一个数据记录的所有簇中,每个簇保存下一个簇的地址。
本发明提供一种数据存储装置,所述装置包括业务处理模块、存储控制模块和物理数据存储区,所述业务处理模块用于接受数据记录操作请求,并完成所述数据记录的应用具体数据结构到二进制数据块的相互转换,转换后的二进制数据记录块将由存储控制模块进行存储;所述存储控制模块用于为所述数据记录分配数据记录ID,并建立该数据记录ID和数据记录在物理数据存储区存储地址的关系;所述物理数据存储区用于存储所有数据记录。
所述业务处理模块包括业务处理桩模块,所述桩模块用于提供桩类及完成数据记录的串化及反串化。
所述物理数据存储区包括索引存储区和数据存储区,分别用于以文件形式存储数据记录的索引和数据记录;数据存储区形成的数据文件被分割为一个个的簇,每个簇保存下一个簇的地址;所述数据存储区还包括空闲簇堆栈,用于当数据记录删除时,保存该记录对应簇的指针;所述索引存储区还包括数据记录ID堆栈,用于当数据记录删除时,保存该记录对应的ID。
所述存储控制模块进一步包括存储管理器和至少一个分组存储管理器,所述存储管理器用于将实际的存储管理工作分配给分组存储器,每个分组管理器对应一个工作线程。
所述分组存储器进一步包括索引存储管理器和数据存储管理器,所述索引存储管理器用于管理空闲数据记录ID堆栈和索引存储区,当新增数据记录时,首先从空闲ID堆栈中为该记录申请空闲ID,假如没有空闲ID则接续已经分配的ID号生成新的ID;所述数据存储管理器用于管理空闲簇指针堆栈和数据存储区,当新增数据记录时,首先从空闲簇指针堆栈中为该记录申请空闲簇,假如没有空闲簇则将该记录存储在新的簇中。
所述数据记录ID是由该记录索引存储地址的对应的文件偏移量通过一一映射变换得到。
所述数据记录是多媒体记录。
索引存储管理器进一步包括数据记录ID管理器,用于管理空闲数据记录ID堆栈。
所述一种数据存储装置与应用系统相连,接受应用系统的存储请求,依请求进行相应的存储、访问及删除操作,应用系统通过数据记录ID访问数据记录。
本发明为数据记录分配ID号,且该ID是由该数据记录索引存储区对应的文件偏移量通过一一映射变换得到。应用系统靠该ID来访问时,可变换得到对应存储区地址,完全避免复杂的查询搜索动作,达到效率最大化。且数据记录存储是由分组存储管理器完成,以充分利用系统I/O带宽,且不需要昂贵的商用数据库系统支持,成本低。


图1为多媒体应用样例一流程图;图2为多媒体应用样例二流程图;图3为数据存储装置体系结构示意图;图4为存储控制模块体系结构示意图;图5为数据存储区结构示意图;图6为空闲ID堆栈算法示意图;图7为本发明方案中存储方法流程图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚明白,在数据记录中选择多媒体记录作为实施例,结合实施例和附图对本发明进一步详细说明。
如图3所示,本发明提供的数据存储装置与应用系统相连,接受应用系统的存储请求,依请求进行相应的存储、访问及删除操作。
该数据存储装置包括业务处理模块、存储控制模块、物理数据存储区。其中业务处理模块又包括业务处理桩模块,其向应用系统提供桩类,该桩提供串化(marshaling)、反串化(demarshaling)功能,完成应用具体数据结构到二进制数据块的相互转换。它向“存储控制模块”屏蔽应用系统的数据结构的多样性,便于存储控制模块实现统一的存储管理。
如图4所示,存储控制模块由存储管理器和分组存储管理器组成。存储管理器起存储管理代理的作用,它将实际的存储管理工作委托给分组存储管理器去完成。它通过业务处理桩模块向应用系统提供统一的虚拟多媒体存储设备。其为每条多媒体记录分配一个多媒体记录标识(ID),并完成多媒体记录ID到数据块的绑定。该ID可以设计为一个定长的数值,如下表所示,其共计12位数,11~12位是“分组号”、1~10是统一编号,当然实际实施时可以适当缩小或扩大取值范围,一切看目标系统规模。当应用系统访问多媒体记录时,依该多媒体记录对应的ID号进行访问。

分组存储管理器具体完成存储管理任务。将存储管理分组的主要目标是通过分组可以将多媒体内容分别存储在不同的文件上,进而可映射到不同的磁盘上,如此,可提高系统I/O效率。每个分组存储管理器拥有一个自己的工作线程,这样还可以简便地实现并行存储动作。当然,也可将所有多媒体的数据存储在同一文件上,在这种情况下,存储控制模块不需要分组存储管理器,由存储管理器完成具体的存储管理任务。
物理数据存储区分为索引存储区和多媒体数据存储区,统一采用大文件存储方式。其中索引存储区存储每个多媒体记录的索引,还包括多媒体记录ID堆栈,用于当多媒体记录删除时,保存该记录对应的ID。当应用系统请求存储一条多媒体记录时,存储管理层为每条多媒体记录分配的ID都是由索引存储区对应的文件偏移量通过一一映射变换得到的。近而,通过索引存储区建立起了每个多媒体记录的ID与该多媒体记录在多媒体数据存储区的索引的一一对应关系。多媒体数据存储区采用大文件加按簇分配的方案,即将数据大文件分割成一个个的簇,每个簇保存下一个簇的地址,实现方式类同于链表。在索引区中保存多媒体记录对应的头一个簇的地址。故,通过索引存储区建立起了每个多媒体记录的ID与该多媒体记录在多媒体数据存储区的索引的一一对应关系。又通过索引区中保存的多媒体记录对应的头一个簇的地址进而访问到相关多媒体记录数据。所述数据存储区还包括空闲簇指针堆栈,用于当多媒体记录删除时,保存该记录对应的簇指针。物理数据存储区结构如图5所示。
在上述系统中,存储控制模块是整个多媒体存储装置的核心,每个分组存储管理器内部又包含索引存储管理器和数据存储管理器,而索引存储管理器及数据存储管理器中又相应的包括多媒体记录ID管理器和空闲簇指针管理器。索引存储管理器用于管理索引数据存储区及空闲的多媒体记录ID堆栈。当要删除某多媒体记录时,将该记录的ID放置到空闲的多媒体记录ID堆栈中,当新增记录时,首先从空闲的ID堆栈中申请多媒体记录ID,假如没有空闲ID再生成新的多媒体记录ID。多媒体数据存储管理器用于管理多媒体存储区及空闲的簇指针,当删除某记录时,将该记录所对应的簇指针放置到空闲簇指针堆栈中,当新增多媒体记录时,首先从空闲的簇指针堆栈中申请资源,假如没有空闲簇时,再生成新的簇。
其中,多媒体记录ID管理器是存储管理层实现的关键,Server、Portal访问多媒体记录存储装置时必须首先来申请获取ID,存储数据释放后必须回收ID。其实现原理是ID管理器内部保存内存空闲ID堆栈,文件中有相应的后援文件堆栈,同时保存一个已经分配出去的ID最大值,优先使用已经回收的ID。且内存堆栈与对应文件后援堆栈交互当以批读写形式进行,如图6所示。
外部应用系统在访问多媒体记录时,以多媒体记录ID来访问避免复杂的查询搜索动作。
本发明提供一种数据存储方法,如图7所示,其核心是为每条数据记录分配一个ID,根据该ID映射变换可得到该多数据记录的索引存储区地址,将该数据记录保存在一个被分割成许多簇的文件中,将存储该多媒体记录的头一个簇的地址保存于所述索引存储区内。该ID为一个定长的数值,统一编号,当然实际实施时可以适当缩小或扩大取值范围。当删除某一多媒体记录时,将该记录的ID放置于对应的多媒体记录ID空闲堆栈中。
先建立多媒体记录ID空闲堆栈,当删除某一多媒体记录时,将该记录的ID放置于对应的多媒体记录ID空闲堆栈中,并保存已经分配出去的ID的最大值。当新增多媒体记录时,首先判断多媒体记录ID空闲堆栈中是否有空闲ID,如果有,则优先使用该空闲ID,假如没有空闲ID则接续已经分配出去的ID的最大值生成新的ID。
为存放多媒体的文件的簇建立空闲簇指针堆栈,当删除某一多媒体记录时,将该记录的对应的簇指针压入空闲簇堆栈中,并保存已经分配出去的簇的最大值。当新增多媒体记录时,首先判断空闲簇堆栈中是否有空闲簇,如果有,则优先使用该空闲簇,假如没有空闲簇则接续已经分配出去的簇使用新的簇。
综上所述,当需要存储一多媒体记录时,为多媒体记录分配一个多媒体记录ID,分配时优先分配已经空闲的ID,如没有空闲ID则申请新的ID,根据该ID映射可变换得到该多媒体记录的索引存储区地址。将多媒体记录存储在文件中,存储时,优先存储于该文件中的空闲的簇,如果没有空闲簇,则存储在新的簇中,将该簇的地址存储于该多媒体记录的索引存储区地址中。当外部应用系统访问多媒体记录时,通过该多媒体记录对应的ID进行,进而实现了该多媒体记录的快速存储、访问及删除。
以上所述仅为本发明方案的较佳实施例,并不用以限定本发明的保护范围。
权利要求
1.一种数据存储的方法,其特征在于该方法包括步骤为待存储的数据记录分配一个数据记录标识(ID);将所述数据记录保存在一个被分割成簇的文件中;将存储所述数据记录的头一个簇的地址保存于索引存储区,并建立该地址与数据记录ID的一一映射关系。
2.如权利要求1所述的方法,其特征在于,建立数据记录ID空闲堆栈,当删除某一数据记录时,将该记录的ID放置于数据记录ID空闲堆栈中,并保存已经分配出去的ID的最大值。
3.如权利要求2所述的方法,其特征在于为待存储的数据记录分配数据记录ID时,首先判断数据记录ID空闲堆栈中是否有空闲ID,如果有,则优先使用该空闲ID,如没有空闲ID则接续已经分配出去的ID的最大值生成新的ID。
4.如权利要求1所述的方法,其特征在于为存放数据记录的文件的簇建立空闲簇指针堆栈,当删除某一数据记录时,将该记录的对应的簇指针放置于空闲簇指针堆栈中,并保存已经分配出去的簇指针的最大值。
5.如权利要求4所述的方法,其特征在于将所述数据记录存储在文件中时,首先判断数据记录空闲簇堆栈中是否有空闲簇指针,如果有,则优先使用该空闲簇;否则,接续已经分配出去的簇使用新的簇。
6.如权利要求1所述的方法,其特征在于当访问数据记录时,通过该数据记录的ID访问所述记录。
7.如权利要求1所述的方法,其特征在于保存一个数据记录的所有簇中,每个簇保存下一个簇的地址。
8.如权利要求1至7任一所述的方法,其特征在于所述数据记录ID是一定长度的数值。
9.如权利要求8所述的方法,其特征在于所述数据记录是指多媒体记录。
10.一种数据存储装置,其特征在于所述装置包括业务处理模块、存储控制模块和物理数据存储区;所述业务处理模块用于接受数据记录操作请求,并完成所述数据记录的应用具体数据结构到二进制数据块的相互转换,转换后的二进制数据记录块将由存储控制模块进行存储;所述存储控制模块用于为所述数据记录分配数据记录ID,并建立该数据记录ID和数据记录在物理数据存储区存储地址的关系;所述物理数据存储区用于存储所有数据记录。
11.如权利要求10所述的装置,其特征在于所述业务处理模块包括业务处理桩模块,所述桩模块用于提供桩类及完成数据记录的串化及反串化。
12.如权利要求10所述的装置,其特征在于所述物理数据存储区包括索引存储区和数据存储区,分别用于以文件形式存储数据记录的索引和数据记录;数据存储区形成的数据文件被分割为一个个的簇,每个簇保存下一个簇的地址;所述数据存储区还包括空闲簇堆栈,用于当数据记录删除时,保存该记录对应簇的指针;所述索引存储区还包括数据记录ID堆栈,用于当数据记录删除时,保存该记录对应的ID。
13.如权利要求10所述的装置,其特征在于所述存储控制模块进一步包括存储管理器和至少一个分组存储管理器,所述存储管理器用于将实际的存储管理工作分配给分组存储器,每个分组管理器对应一个工作线程。
14.如权利要求13所述的装置,其特征在于所述分组存储器进一步包括索引存储管理器和数据存储管理器;所述索引存储管理器用于管理空闲数据记录ID堆栈和索引存储区,当新增数据记录时,首先从空闲ID堆栈中为该记录申请空闲ID,假如没有空闲ID则接续已经分配的ID号生成新的ID;所述数据存储管理器用于管理空闲簇指针堆栈和数据存储区,当新增数据记录时,首先从空闲簇指针堆栈中为该记录申请空闲簇,假如没有空闲簇则将该记录存储在新的簇中。
15.如权利要求10至14中任一项所述的装置,其特征在于所述数据记录ID是由该记录索引存储地址的对应的文件偏移量通过一一映射变换得到。
16.如权利要求10至14中任一项所述的装置,其特征在于所述数据记录是多媒体记录。
17.如权利要求10至14中任一项所述的装置,其特征在于所述一种数据存储装置与应用系统相连,接受应用系统的存储请求,依请求进行相应的存储、访问及删除操作,应用系统通过数据记录ID访问数据记录。
18.如权利要求14所述的装置,其特征在于索引存储管理器进一步包括数据记录ID管理器,用于管理空闲记录ID堆栈。
全文摘要
本发明公开了一种数据存储的方法,为每条数据记录分配一个ID,根据该ID映射变换得到该数据记录的索引存储区地址,将该数据记录保存在一个被分割成许多簇的文件中,将存储该数据记录的头一个簇的地址保存于所述索引存储区内。当外部应用系统访问数据记录时,通过该数据记录对应的ID进行,进而实现了该数据记录的快速存储、访问及删除。
文档编号H04L12/00GK1632779SQ200310121069
公开日2005年6月29日 申请日期2003年12月24日 优先权日2003年12月24日
发明者方文, 李益民, 李大伟, 柏广昌, 刘明海, 徐学涛, 赵毅 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1