发明内容
本发明的主要目的为提供一种数据可靠存储且避免磁盘损坏的基于数据块的多媒体存储方法和装置。
本发明提出一种基于数据块的多媒体存储方法,包括步骤:
将待写入文件的数据内容转存至缓存的当前空闲的数据块中;
当所述数据块存满时,将所述待写入文件中未转存的数据内容转存至所述缓存的下一空闲的数据块中,并将已存满的数据块写入磁盘。
优选地,所述将待写入文件的数据内容转存至缓存的当前空闲的数据块中的步骤具体包括:
建立文件通道;
将所述文件通道对应的文件通道号与待写入文件关联;
将所述缓存的数据块列表中当前空闲的数据块与所述文件通道号关联;
将所述待写入文件的数据内容转存至所述数据块中。
优选地,所述当数据块存满时,将待写入文件中未转存的数据内容转存至所述缓存的下一空闲的数据块中的步骤具体包括:
当数据块存满时,将所述缓存的数据块列表中下一空闲的数据块与所述文件通道号关联;
将所述待写入文件中未转存的数据内容转存至所述下一空闲的数据块中。
优选地,所述当数据块存满时,将已存满的数据块写入磁盘的步骤具体包括:
当所述数据块存满时,将所述数据块移至所述缓存的就绪列表中;
当所述就绪列表中存在对应于所述磁盘的数据块时,将所述数据块写入所述磁盘。
优选地,所述当就绪列表中存在对应于所述磁盘的数据块时,将所述数据块写入所述磁盘的步骤具体包括:
建立写入线程;
将所述写入线程与所述磁盘关联;
当所述就绪列表中存在对应于所述写入线程的数据块时,将所述数据块写入所述磁盘。
本发明还提出一种基于数据块的多媒体存储装置,包括:
数据缓存模块,用于将待写入文件的数据内容转存至缓存的当前空闲的数据块中;当所述数据块存满时,将所述待写入文件中未转存的数据内容转存至所述缓存的下一空闲的数据块中;
磁盘存储模块,用于当所述数据块存满时,将已存满的数据块写入磁盘。
优选地,所述数据缓存模块具体包括:
通道管理子模块,用于建立文件通道;将所述文件通道对应的文件通道号与待写入文件关联;
数据块管理子模块,用于将所述缓存的数据块列表中当前空闲的数据块与所述文件通道号关联;
数据块存储子模块,用于将所述待写入文件的数据内容转存至所述数据块中。
优选地,所述数据块管理子模块还用于,当数据块存满时,将所述缓存的数据块列表中下一空闲的数据块与所述文件通道号关联;
所述数据块存储子模块还用于,将所述待写入文件中未转存的数据内容转存至所述下一空闲的数据块中。
优选地,所述磁盘存储模块具体包括:
数据块转移子模块,用于当所述数据块存满时,将所述数据块移至所述缓存的就绪列表中;
磁盘存储子模块,用于当所述就绪列表中存在对应于所述磁盘的数据块时,将所述数据块写入所述磁盘。
优选地,所述磁盘存储子模块具体包括:
线程管理单元,用于建立写入线程;将所述写入线程与所述磁盘关联;
磁盘存储单元,用于当所述就绪列表中存在对应于所述写入线程的数据块时,将所述数据块写入所述磁盘。
本发明以数据块为单位对磁盘进行写入操作,可有效避免因磁盘存储空间不够或发生断电、网络掉线等情况时造成的数据损坏,有效提高了数据存储的可靠性,并且可有效减少磁臂的移动,延长磁盘的使用寿命。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1为本发明一实施例中基于数据块的多媒体存储方法的流程图,该实施例提到的基于数据块的多媒体存储方法,包括:
步骤S10,将待写入文件的数据内容转存至缓存的当前空闲的数据块中;
本实施例的数据块通过复制数据的方式存储待写入文件的数据内容。缓存中的数据块的状态主要包括三种,一种是空闲的数据块,即该数据块中没有存储数据内容,同时也没有其他程序对该数据块进行读写操作;另一种是写入中的数据块,该数据块表示有其他程序正在对该数据库进行读写数据;还有一种是就绪的数据块,该数据块表示已经完成数据内容的存储,等待后续对数据块中数据内容的读取。此外,数据块的存储空间大小可预先设置,例如,将数据块的存储空间设定为2M,即每个数据块可存储2M的数据内容。
步骤S20,当数据块存满时,将待写入文件中未转存的数据内容转存至缓存的下一空闲的数据块中;
本实施例中,在进行数据缓存时,数据块是逐个的进行数据存储的,即一个待写入文件中的数据内容应在写满一个数据块后,才能申请新的数据块进行存储,避免数据块的浪费与重复。当待写入文件中数据内容大于单个数据块的存储空间时,例如待写入文件中总共有10M的数据内容,数据块的存储空间只有2M,则当数据块存满时,余下的8M数据内容需重新申请新的空闲数据块进行存储,直至待写入文件中所有的数据内容均存储到数据块,此时,包含有10M的数据内容的待写入文件即对应于5个存储空间为2M的数据块。
步骤S30,当数据块存满时,将已存满的数据块写入磁盘。
本实施例以数据块为单位对磁盘进行写入操作,由于数据块在写入磁盘时,已经将待写入数据分割为多个小容量数据,可有效避免因磁盘存储空间不够或发生断电、网络掉线等情况时造成的数据损坏,有效提高了数据存储的可靠性,并且可有效减少磁臂的移动,延长磁盘的使用寿命。
如图2所示,图2为本发明一实施例的基于数据块的多媒体存储方法中当前空闲数据块缓存的步骤流程图,步骤S10具体包括:
步骤S11,建立文件通道;
本实施例的缓存在初始化时,生成文件通道数组,数组大小可由应用层指定。初始状态下,每个文件通道都处于可用状态。
步骤S12,将文件通道对应的文件通道号与待写入文件关联;
本实施例在对待写入文件进行数据块缓存操作前,由业务处理层向缓存管理层申请文件通道,并获得相应的文件通道号。由于该文件通道是专门为前述待写入文件申请的,因此该文件通道号与待写入文件具有一定的关联性。此外,文件通道可在该文件通道号中可附带一段自定义的内存块,用于保留具体业务需要的数据参数。
步骤S13,将缓存的数据块列表中当前空闲的数据块与文件通道号关联;
本实施例的缓存中,所有的数据块都通过一个数据块列表进行统一管理。当业务处理层通过文件通道号向缓存管理层申请一个空闲的数据块时,首先查看数据块列表中是否有空闲的数据块,如果有,则将该空闲的数据块与文件通道号关联上;如果无,则产生一个新的数据块与文件通道号进行关联。每个数据块中包括以下内容:块的状态(空闲、写入中、就绪)、当前写入位置、当前读取位置、所属的通道号、帧索引。此时,文件通道中则包括以下内容:文件对象(即待写入文件)、由用户指定大小的参数内存块、所拥有的未写满的数据块的个数、各种数据帧的个数统计。
步骤S14,将待写入文件的数据内容转存至数据块中。
本实施例,通过文件通道将待写入文件与缓存中的数据块关联起来,待写入文件中的数据内容经文件通道转存至数据块中。其中,待写入文件的数据内容包括数据帧和/或消息帧(即业务处理指令),每个数据帧和/或消息帧中都包括一下内容:帧类型(数据帧或消息帧)、帧大小、添加帧时的本地时间(秒)、添加帧时的帧内时间(秒)。当为消息帧时,缓存管理层在处理到该消息帧时,会以事件回调方式通知业务处理层进行具体的业务处理。本实施例将数据块进行列队管理,可反映出数据块状态及存储的先后顺序,有利于后续磁盘写入的有序进行,进一步提高数据存储的可靠性。
如图3所示,图3为本发明一实施例的基于数据块的多媒体存储方法中下一空闲数据块缓存的步骤流程图,步骤S20具体包括:
步骤S21,当数据块存满时,将缓存的数据块列表中下一空闲的数据块与文件通道号关联;
本实施例在当前数据块存满后,而待写入文件中尚有未处理完毕的数据内容时,通过查看数据块列表中是否有其他空闲的数据块,如果有,则将该空闲的数据块与文件通道号关联上;如果无,则产生一个新的数据块与文件通道号进行关联。
步骤S22,将待写入文件中未转存的数据内容转存至下一空闲的数据块中。
本实施例通过多个数据块将待写入数据分割为多个小容量数据,可有效避免因磁盘存储空间不够或发生断电、网络掉线等情况时造成的数据损坏,有效提高了数据存储的可靠性,并且可有效减少磁臂的移动,延长磁盘的使用寿命。
如图4所示,图4为本发明一实施例的基于数据块的多媒体存储方法中磁盘写入的步骤流程图,步骤S30具体包括:
步骤S31,当数据块存满时,将数据块移至缓存的就绪列表中;
步骤S32,当就绪列表中存在对应于磁盘的数据块时,将数据块写入磁盘。
本实施例通过就绪列表对已完成数据存储的数据块进行管理,并根据数据块就绪的先后顺序进行排列,将就绪时间较早的数据块先写入磁盘,有利于磁盘写入的有序进行,减少磁盘碎片的产生,进一步提高数据存储的可靠性。
如图5所示,图5为本发明另一实施例的基于数据块的多媒体存储方法中磁盘写入的步骤流程图,步骤S32具体包括:
步骤S321,建立写入线程;
步骤S322,将写入线程与磁盘关联;
步骤S323,当就绪列表中存在对应于写入线程的数据块时,将数据块写入磁盘。
本实施例根据磁盘的数量,成生相应数量的写入线程,每一个写入线程对应于一个磁盘,当发现有属于本磁盘的就绪数据块时,进行数据块的写入,可实现对多路磁盘并发写入数据,有效提高整体写入速度。此外,在磁盘写入过程中,如果数据块内全为数据帧,且文件空间足够,则将数据帧一次性写入磁盘;如果数据块内既包含数据帧,又包含消息帧,则进行逐帧处理:当为数据帧时,则判断文件是否有足够大小写入,有则写入,无则需要通过消息帧进行切换处理;当为消息帧时,例如,要求切换帧或要求关闭帧,则通过回调方式,回调给业务处理层进行业务处理。
如图6所示,图6为本发明一实施例中基于数据块的多媒体存储装置的结构示意图,该实施例提到的基于数据块的多媒体存储装置,包括:
数据缓存模块10,用于将待写入文件的数据内容转存至缓存的当前空闲的数据块中;当数据块存满时,将待写入文件中未转存的数据内容转存至缓存的下一空闲的数据块中;
磁盘存储模块20,用于当数据块存满时,将已存满的数据块写入磁盘。
本实施例的数据缓存模块10通过复制数据的方式将待写入文件的数据内容存储至数据块中。其中,空闲的数据块,即该数据块中没有存储数据内容,同时也没有其他程序对该数据块进行读写操作。此外,数据块的存储空间大小可预先设置,例如,将数据块的存储空间设定为2M,即每个数据块可存储2M的数据内容。当待写入文件中数据内容大于单个数据块的存储空间时,通常需要多个数据块进行存储,在数据缓存模块10进行数据缓存时,数据块是逐个的进行数据存储的,即一个待写入文件中的数据内容应在写满一个数据块后,才能申请新的数据块进行存储,避免数据块的浪费与重复。本实施例的磁盘存储模块20以数据块为单位对磁盘进行写入操作,由于数据块在写入磁盘时,已经将待写入数据分割为多个小容量数据,可有效避免因磁盘存储空间不够或发生断电、网络掉线等情况时造成的数据损坏,有效提高了数据存储的可靠性,并且可有效减少磁臂的移动,延长磁盘的使用寿命。
如图7所示,图7为本发明一实施例的基于数据块的多媒体存储装置中数据缓存模块的结构示意图,数据缓存模块10具体包括:
通道管理子模块11,用于建立文件通道;将文件通道对应的文件通道号与待写入文件关联;
数据块管理子模块12,用于将缓存的数据块列表中当前空闲的数据块与文件通道号关联;
数据块存储子模块13,用于将待写入文件的数据内容转存至数据块中。
本实施例的缓存在初始化时,由通道管理子模块11生成文件通道数组,数组大小可由应用层指定。初始状态下,每个文件通道都处于可用状态。在对待写入文件进行数据块缓存操作前,通道管理子模块11为待写入文件申请文件通道,并获得相应的文件通道号,该文件通道号与待写入文件具有一定的关联性。此外,文件通道可在该文件通道号中可附带一段自定义的内存块,用于保留具体业务需要的数据参数。在缓存中,所有的数据块都通过一个数据块列表进行统一管理。当业务处理层通过文件通道号向缓存管理层申请一个空闲的数据块时,数据块管理子模块12首先查看数据块列表中是否有空闲的数据块,如果有,则将该空闲的数据块与文件通道号关联上;如果无,则产生一个新的数据块与文件通道号进行关联。每个数据块中包括以下内容:块的状态(空闲、写入中、就绪)、当前写入位置、当前读取位置、所属的通道号、帧索引。此时,文件通道中则包括以下内容:文件对象(即待写入文件)、由用户指定大小的参数内存块、所拥有的未写满的数据块的个数、各种数据帧的个数统计。在进行数据缓存时,数据块存储子模块13将待写入文件中的数据内容经文件通道转存至数据块中。其中,待写入文件的数据内容包括数据帧和/或消息帧(即业务处理指令),每个数据帧和/或消息帧中都包括一下内容:帧类型(数据帧或消息帧)、帧大小、添加帧时的本地时间(秒)、添加帧时的帧内时间(秒)。当为消息帧时,缓存管理层在处理到该消息帧时,会以事件回调方式通知业务处理层进行具体的业务处理。本实施例将数据块进行列队管理,可反映出数据块状态及存储的先后顺序,有利于后续磁盘写入的有序进行,进一步提高数据存储的可靠性。
数据块管理子模块12还用于,当数据块存满时,将缓存的数据块列表中下一空闲的数据块与文件通道号关联;
数据块存储子模块13还用于,将待写入文件中未转存的数据内容转存至下一空闲的数据块中。
本实施例在数据块管理子模块12判定当前数据块存满后,而待写入文件中尚有未处理完毕的数据内容时,通过查看数据块列表中是否有其他空闲的数据块,如果有,则将该空闲的数据块与文件通道号关联上;如果无,则产生一个新的数据块与文件通道号进行关联。在数据块存储子模块13存储缓存数据时,通过多个数据块将待写入数据分割为多个小容量数据,可有效避免因磁盘存储空间不够或发生断电、网络掉线等情况时造成的数据损坏,有效提高了数据存储的可靠性,并且可有效减少磁臂的移动,延长磁盘的使用寿命。
如图8所示,图8为本发明一实施例的基于数据块的多媒体存储装置中磁盘存储模块的结构示意图,磁盘存储模块20具体包括:
数据块转移子模块21,用于当数据块存满时,将数据块移至缓存的就绪列表中;
磁盘存储子模块22,用于当就绪列表中存在对应于磁盘的数据块时,将数据块写入磁盘。
本实施例的数据块转移子模块21通过就绪列表对已完成数据存储的数据块进行管理,并根据数据块就绪的先后顺序进行排列,磁盘存储子模块22将就绪时间较早的数据块先写入磁盘,有利于磁盘写入的有序进行,减少磁盘碎片的产生,进一步提高数据存储的可靠性。
如图9所示,图9为本发明另一实施例的基于数据块的多媒体存储装置中磁盘存储模块的结构示意图,磁盘存储子模块22具体包括:
线程管理单元221,用于建立写入线程;将写入线程与磁盘关联;
磁盘存储单元222,用于当就绪列表中存在对应于写入线程的数据块时,将数据块写入磁盘。
本实施例的线程管理单元221根据磁盘的数量,成生相应数量的写入线程,每一个写入线程对应于一个磁盘,当发现有属于本磁盘的就绪数据块时,通知磁盘存储单元222进行数据块的写入,可实现对多路磁盘并发写入数据,有效提高整体写入速度。此外,在磁盘存储单元222进行磁盘写入的过程中,如果数据块内全为数据帧,且文件空间足够,则将数据帧一次性写入磁盘;如果数据块内既包含数据帧,又包含消息帧,则进行逐帧处理:当为数据帧时,则判断文件是否有足够大小写入,有则写入,无则需要通过消息帧进行切换处理;当为消息帧时,例如,要求切换帧或要求关闭帧,则通过回调方式,回调给业务处理层进行业务处理。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。