数据存储方法和装置以及数据读取方法和装置制造方法

文档序号:6526388阅读:121来源:国知局
数据存储方法和装置以及数据读取方法和装置制造方法
【专利摘要】本发明提出了一种数据存储方法和装置以及一种数据读取方法和装置。其中所述数据存储方法包括:a)为将要存储的数据指派标识;b)在数据存储文件的第一区域中的第一位置存储所述将要存储的数据,以及在所述数据存储文件的第二区域中的第二位置存储所述标识和与所述将要存储的数据有关的附加信息。由此,本发明解决了现有技术中存在的存取速度问题、存储格式限制问题和占用系统资源问题,实现了良好的技术效果。
【专利说明】数据存储方法和装置以及数据读取方法和装置
【技术领域】
[0001]本发明涉及数据存储和读取领域,具体涉及一种数据存储方法和装置以及数据读取方法和装置。
【背景技术】
[0002]在现有的应用系统中,大都涉及到数据存取技术,包括数据存储和数据读取。数据存储在硬件设备上,应用程序需要不断的与硬件设备交互,实现数据的存储和读取,少量的数据存储和读取,一般都只需要极短的处理时间。
[0003]随着信息化程度的不断提高,应用系统的数据存储量也不断提升,数据存储能力和数据读取能力在应用系统中显得更为重要,其在很大程度上能决定应用系统的性能,也可能成为应用系统的一项性能指标。在某些实时性要求高的应用中,还可能影响存储的完整性、实时性、有效性等。
[0004]现代应用系统中,存储技术必须考虑的因素包括:(I)高速事件环境的存储。高速事件环境即快速产生大量事件的环境,诸如万兆网络中,高速产生大量网络事件,对这些网络事件的存储。在高速事件环境中,要有好的存储技术,快速地将这些瞬间产生的大量数据存储,保证数据的完整性和实时性;(2)海量数据快速检索。数据检索是存取技术不可分割的一部分,对于高速事件环境中存储的海量数据,需要有较快的查询机制,保证所需数据的快速提取;(3)系统资源消耗。系统总的资源如CPU、内存等总是有限的,应用系统本身也会消耗系统资源,因此海量数据在存储和读取时,应有好的机制保证不应消耗太多系统资源。
[0005]关系数据库存储是常用的数据存储技术,各类关系数据库都具有较通用的接口,提供开放的管理终端和管理方法。关系数据库存储技术在低速事件环境中能达到预期存储效果,但在高速事件环境中,数据库存储技术将会受到很大限制。具体来讲,其缺点在于:
(I)存储速度慢,数据库存储技术的数据插入速度峰值能接近一万条每秒,在高速事件环境中,当产生的事件达到每秒上万条时,数据库存储技术将很难满足要求;(2)存储数据格式受限,数据库存储技术对其所存储的数据格式有很大限制,依赖于数据库本身的实现技术;
(3)占用系统资源较大,数据库存储技术必须启动数据库服务器,这也会占用较大系统资源。

【发明内容】

[0006]针对现有技术中存在的上述缺陷,本发明提出了如下数据存储方法和装置以及数据读取方法和装置。
[0007]本发明提出了一种数据存储方法。该方法包括:a)为将要存储的数据指派标识;
b)在数据存储文件的第一区域中的第一位置存储所述将要存储的数据,以及在所述数据存储文件的第二区域中的第二位置存储所述标识和与所述将要存储的数据有关的附加信息。
[0008]本发明还提出了一种数据存储装置。该装置包括:标识指派模块,用于为将要存储的数据指派标识;数据存储模块,用于在数据存储文件的第一区域中的第一位置存储所述将要存储的数据以及在所述数据存储文件的第二区域中的第二位置存储所述标识和与所述将要存储的数据有关的附加信息。
[0009]本发明还提出了一种数据读取方法。该方法包括:在所述数据存储文件的所述第二区域中查找为将要读取的数据所指派的标识;根据与所述标识一起存储的所述附加信息确定所述将要读取的数据在所述数据存储文件的所述第一区域中的第一位置;以及读取所述将要读取的数据。
[0010]本发明还提出了一种数据读取装置,该装置包括:标识查找模块,用于在所述数据存储文件的所述第二区域中查找为将要读取的数据所指派的标识;位置确定模块,用于根据与所述标识一起存储的所述附加信息确定所述将要读取的数据在所述数据存储文件的所述第一区域中的第一位置;以及数据读取模块,用于读取所述将要读取的数据。
[0011]通过上述内容,本发明通过在数据存取过程中将特定标识与数据结合存储,解决了现有技术中存在的存取速度问题、存储格式限制问题和占用系统资源问题,实现了良好的技术效果。
【专利附图】

