用于存储数据的方法、装置和系统制造方法及图纸

技术编号:20176139 阅读:29 留言:0更新日期:2019-01-23 00:13
本申请实施例公开了用于存储数据的方法、装置和系统。该方法的一具体实施方式包括:根据待存储记录的数据大小,确定待存储记录的类型;在存储文件中查找类型下的当前存储信息,当前存储信息包括当前已分配的数据块的信息和数据块中当前已存储的记录的信息,其中,在存储文件中同一类型下存储的记录的数据大小相同,不同类型下存储的记录的数据大小不同;根据当前存储信息,确定当前已分配的数据块中是否有剩余存储空间;响应于确定没有剩余存储空间,向该类型下分配新的数据块,将待存储记录存储在新的数据块中。该实施方式可以降低空间碎片的产生,提高磁盘的空间利用率。也有助于改善磁盘的读写性能。

Methods, devices and systems for storing data

The embodiment of this application discloses a method, device and system for storing data. One specific embodiment of the method includes: determining the type of the record to be stored according to the data size of the record to be stored; searching for the current storage information under the type in the storage file, the current storage information includes the information of the currently allocated data block and the information of the currently stored record in the data block, in which the data of the record stored under the same type in the storage file is stored. According to the current storage information, it is determined whether there is any residual storage space in the currently allocated data block. In response to the determination that there is no residual storage space, a new data block is allocated to the type, and the pending records are stored in the new data block. The implementation method can reduce the generation of space debris and improve the utilization of disk space. It also helps to improve disk read and write performance.

