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

文档序号:6574814阅读:138来源:国知局
专利名称:一种数据存储方法及装置的制作方法
技术领域
本发明涉及数据处理领域,尤其涉及一种数据存储方法及装置。
技术背景在互联网(Internet),无线网络技术不完善的时代,网络带宽受到很大的 限制,客户访问、转发的媒体往往是简短的文字,网络应用系统往往使用普 通商用数据库来实现媒体的存储、快速访问。但随着网络技术的不断完善,所传递的媒体不再局限于简短的文字内容, 而是内容与表现形式都极大丰富的多媒体内容,包括声音、图像、电影、商 用文件等,普通商用数据库用来存储这些多媒体数据的效率低下,对于那些 对效率要求较高的系统并不适用。块存储作为 一种提高数据存储效率的解决方案顺应而生。现有技术中一 种基于块存储的数据存储方法为所有数据的存储是以定长的数据块为单位 进行存储。在现有技术中的数据存储方案中, 一般把数据文件等分成N块,每块的 大小尽量与磁盘簇的大小对齐,当保存数据时,按照数据的大小将数据保存在M个块中。但是在现有技术的方案中,每个块的大小根据磁盘簇的大小都相对固定, 在存储数据时可能会造成存储利用率低或者增加数据存储复杂度的不利情 况。例如,某块存储系统设定块大小为1024字节,数据X的大小为1025字 节,则X将被存储在两个数据块中。 一个块保存1024字节的数据, 一个块保 存1个字节的数据,则保存1个字节数据的数据块中的剩余空间将被浪费掉。 如果块存储系统使用更小的数据块大小定义,来提高空间利用效率,将会造 成影响大数据存储的效率,且让数据块索引文件更加庞大,从而降低块存储 系统的整体运行效率。发明内容本发明实施例要解决的技术问题是提供一种数据存储方法及装置,能够 提高数据存储的效率。本发明实施例提供的数据存储方法,包括为获取到的需要存储的数据 分配数据块;根据预置的划分规则将所述数据块划分为若干子块;将所述数 据存储于所述子块中。本发明实施例提供的数据存储装置,包括分配单元,划分单元以及存 储单元;所述分配单元用于为获取到的需要存储的数据分配数据块;所述划 分单元用于根据预置的划分规则将所述数据块划分为若干子块;所述存储单 元用于将所述数据存储于所述子块中。从以上技术方案可以看出,本发明实施例具有以下有益效果本发明实施例中,在存储数据之前将数据块再次划分为若干子块,将数 据按照子块的大小进行分割存储,所以提高了存储空间的利用率,进而提高 了数据存储的效率。