【附图说明】
[0012]图1示出了根据本发明的一种实施方式所提出的数据存储方法的流程图;
[0013]图2示出了根据本发明的一种实施方式所提出的数据读取方法的流程图;以及
[0014]图3示出了根据本发明的一种实施方式的数据存储文件的文件格式的示意图。
【具体实施方式】
[0015]图1示出了本发明所提出的数据存储方法的流程图。
[0016]在步骤110,首先为将要存储的数据指派标识。在存储数据时,每次向文件中存储一个长度可知的数据块,并向该数据指派唯一的标识(ID)。
[0017]在优选地实施方式中,可以为所有数据指派具有相同长度的ID并且可以按照指派的时间顺序递增,即新的数据块的ID比旧数据块的ID大。
[0018]例如,ID可以具有如下格式:
[0019]ID=事件生成时间+N位全局顺序索引/Nmax。
[0020]其中:
[0021]事件生成时间:由精确到微秒的一串字符表示,包括年(2位)月(2位)日(2位)时(2 位)分(2 位)秒(2 位)微秒(5 位),如 13062417093023121
[0022]N位全局顺序索引:一个由1、2、3...自然数构成的字符串;
[0023]Nmax:最大的索引值(如10000)。
[0024]一个典型的 ID 字符串可以例如:1306241709302312100001,1306241709302312100002,130624170930231210003 等等。
[0025]还要指出的是,如果在步骤110之前不存在现有的存储文件(或已有的存储文件无法或不适合分成至少两个不同的区域),则应该先创建数据存储文件,并且所述数据存储文件至少可以分成两个不同的区域(即下文中的第一区域和第二区域)。
[0026]在步骤120,在数据存储文件的第一区域中的第一位置存储所述将要存储的数据,以及在所述数据存储文件的第二区域中的第二位置存储所述标识和与所述将要存储的数据有关的附加信息。
[0027]在优选地实施方式中,可以认为所示第一位置和第二位置分别是第一区域和第二区域中的特定位置,比如在上次存储的内容之后继续存储或者在文件的尾部进行存储。
[0028]如果没有这种约定,则应对第一位置和第二位置进行确定。这一确定可通过在文件中预留用于记录位置信息的字段来实现,并在每次文件存储成功后对该字段的信息进行更新,以供下次存储使用。
[0029]优选地,在步骤120中,首先在数据存储文件的第一区域中的第一位置存储所述将要存储的数据。如果所述数据存储成功,则在所述第二位置存储所述标识和所述附加信
肩、O
[0030]所述附加信息包括关于所述第一位置的信息和关于所述将要存储的数据的长度的信息。优选地,所述信息可以是位置偏移值。
[0031]图2示出了本发明所提出的数据读取方法的流程图。所述数据读取方法是针对按照图1所示的数据存储方法及其实施方式进行存储的数据存储文件的数据读取方法。
[0032]在步骤210中,在所述数据存储文件的所述第二区域中查找为将要读取的数据所指派的标识。
[0033]优选地,使用针对有序数列的折半查找法查找所述标识。
[0034]在步骤220中,根据与所述标识一起存储的所述附加信息确定所述将要读取的数据在所述数据存储文件的所述第一区域中的第一位置。
[0035]在步骤230中,读取所述将要读取的数据。
[0036]图3中示出了根据本发明的一种实施方式的数据存储文件的文件格式的示意图。如图1所示,该文件格式由文件头区域、数据块索引区域和数据区域组成。其中,所述文件头区域存储文件基本信息,包括的字段有当前文件已写入的数据块个数η (占4字节)、当前文件允许写入的最大数据块个数m (占4字节)和数据块ID的长度k (占2字节)。数据块索引区域由m个索引信息构成,每个索引信息包括数据块ID、数据块在数据区域的偏移(占4字节)和数据块长度(占4字节)。所述数据区域依次存储每次写入的数据块。
[0037]可以看出,所述数据块索引区域对应于上文中的第二区域,所述数据区域对应于上文中的第一区域,而所述附加信息则包括数据块在数据区域的偏移和数据块长度。
[0038]下面参考图3对本发明所述的数据存储方法的一种实施方式进行详细说明。需要指出的是,下文中部分步骤是为了针对该特定文件格式的实施方式的完整性和连贯性而加入的,其并不意在对本发明的内容进行限制,而是为了便于本领域技术人员的实施和理解。
[0039]首先,如果数据存储文件不存在,则创建文件,写入文件头区域信息,加载文件头区域信息到内存中,初始化计算索引信息写入偏移和数据块写入偏移(对应于第一位置和第二位置)。其中:
[0040]索引信息写入偏移=文件头区域长度+已写入数据块个数n*(数据块ID长度+4)[0041 ] 数据块写入偏移=文件尾部
[0042]然后,从数据块写入偏移处写入数据块;
[0043]以及,从索引信息写入偏移处依次写入数据块ID、数据块在数据区域的偏移和数据块长度(对应于附加信息);
[0044]为了确定下一次数据存储时的偏移信息(第一位置和第二位置),更新数据块写入偏移和数据信息写入偏移:
[0045]更新后的数据块写入偏移=旧的数据块写入偏移+数据块写入长度
[0046]更新后的索引信息写入偏移=旧的索引信息写入偏移+数据块ID长度+4
[0047]最后,更新文件头区域中的已写入数据块个数η字段。
[0048]下面参考图3对本发明所述的数据读取方法的一种实施方式进行详细说明。
[0049]首先,打开数据存储文件,读取文件头区域中的文件基本信息,包括已写入数据块个数m、文件可写入最大数据块个数η和数据块ID长度k。如果已写入数据块个数m为0,则读取结束,返回空;
[0050]然后,在数据块索引区域查找需要读取的ID信息。数据块索引区域由m个索引信息构成,每个索引信息等长,可通过折半查找法在m个索引信息中快速查找ID。
[0051]利用折半查找法的具体过程是:
[0052]读取第Xl个和第x2个索引信息中间的位置,即第X个索引信息的ID;
[0053]X= (xl+x2) /2,xl初始值为1,x2的初始值为m ;
[0054]如果第X个索引信息的ID值与要查找的ID相等,则查找结束,返回索引信息,进行下一步;
[0055]如果第X个索引信息的ID值小于要查找的ID,则xl=x+l,继续计算中间位置,并查找;
[0056]如果第X个索引信息的ID值大于要查找的ID,则x2=x - 1,继续计算中间位置,并查找;
[0057]如果xl>x2,则查找结束,返回空。
[0058]最后,根据找到的索引信息,读取数据块在数据区域的偏移和数据块长度,并在偏移处读取指定长度的数据块。
[0059]与上述数据存储方法相应,本发明还提出了一种数据存储装置,以上对本发明的数据存储方法的解释说明中的相应部分也适用于该数据存储方法。具体来讲,该装置包括:标识指派模块,用于为将要存储的数据指派标识;数据存储模块,用于在数据存储文件的第一区域中的第一位置存储所述将要存储的数据以及在所述数据存储文件的第二区域中的第二位置存储所述标识和与所述将要存储的数据有关的附加信息。
[0060]优选地,所述数据存储装置还包括:文件创建模块,用于创建所述数据存储文件,其中所述数据存储文件至少包括所述第一区域和所述第二区域。
[0061]优选地,所述数据存储装置还包括:位置确定模块,用于确定所述第一位置和所述
第二位置。
[0062]优选地,所述数据存储模块被配置为在数据存储文件的第一区域中的第一位置存储所述将要存储的数据;如果所述数据存储成功,则在所述第二位置存储所述标识和所述附加信息。
[0063]优选地,所述标识指派模块被配置成为所有数据指派具有相同长度的标识。
[0064]优选地,所述标识指派模块被配置成按照数据存储的先后顺序为它们指派大小递增的标识。
[0065]优选地,所述附加信息包括关于所述第一位置的信息和关于所述将要存储的数据的长度的信息。[0066]同样,与上述数据读取方法相应,本发明还提出了一种数据读取装置,以上对本发明的数据读取方法的解释说明中的相应部分也适用于该数据读取方法。具体来讲,该装置包括:标识查找模块,用于在所述数据存储文件的所述第二区域中查找为将要读取的数据所指派的标识;位置确定模块,用于根据与所述标识一起存储的所述附加信息确定所述将要读取的数据在所述数据存储文件的所述第一区域中的第一位置;以及数据读取模块,用于读取所述将要读取的数据。
[0067]优选地,所述标识查找模块被配置为使用有序数列折半查找法查找所述标识。
【权利要求】
1.一种数据存储方法,该方法包括: a)为将要存储的数据指派标识; b)在数据存储文件的第一区域中的第一位置存储所述将要存储的数据,以及在所述数据存储文件的第二区域中的第二位置存储所述标识和与所述将要存储的数据有关的附加信息。
2.根据权利要求1所述的方法,该方法还包括: c)在步骤a)之前,创建所述数据存储文件,其中所述数据存储文件至少包括所述第一区域和所述第二区域。
3.根据权利要求1所述的方法,该方法还包括: d)在步骤b)之前,确定所述第一位置和所述第二位置。
4.根据权利要求1所述的方法,该方法还包括: e)在步骤b)之后,确定针对下一次数据存储的第一位置和第二位置。
5.根据权利要求1-4中的任一项所述的方法,其中步骤b)包括: bl)在数据存储文件的第一区域中的第一位置存储所述将要存储的数据;b2)如果步骤bl)中的所述数据存储成功,则在所述第二位置存储所述标识和所述附加信息。
6.根据权利要求1-4中的任一项所述的方法,为所有数据指派具有相同长度的标识。
7.根据权利要求1-4中的任一项所述的方法,按照数据存储的先后顺序,为它们指派大小递增的标识。
8.根据权利要求1-4中的任一项所述的方法,其中所述附加信息包括关于所述第一位置的信息和关于所述将要存储的数据的长度的信息。
9.一种数据存储装置,该装置包括: 标识指派模块,用于为将要存储的数据指派标识; 数据存储模块,用于在数据存储文件的第一区域中的第一位置存储所述将要存储的数据以及在所述数据存储文件的第二区域中的第二位置存储所述标识和与所述将要存储的数据有关的附加信息。
10.根据权利要求9所述的装置,该装置还包括: 文件创建模块,用于创建所述数据存储文件,其中所述数据存储文件至少包括所述第一区域和所述第二区域。
11.根据权利要求9所述的装置,该装置还包括: 位置确定模块,用于确定所述第一位置和所述第二位置。
12.根据权利要求9-11中的任一项所述的装置,其中所述数据存储模块被配置为: 在数据存储文件的第一区域中的第一位置存储所述将要存储的数据; 如果所述数据存储成功,则在所述第二位置存储所述标识和所述附加信息。
13.根据权利要求9-11中的任一项所述的装置,其中所述标识指派模块被配置成为所有数据指派具有相同长度的标识。
14.根据权利要求9-11中的任一项所述的装置,其中所述标识指派模块被配置成按照数据存储的先后顺序为它们指派大小递增的标识。
15.根据权利要求9-11中的任一项所述的装置,其中所述附加信息包括关于所述第一位置的信息和关于所述将要存储的数据的长度的信息。
16.一种针对按照权利要求1-8中的任一项所述的数据存储方法进行存储的数据存储文件的数据读取方法,该方法包括: 在所述数据存储文件的所述第二区域中查找为将要读取的数据所指派的标识; 根据与所述标识一起存储的所述附加信息确定所述将要读取的数据在所述数据存储文件的所述第一区域中的第一位置;以及 读取所述将要读取的数据。
17.根据权利要求16所述的方法,其中使用有序数列折半查找法查找所述标识。
18.—种针对按照权利要求1-8中的任一项所述的数据存储方法进行存储的数据存储文件的数据读取装置,该装置包括: 标识查找模块,用于在所述数据存储文件的所述第二区域中查找为将要读取的数据所指派的标识; 位置确定模块,用于根据与所述标识一起存储的所述附加信息确定所述将要读取的数据在所述数据存储文件的所述第一区域中的第一位置;以及 数据读取模块,用于读取所述将要读取的数据。
19.根据权利要求18所述的方法,其中标识查找模块被配置为使用有序数列折半查找法查找所述标识。
【文档编号】G06F17/30GK103793468SQ201310741482
【公开日】2014年5月14日 申请日期:2013年12月27日 优先权日:2013年12月27日
【发明者】刘勇, 张凤羽 申请人:北京天融信软件有限公司, 北京天融信网络安全技术有限公司, 北京天融信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1