【技术实现步骤摘要】
用于存储数据的方法、装置和系统
本申请实施例涉及分布式对象存储
,具体涉及用于存储数据的方法、装置和系统。
技术介绍
分布式存储系统通常是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据。此时的存储服务器便成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统往往采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息。它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
技术实现思路
本申请实施例提出了用于存储数据的方法、装置和系统。第一方面,本申请实施例提出了一种用于存储数据的方法,该方法用于分布式对象存储的单机存储引擎,单机存储引擎的磁盘上创建有存储文件,其中,存储文件的存储空间被划分为至少两个数据块,且至少两个数据块之间采用链表结构,包括:根据待存储记录的数据大小,确定待存储记录的类型;在存储文件中查找类型下的当前存储信息,当前存储信息包括当前已分配的数据块的信息和数据块中当前已存储的记录的信息,其中,在存储文件中同一类型下存储的记录的数据大小相同,不同类型下存储的记录的数据大小不同;根据当前存储信息,确定当前已分配的数据块中是否有剩余存储空间;响应于确定没有剩余存储空间,向类型下分配新的数据块,将待存储记录存储在新的数据块中。在一些实施例中,该方法还包括:响应于确定有剩余存储空间,进一步确定剩余存储空间是否不小于待存储记录的数据大小;响应于确定剩余存储空间小于待存储记录的数据大小,将待存储记录的部分数据存储在剩余存储空间中;以及向类型下分配新的数据块,将待存储记录的剩余数据存储在新的数据块中。在一些实施例中,至少两个数据块的存储空间相同,且不同类型下存储的记录的数据大小均为预设数值的整数倍。在一些实施例中,该方法还包括:更新类型下的当前存储信息,以及生成待存储记录存储后的位置信息,并输出位置信息;其中,位置信息包括以下至少一项:记录的类型、记录的标识或记录所在的数据块的标识。在一些实施例中,磁盘上创建有至少两个存储文件,且磁盘的目录中存储有各存储文件的索引信息。在一些实施例中,该方法还包括:从目录中查找到待读取记录的位置信息;根据待读取记录的位置信息,确定待读取记录的类型以及在对应的存储文件中所在数据块的位置偏移量;根据待读取记录的类型,确定待读取记录的长度,从位置偏移量所指示的位置开始,读取长度为待读取记录的长度的数据,以及将读取的数据作为待读取记录进行输出。在一些实施例中,该方法还包括:从目录中查找到待删除记录的位置信息;根据待删除记录的位置信息,获取待删除记录在对应的存储文件中所属类型下的当前存储信息;根据获取的当前存储信息,从当前已存储的记录中读取最后一条记录,将读取的记录转移存储至待删除记录所在的位置;清除读取的记录在转移前的数据块中的数据,并修改读取的记录的位置信息。在一些实施例中,清除读取的记录在转移前的数据块中的数据之后,该方法还包括:确定读取的记录转移前所在的数据块中是否还存储有数据;若确定该数据块中没有存储数据,回收该数据块以重新分配。在一些实施例中,根据待存储记录的数据大小,确定待存储记录的类型之前,该方法还包括:对于切分待存储对象得到的至少一个子对象中的子对象,对该子对象进行编码得到副本;对该副本的描述信息和数据进行序列化处理,生成该子对象的待存储记录。在一些实施例中,生成该子对象的待存储记录,包括:确定序列化之后的该副本的数据大小是否与存储文件中各类型对应的数据大小中的一个相同;若该副本的数据大小与各类型对应的数据大小均不同,且小于部分类型对应的数据大小,则在该副本的数据后面补零,以使补零后的该副本的数据大小与目标类型对应的数据大小相同,并生成该子对象的一条待存储记录,其中,目标类型为该部分类型中对应的数据大小最小的类型;若该副本的数据大小大于各类型对应的数据大小的最大值,则对该副本进行切分和补零,以使切分后的各副本的数据大小分别与各类型对应的数据大小中的一个相同,并生成该子对象的至少两条待存储记录。第二方面,本申请实施例提出了一种用于存储数据的装置,该装置设置于分布式对象存储的单机存储引擎中,单机存储引擎的磁盘上创建有存储文件,其中,存储文件的存储空间被划分为至少两个数据块,且至少两个数据块之间采用链表结构,包括:类型确定单元,被配置成根据待存储记录的数据大小,确定待存储记录的类型;查找单元,被配置成在存储文件中查找该类型下的当前存储信息,当前存储信息包括当前已分配的数据块的信息和数据块中当前已存储的记录的信息,其中,在存储文件中同一类型下存储的记录的数据大小相同,不同类型下存储的记录的数据大小不同;空间确定单元,被配置成根据当前存储信息,确定当前已分配的数据块中是否有剩余存储空间;第一分配单元,被配置成响应于确定没有剩余存储空间,向该类型下分配新的数据块,将待存储记录存储在新的数据块中。在一些实施例中,该装置还包括:大小确定单元,被配置成响应于确定有剩余存储空间,进一步确定剩余存储空间是否不小于待存储记录的数据大小;第二分配单元,被配置成响应于确定剩余存储空间小于待存储记录的数据大小,将待存储记录的部分数据存储在剩余存储空间中;以及向类型下分配新的数据块,将待存储记录的剩余数据存储在新的数据块中。在一些实施例中,至少两个数据块的存储空间相同,且不同类型下存储的记录的数据大小均为预设数值的整数倍。在一些实施例中,该装置还包括:位置生成单元,被配置成更新该类型下的当前存储信息,以及生成待存储记录存储后的位置信息,并输出位置信息;其中,位置信息包括以下至少一项:记录的类型、记录的标识或记录所在的数据块的标识。在一些实施例中,磁盘上创建有至少两个存储文件,且磁盘的目录中存储有各存储文件的索引信息。在一些实施例中,该装置还包括:第一位置查找单元,被配置成从目录中查找到待读取记录的位置信息;确定单元,被配置成根据待读取记录的位置信息,确定待读取记录的类型以及在对应的存储文件中所在数据块的位置偏移量;读取单元,被配置成根据待读取记录的类型,确定待读取记录的长度,从位置偏移量所指示的位置开始,读取长度为待读取记录的长度的数据,以及将读取的数据作为待读取记录进行输出。在一些实施例中,该装置还包括:第二位置查找单元,被配置成从目录中查找到待删除记录的位置信息;获取单元,被配置成根据待删除记录的位置信息,获取待删除记录在对应的存储文件中所属类型下的当前存储信息;转移单元,被配置成根据获取的当前存储信息,从当前已存储的记录中读取最后一条记录,将读取的记录转移存储至待删除记录所在的位置;修改单元,被配置成清除读取的记录在转移前的数据块中的数据,并修改读取的记录的位置信息。在一些实施例中,该装置还包括:回收单元,被配置成确定读取的记录转移前所在的数据块中是否还存储有数据;若确定该数据块中没有存储数据,回收该数据块以重新分配。在一些实施例中,该装置还包括:编码单元,被配置成对于切分待存储对象得到的至少一个子对象中的子对象,对该子对象进行编码得到副本;记录生成单元,被配置成对该副本的描述信息和数据进行序列化处理,生成该子对象的待存储记录。在一些实施例中,记录生成单元包括:确定本文档来自技高网...