图1为本发明实施例中数据存储方法总体流程图; 图2为本发明实施例中数据存储装置实施例示意图; 图3为本发明实施例中数据存储方法第一实施例流程图; 图4为本发明实施例中数据存储方法第二实施例流程图。
具体实施方式
本发明实施例提供了一种数据存储方法及装置,用于提高数据存储的效率。请参阅图1,本发明实施例中数据存储方法总体流程包括 101、分配数据块;在获取到需要存储的数据之后,从数据块中选择对应的数据块分配给该 数据。102、 将数据块划分为若干子块;根据预置的划分规则将所述数据块划分为若干子块,具体的划分方法在 后面进行详细介绍。103、 将数据存储于子块中。 将所述数据存储于所述子块中。请参阅图2,本发明实施例中数据存储装置实施例包括分配单元201,划分单元202以及存储单元203;分配单元201用于为获取到的需要存储的数据分配数据块;划分单元202用于根据预置的划分规则将所述数据块划分为若干子块;存储单元203用于将所述数据存储于所述子块中。其中,划分单元202包括获取单元2021,计算单元2022,执行单元2023以及标识单元2024; 获取单元2021用于获取系统固件信息,并向计算单元2022发送所述信息;计算单元2022用于根据所述固件信息计算最佳效率下的块存储大小;执行单元2023用于将所述数据块等分成若干个大小与所述最佳效率下的 块存储大小相同的子块;标识单元2024用于为划分出的每个子块设置子块状态标识。下面结合对本发明实施例中数据存储方法实施例进行详细描述请参阅图3,本发明实施例中数据存储方法第一实施例包括301、 将数据文件等分为若干数据块; 将数据存储系统中的数据文件等分为若干数据块。302、 为每个数据块设置状态标识;将数据文件等分为若干数据块后,为每个数据块设置状态标识,例如一 个数据文件被等分为N个数据块,则建立一个包含N个数据块状态标识的索引表,其中保存有N个数据块的状态标识,若为1,则表示该数据块中有数 据,若为0,则表示该数据块中没有数据。303 、根据状态标识遍历查询空闲数据块;对所有数据块状态标识索引表进行遍历,具体的遍历算法不作限定,可 以是更新时间优先,或存储时间优先,或序号优先。查询到第一个凄t据块状态标识为0,即空闲的lt据块,则将该数据块分配 给需要存储的数据。304、 获取固件信息;在数据存储系统中包含许多存储或处理固件,例如CPU等,获取这些固 件的设备信息。305、 计算块存储大小;为使固件的运行效率最高,需指定块存储大小, 一般来说固件运行效率 最高时块存储大小是固定的,可以根据实际情况进行计算,计算的过程与方 式为现有技术,不作赘述。306、 划分子块并设置状态标识;根据上面确定的块存储大小将数据块划分为若干子块,使每个子块的大 小与确定的块存储大小一致。划分子块之后为子块设置其状态标识,假设数据块为4K字节,被划分为 16个256字节的子块,在数据块的块首使用4个字节的整型数据表示数据块 的子块大小及其各自的空闲状态。4个字节,即一个整型数据,总计32个bit, 前16个bit表示数据块的大小,后16个bit表示本数据块的子块的空闲状态。每个子块的状态标识同样会建立成一个子块状态标识索引表,包含该数 据块中所有子块的状态标识。307、 获取数据大小;当有数据需要存储时,获取需存储的数据的大小。308、 将数据分割存储;假设需存储的数据大小为280个字节,则需要存储在两个子块中,其中 一个子块中存储256个字节的数据,另外一个子块中存储24个字节的数据, 若需存储的数据大小为5字节,则只需要存储在一个子块中即可。309、 ^^改子块状态标识;当某个子块中被存储入数据之后,则将该子块对应的状态标识修改为1, 即非空闲。310、 当某子块中的数据被删除时,拒绝新的数据存入。 其中拒绝的方式有以下两种一、 不修改其状态标识,即当该子块中的数据被删除时,仍然保持该子 块的状态标识为非空闲;二、 修改状态标识,即当该子块中的数据被删除时,将该子块的状态标 识修改为空闲,但从子块状态标识索引表中删除该子块的表项,即该子块不 会再被存入新的数据。本实施例中采取的是第二种方式。311、 判断是否所有子块数据均被删除,若是,则执行步骤312,若否, 则执行步骤310;在本实施例中,判断的标准为该数据块中的所有子块的状态标识是否均 为空闲。312、 修改数据块状态标识。若某数据块中所有子块的状态标识均为空闲,则认为该数据块为空闲, 则修改数据块状态标识索引表中该数据块的状态标识为空闲,同时释放事先 划分的子块,等待下次存储数据时重新划分。上述实施例中,将数据块划分为子块采取的是按照满足固件最高效率的 情况进行划分,所以可以提高系统整体的运行性能,可以理解的是,划分子 块同样还有其它的方式,下面介绍另外一种划分方法的实施例,请参阅图4, 本发明实施例中数据存储方法第二实施例包括401、 将数据文件等分为若干数据块; 将数据存储系统中的数据文件等分为若干数据块。402、 为每个数据块设置状态标识;将数据文件等分为若干数据块后,为每个数据块设置状态标识,例如一 个数据文件被等分为N个数据块,则建立一个包含N个数据块状态标识的索 引表,其中保存有N个数据块的状态标识,若为1,则表示该数据块中有数 据,若为0,则表示该数据块中没有数据。403、 根据状态标识遍历查询空闲数据块;对所有数据块状态标识索引表进行遍历,具体的遍历算法不作限定,可 以是更新时间优先,或存储时间优先,或序号优先。查询到第一个数据块状态标识为0,即空闲的数据块,则将该数据块分配 给需要存储的数据。404、 获取划分参数;划分参数为预先设置的,可以根据实际应用情况包括很多内容,例如按 照2的幂次方进行划分,或者是按照线性次方进行划分等。405、 划分子块并设置状态标识;根据上面确定的划分参数将数据块划分为若干子块,例如, 一个数据块 的大小为4K,可以^皮等分成2个2048字节的子块,也可以-故等分成4个1024 字节的子块,也可以被等分成8个512字节的子块,也可以被等分成16个256 字节的子块;或者是将一个数据块直接等分为20份或者其它数目份。划分子块之后为子块设置其状态标识,假设数据块为4K字节,被划分为 16个256字节的子块,在数据块的块首使用4个字节的整型数据表示数据块 的子块大小及其各自的空闲状态。4个字节,即一个整型数据,总计32个bit, 前16个bit表示数据块的大小,后16个bit表示本数据块的子块的空闲状态。每个子块的状态标识同样会建立成一个子块状态标识索引表,包含该数据块中所有子块的状态标识。406、 获取数据大小;当有数据需要存储时,获取需存储的数据的大小。407、 将数据分割存储;假设需存储的数据大小为280个字节,则需要存储在两个子块中,其中 一个子块中存储256个字节的数据,另外一个子块中存储24个字节的数据, 若需存储的数据大小为5字节,则只需要存储在一个子块中即可。408 、 ^修改子块状态标识;当某个子块中被存储入数据之后,则将该子块对应的状态标识修改为1, 即非空闲。409、 当某子块中的数据需要被删除时,删除该子块内的数据;410、 ^f务改子块状态标识。在删除该子块内的数据之后将该子块的状态标识修改为空闲,则下次存 储数据时,该子块仍然可以用于存储数据,即实现子块的重复利用,这样可 以使连续存入的数据在物理或逻辑位置上尽量相邻,有利于数据查询。此外,本发明实施例中还提供一种计算机可读存储介质,所述介质上存 储有上述实施例中描述的软件,该软件运行时包括为获取到的需要存储的 数据分配数据块;根据预置的划分规则将所述数据块划分为若干子块;将所 述数据存储于所述子块中。上述计算机可读存储介质可以是磁盘,光盘,闪存,还可以是其它存储 介质。以上对本发明实施例所提供的一种数据存储方法及装置进行了详细介 绍,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综 上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1. 一种数据存储方法,其特征在于,包括为获取到的需要存储的数据分配数据块;根据预置的划分规则将所述数据块划分为若干子块;将所述数据存储于所述子块中。
2. 根据权利要求1所述的数据存储方法,其特征在于,所述为获取到的 需要存储的数据分配数据块的步骤之前包括将存储系统中的数据文件等分为若干个数据块;为每个数据块设置数据块状态标识。
3. 根据权利要求2所述的数据存储方法,其特征在于,所述为获取到的 需要存储的数据分配数据块的步骤包括对所有数据块进行遍历;选择状态标识为空闲的数据块,将所述数据块作为存储数据块。
4. 根据权利要求l, 2或3中任一项所述的数据存储方法,其特征在于, 所述根据预置的划分规则将所述数据块划分为若干子块的步骤包括获取系统固件信息;根据所述固件信息计算最佳效率下的块存储大小;将所述数据块等分成若干个大小与所述最佳效率下的块存储大小相同的 子块并为每个子块设置子块状态标识。
5. 根据权利要求l, 2或3中任一项所述的数据存储方法,其特征在于, 所述根据预置的划分规则将所述数据块划分为若干子块的步骤包括将所述数据块等分成2的幂次方个子块并为每个子块设置子块状态标识。
6. 根据权利要求4所述的数据存储方法,其特征在于,所述将所述数据 存储于所述子块中的步骤包括根据所述数据的大小与所述子块的大小计算需使用的子块数目; 选择对应数目个状态标识为空闲的子块;将所述数据按照所述子块的大小进行分割存储;将所述存储有数据的子块的状态标识设置为非空。
7、 根据权利要求6所述的数据存储方法,其特征在于,所述将所述数据 存储于所述子块中的步骤之后包括当删除子块中的邀:据时,拒绝新的数据存入所述子块;判断数据块内所有子块中的数据是否都已删除,若是,则将所述数据块 的状态标识设置为空闲。
8、 根据权利要求6所述的数据存储方法,其特征在于,所述将所述数据 存储于所述子块中的步骤之后包括当删除子块中的数据时,将所述子块的状态标识设置为空闲;允许新的数据存入所述子块。
9、 一种数据存储装置,其特征在于,包括 分配单元,划分单元以及存储单元; 所述分配单元用于为获取到的需要存储的数据分配数据块; 所述划分单元用于才艮据预置的划分规则将所述^t据块划分为若干子块; 所述存储单元用于将所述数据存储于所述子块中。
10、 根据权利要求9所述的数据存储装置,其特征在于,所述划分单元 包括获取单元,计算单元,执行单元以及标识单元;所述获取单元用于获取系统固件信息,并向计算单元发送所述信息;所述计算单元用于才艮据所述固件信息计算最佳效率下的块存储大小;所述执行单元用于将所述数据块等分成若干个大小与所述最佳效率下的 块存储大小相同的子块;所述标识单元用于为划分出的每个子块设置子块状态标识。
全文摘要
本发明公开了一种数据存储方法及装置,用于提高数据存储的效率。所述方法包括为获取到的需要存储的数据分配数据块;根据预置的划分规则将所述数据块划分为若干子块;将所述数据存储于所述子块中。所述装置包括分配单元,划分单元以及存储单元;所述分配单元用于为获取到的需要存储的数据分配数据块;所述划分单元用于根据预置的划分规则将所述数据块划分为若干子块;所述存储单元用于将所述数据存储于所述子块中。本发明可以有效地提高数据存储的效率。
文档编号G06F12/06GK101271429SQ200710090919
公开日2008年9月24日 申请日期2007年3月23日 优先权日2007年3月23日
发明者洪鼎杰 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1