【技术保护点】
1.一种用于存储数据的方法,所述方法用于分布式对象存储的单机存储引擎,所述单机存储引擎的磁盘上创建有存储文件,其中,所述存储文件的存储空间被划分为至少两个数据块,且所述至少两个数据块之间采用链表结构,包括:根据待存储记录的数据大小,确定所述待存储记录的类型;在所述存储文件中查找所述类型下的当前存储信息,所述当前存储信息包括当前已分配的数据块的信息和数据块中当前已存储的记录的信息,其中,在存储文件中同一类型下存储的记录的数据大小相同,不同类型下存储的记录的数据大小不同;根据所述当前存储信息,确定当前已分配的数据块中是否有剩余存储空间;响应于确定没有剩余存储空间,向所述类型下分配新的数据块,将所述待存储记录存储在新的数据块中。

【技术特征摘要】
1.一种用于存储数据的方法,所述方法用于分布式对象存储的单机存储引擎,所述单机存储引擎的磁盘上创建有存储文件,其中,所述存储文件的存储空间被划分为至少两个数据块,且所述至少两个数据块之间采用链表结构,包括:根据待存储记录的数据大小,确定所述待存储记录的类型;在所述存储文件中查找所述类型下的当前存储信息,所述当前存储信息包括当前已分配的数据块的信息和数据块中当前已存储的记录的信息,其中,在存储文件中同一类型下存储的记录的数据大小相同,不同类型下存储的记录的数据大小不同;根据所述当前存储信息,确定当前已分配的数据块中是否有剩余存储空间;响应于确定没有剩余存储空间,向所述类型下分配新的数据块,将所述待存储记录存储在新的数据块中。2.根据权利要求1所述的方法,其中,所述方法还包括:响应于确定有剩余存储空间,进一步确定剩余存储空间是否不小于所述待存储记录的数据大小;响应于确定剩余存储空间小于所述待存储记录的数据大小,将所述待存储记录的部分数据存储在剩余存储空间中;以及向所述类型下分配新的数据块,将所述待存储记录的剩余数据存储在新的数据块中。3.根据权利要求1所述的方法,其中,所述至少两个数据块的存储空间相同,且不同类型下存储的记录的数据大小均为预设数值的整数倍。4.根据权利要求1-3之一所述的方法,其中,所述方法还包括:更新所述类型下的当前存储信息,以及生成所述待存储记录存储后的位置信息,并输出所述位置信息;其中,所述位置信息包括以下至少一项:记录的类型、记录的标识或记录所在的数据块的标识。5.根据权利要求4所述的方法,其中,所述磁盘上创建有至少两个所述存储文件,且所述磁盘的目录中存储有各所述存储文件的索引信息。6.根据权利要求5所述的方法,其中,所述方法还包括:从所述目录中查找到待读取记录的位置信息;根据所述待读取记录的位置信息,确定所述待读取记录的类型以及在对应的存储文件中所在数据块的位置偏移量;根据所述待读取记录的类型,确定所述待读取记录的长度,从所述位置偏移量所指示的位置开始,读取长度为所述待读取记录的长度的数据,以及将读取的数据作为所述待读取记录进行输出。7.根据权利要求5所述的方法,其中,所述方法还包括:从所述目录中查找到待删除记录的位置信息;根据所述待删除记录的位置信息,获取所述待删除记录在对应的存储文件中所属类型下的当前存储信息;根据获取的当前存储信息,从当前已存储的记录中读取最后一条记录,将读取的记录转移存储至所述待删除记录所在的位置;清除读取的记录在转移前的数据块中的数据,并修改读取的记录的位置信息。8.根据权利要求7所述的方法,其中,所述清除读取的记录在转移前的数据块中的数据之后,所述方法还包括:确定读取的记录转移前所在的数据块中是否还存储有数据;若确定该数据块中没有存储数据,回收该数据块以重新分配。9.根据权利要求1-8之一所述的方法,其中,所述根据待存储记录的数据大小,确定所述待存储记录的类型之前,所述方法还包括:对于切分待存储对象得到的至少一个子对象中的子对象,对该子对象进行编码得到副本;对该副本的描述信息和数据进行序列化处理,生成该子对象的待存储记录。10.根据权利要求9所述的方法,其中,所述生成该子对象的待存储记录,包括:确定序列化之后的该副本的数据大小是否与所述存储文件中各类型对应的数...

【专利技术属性】
技术研发人员:谌宗佳刘健
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1