CN109254733A - 用于存储数据的方法、装置和系统 - Google Patents

用于存储数据的方法、装置和系统 Download PDF

Info

Publication number
CN109254733A
CN109254733A CN201811024928.8A CN201811024928A CN109254733A CN 109254733 A CN109254733 A CN 109254733A CN 201811024928 A CN201811024928 A CN 201811024928A CN 109254733 A CN109254733 A CN 109254733A
Authority
CN
China
Prior art keywords
record
data
stored
storage
size
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811024928.8A
Other languages
English (en)
Other versions
CN109254733B (zh
Inventor
谌宗佳
刘健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201811024928.8A priority Critical patent/CN109254733B/zh
Publication of CN109254733A publication Critical patent/CN109254733A/zh
Priority to JP2019127387A priority patent/JP6778795B2/ja
Priority to KR1020190083622A priority patent/KR102240557B1/ko
Application granted granted Critical
Publication of CN109254733B publication Critical patent/CN109254733B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Abstract

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

Description

用于存储数据的方法、装置和系统
技术领域
本申请实施例涉及分布式对象存储技术领域,具体涉及用于存储数据的方法、装置和系统。
背景技术
分布式存储系统通常是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据。此时的存储服务器便成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统往往采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息。它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
发明内容
本申请实施例提出了用于存储数据的方法、装置和系统。
第一方面,本申请实施例提出了一种用于存储数据的方法,该方法用于分布式对象存储的单机存储引擎,单机存储引擎的磁盘上创建有存储文件,其中,存储文件的存储空间被划分为至少两个数据块,且至少两个数据块之间采用链表结构,包括:根据待存储记录的数据大小,确定待存储记录的类型;在存储文件中查找类型下的当前存储信息,当前存储信息包括当前已分配的数据块的信息和数据块中当前已存储的记录的信息,其中,在存储文件中同一类型下存储的记录的数据大小相同,不同类型下存储的记录的数据大小不同;根据当前存储信息,确定当前已分配的数据块中是否有剩余存储空间;响应于确定没有剩余存储空间,向类型下分配新的数据块,将待存储记录存储在新的数据块中。
在一些实施例中,该方法还包括:响应于确定有剩余存储空间,进一步确定剩余存储空间是否不小于待存储记录的数据大小;响应于确定剩余存储空间小于待存储记录的数据大小,将待存储记录的部分数据存储在剩余存储空间中;以及向类型下分配新的数据块,将待存储记录的剩余数据存储在新的数据块中。
在一些实施例中,至少两个数据块的存储空间相同,且不同类型下存储的记录的数据大小均为预设数值的整数倍。
在一些实施例中,该方法还包括:更新类型下的当前存储信息,以及生成待存储记录存储后的位置信息,并输出位置信息;其中,位置信息包括以下至少一项:记录的类型、记录的标识或记录所在的数据块的标识。
在一些实施例中,磁盘上创建有至少两个存储文件,且磁盘的目录中存储有各存储文件的索引信息。
在一些实施例中,该方法还包括:从目录中查找到待读取记录的位置信息;根据待读取记录的位置信息,确定待读取记录的类型以及在对应的存储文件中所在数据块的位置偏移量;根据待读取记录的类型,确定待读取记录的长度,从位置偏移量所指示的位置开始,读取长度为待读取记录的长度的数据,以及将读取的数据作为待读取记录进行输出。
在一些实施例中,该方法还包括:从目录中查找到待删除记录的位置信息;根据待删除记录的位置信息,获取待删除记录在对应的存储文件中所属类型下的当前存储信息;根据获取的当前存储信息,从当前已存储的记录中读取最后一条记录,将读取的记录转移存储至待删除记录所在的位置;清除读取的记录在转移前的数据块中的数据,并修改读取的记录的位置信息。
在一些实施例中,清除读取的记录在转移前的数据块中的数据之后,该方法还包括:确定读取的记录转移前所在的数据块中是否还存储有数据;若确定该数据块中没有存储数据,回收该数据块以重新分配。
在一些实施例中,根据待存储记录的数据大小,确定待存储记录的类型之前,该方法还包括:对于切分待存储对象得到的至少一个子对象中的子对象,对该子对象进行编码得到副本;对该副本的描述信息和数据进行序列化处理,生成该子对象的待存储记录。
在一些实施例中,生成该子对象的待存储记录,包括:确定序列化之后的该副本的数据大小是否与存储文件中各类型对应的数据大小中的一个相同;若该副本的数据大小与各类型对应的数据大小均不同,且小于部分类型对应的数据大小,则在该副本的数据后面补零,以使补零后的该副本的数据大小与目标类型对应的数据大小相同,并生成该子对象的一条待存储记录,其中,目标类型为该部分类型中对应的数据大小最小的类型;若该副本的数据大小大于各类型对应的数据大小的最大值,则对该副本进行切分和补零,以使切分后的各副本的数据大小分别与各类型对应的数据大小中的一个相同,并生成该子对象的至少两条待存储记录。
第二方面,本申请实施例提出了一种用于存储数据的装置,该装置设置于分布式对象存储的单机存储引擎中,单机存储引擎的磁盘上创建有存储文件,其中,存储文件的存储空间被划分为至少两个数据块,且至少两个数据块之间采用链表结构,包括:类型确定单元,被配置成根据待存储记录的数据大小,确定待存储记录的类型;查找单元,被配置成在存储文件中查找该类型下的当前存储信息,当前存储信息包括当前已分配的数据块的信息和数据块中当前已存储的记录的信息,其中,在存储文件中同一类型下存储的记录的数据大小相同,不同类型下存储的记录的数据大小不同;空间确定单元,被配置成根据当前存储信息,确定当前已分配的数据块中是否有剩余存储空间;第一分配单元,被配置成响应于确定没有剩余存储空间,向该类型下分配新的数据块,将待存储记录存储在新的数据块中。
在一些实施例中,该装置还包括:大小确定单元,被配置成响应于确定有剩余存储空间,进一步确定剩余存储空间是否不小于待存储记录的数据大小;第二分配单元,被配置成响应于确定剩余存储空间小于待存储记录的数据大小,将待存储记录的部分数据存储在剩余存储空间中;以及向类型下分配新的数据块,将待存储记录的剩余数据存储在新的数据块中。
在一些实施例中,至少两个数据块的存储空间相同,且不同类型下存储的记录的数据大小均为预设数值的整数倍。
在一些实施例中,该装置还包括:位置生成单元,被配置成更新该类型下的当前存储信息,以及生成待存储记录存储后的位置信息,并输出位置信息;其中,位置信息包括以下至少一项:记录的类型、记录的标识或记录所在的数据块的标识。
在一些实施例中,磁盘上创建有至少两个存储文件,且磁盘的目录中存储有各存储文件的索引信息。
在一些实施例中,该装置还包括:第一位置查找单元,被配置成从目录中查找到待读取记录的位置信息;确定单元,被配置成根据待读取记录的位置信息,确定待读取记录的类型以及在对应的存储文件中所在数据块的位置偏移量;读取单元,被配置成根据待读取记录的类型,确定待读取记录的长度,从位置偏移量所指示的位置开始,读取长度为待读取记录的长度的数据,以及将读取的数据作为待读取记录进行输出。
在一些实施例中,该装置还包括:第二位置查找单元,被配置成从目录中查找到待删除记录的位置信息;获取单元,被配置成根据待删除记录的位置信息,获取待删除记录在对应的存储文件中所属类型下的当前存储信息;转移单元,被配置成根据获取的当前存储信息,从当前已存储的记录中读取最后一条记录,将读取的记录转移存储至待删除记录所在的位置;修改单元,被配置成清除读取的记录在转移前的数据块中的数据,并修改读取的记录的位置信息。
在一些实施例中,该装置还包括:回收单元,被配置成确定读取的记录转移前所在的数据块中是否还存储有数据;若确定该数据块中没有存储数据,回收该数据块以重新分配。
在一些实施例中,该装置还包括:编码单元,被配置成对于切分待存储对象得到的至少一个子对象中的子对象,对该子对象进行编码得到副本;记录生成单元,被配置成对该副本的描述信息和数据进行序列化处理,生成该子对象的待存储记录。
在一些实施例中,记录生成单元包括:确定子单元,被配置成确定序列化之后的该副本的数据大小是否与存储文件中各类型对应的数据大小中的一个相同;第一生成子单元,被配置成若该副本的数据大小与各类型对应的数据大小均不同,且小于部分类型对应的数据大小,则在该副本的数据后面补零,以使补零后的该副本的数据大小与目标类型对应的数据大小相同,并生成该子对象的一条待存储记录,其中,目标类型为该部分类型中对应的数据大小最小的类型;第二生成子单元,被配置成若该副本的数据大小大于各类型对应的数据大小的最大值,则对该副本进行切分和补零,以使切分后的各副本的数据大小分别与各类型对应的数据大小中的一个相同,并生成该子对象的至少两条待存储记录。
第三方面,本申请实施例提出了一种用于存储数据的系统,包括:第一子系统、第二子系统和第三子系统,其中,第三子系统中安装有如上述第一方面中任一实施例所描述的单机存储引擎;第一子系统,被配置成接收用户发送的包含待存储对象的存储请求,将待存储对象切分为至少一个子对象,将待存储对象与至少一个子对象之间的对应关系发送给第二子系统,并将至少一个子对象发送给第三子系统;第二子系统,被配置成将待存储对象与至少一个子对象之间的对应关系存储在列表中;第三子系统,被配置成对至少一个子对象中的子对象进行编码和序列化处理,生成该子对象的待存储记录,以及对生成的待存储记录进行存储。
在一些实施例中,第三子系统,还被配置成向第一子系统发送用于表征数据存储完成的响应信息;以及第一子系统,还被配置成在接收到响应信息的情况下,生成待存储对象的查询标识,并将查询标识反馈给用户。
在一些实施例中,第一子系统,还被配置成接收用户发送的包含查询标识的读取请求,将读取请求中的查询标识发送给第二子系统;第二子系统,还被配置成获取与读取请求中的查询标识所指示的对象对应的子对象列表,将子对象列表发送给第三子系统;以及第三子系统,还被配置成根据子对象列表读取对应的记录,对读取的记录进行解析得到对象数据,将对象数据发送给第一子系统,以使第一子系统将对象数据反馈给用户。
第四方面,本申请实施例提出了一种电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上述第一方面中任一实施例所描述的方法。
第五方面,本申请实施例提出了一种计算机可读介质,其上存储有计算机程序,其中,该计算机程序被处理器执行时实现如上述第一方面中任一实施例所描述的方法。
本申请实施例提出的用于存储数据的方法、装置和系统,根据待存储记录的数据大小,可以确定待存储记录的类型。从而可以在存储文件中查找类型下的当前存储信息。当前存储信息可以包括当前已分配的数据块的信息和数据块中当前已存储的记录的信息。其中,在存储文件中同一类型下存储的记录的数据大小相同,不同类型下存储的记录的数据大小不同。进而根据当前存储信息,可以确定当前已分配的数据块中是否有剩余存储空间。在确定没有剩余存储空间的情况下,可以向类型下分配新的数据块。并且可以将待存储记录存储在新的数据块中。这样可以降低空间碎片的产生,提高磁盘的空间利用率。而且也有助于改善磁盘的读写性能。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请的一个实施例可以应用于其中的示例性系统架构图;
图2是根据本申请的用于存储数据的方法的一个实施例的流程图;
图3是根据本申请的用于存储数据的方法的又一个实施例的流程图;
图4是根据本申请的用于存储数据的方法的再一个实施例的流程图;
图5A是本申请中的存储文件的一个实施例的逻辑结构示意图;
图5B是本申请中的记录的一个实施例的结构示意图;
图5C是本申请中的磁盘的一个实施例的结构示意图;
图6是根据本申请的用于存储数据的装置的一个实施例的结构示意图;
图7是根据本申请的用于存储数据的系统的一个实施例的时序图;
图8是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请实施例的用于存储数据的方法、装置或系统的示例性系统架构100。
如图1所示,系统架构100可以包括终端101、102、103,网络104和服务器105。网络104可以用以在终端101、102、103与服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端101、102、103通过网络104与服务器105进行交互,以接收或发送消息等。终端101、102、103上可以安装有各种客户端应用,例如网页浏览器、购物类应用、视频类应用、邮箱和即时通讯工具等。
这里的终端101、102、103可以是硬件,也可以是软件。当终端101、102、103为硬件时,可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、智能电视、电子书阅读器、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、膝上型便携计算机和台式计算机等等。当终端101、102、103为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。
服务器105可以是提供各种服务的服务器,例如可以是对终端101、102、103上安装的各种应用提供支持的后台服务器。后台服务器可以对用户通过终端101、102、103发送的数据处理请求(如数据存储请求)进行分析处理,并可以将处理结果(如用于表征存储已完成的反馈信息或数据存储后的位置信息等)返回给终端101、102、103。
这里的服务器105同样可以是硬件,也可以是软件。当服务器105为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器105为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。
例如服务器105中用于存储数据的磁盘(即存储空间)上可以创建有多个存储文件1051、1052。这些存储文件可以是用来存储数据的实际容器,从而实现数据的分布式存储。
需要说明的是,本申请实施例所提供的用于存储数据的方法一般由服务器105执行。相应地,用于存储数据的装置一般设置于服务器105中。
应该理解,图1中的终端、网络、服务器以及服务器中的存储文件的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端、网络、服务器以及服务器中的存储文件。
继续参见图2,其示出了根据本申请的用于存储数据的方法的一个实施例的流程200。该用于存储数据的方法可以包括以下步骤:
步骤201,根据待存储记录的数据大小,确定待存储记录的类型。
在本实施例中,用于存储数据的方法可以用于分布式对象存储的单机存储引擎。且该单机存储引擎的磁盘上可以创建有存储文件。这里的存储文件可以是用于存储数据的实际容器。即数据被存储在存储文件中。其中,存储文件的存储空间可以被划分为至少两个数据块。即将存储文件的存储空间可以进一步划分为多个存储区间(即数据块)。并且为了保证存储空间的连续性,至少两个数据块之间可以采用链表结构。即通过链表方式将同一存储文件中的各数据块链接。
需要说明的是,存储文件的存储容量可以根据实际情况进行设置,例如可以为32G。而且同一存储文件中的各数据块的存储空间可以相同(如2M),也可以不同。此外,在存储文件的内部,可以根据待存储数据的大小,对待存储数据进行分类存储。并且每种类型下可以仅存储一种大小的数据。即同一类型下存储的数据的大小可以相同。不同类型下存储的数据的大小可以不同。其中,分类方法在本申请中并不限制。
在本实施例中,用于存储数据的方法的执行主体(例如图1所示的服务器105)可以通过有线连接方式或无线连接方式,从终端(例如图1所示的终端101、102、103)或云端等来获取待存储记录。并可以根据待存储记录的数据大小,通过预设的分类方法来确定待存储记录的类型。例如待存储记录的数据大小为4KB。若数据大小在大于0KB,且不大于4KB之间时属于第一类,则执行主体可以确定该待存储记录的类型为第一类。在这里,待存储记录可以是能够采用分布式对象存储技术进行存储的任意数据。其内容可以包括数字、文字、字母或符号等至少一种字符的字符串。
在本实施例的一些可选地实现方式中,为了便于管理,同一存储文件中的至少两个数据块的存储空间可以相同。且同一存储文件中不同类型下存储的记录的数据大小可以均为预设数值的整数倍。这样有助于简化计算过程,提高处理效率。如图5A所示,数据块的存储空间均为2M。考虑到数据大小的最小值通常为4KB,所以不同类型对应的数据大小可以均4KB的整数倍。另外,考虑到磁盘的读写性能,数据大小的最大值可以根据实际情况进行设置,如可以设置为512KB。也就是说,在存储文件的内部,可以将记录的数据大小分为4KB、8KB···512KB等几种类型。
步骤202,在存储文件中查找类型下的当前存储信息,当前存储信息包括当前已分配的数据块的信息和数据块中当前已存储的记录的信息。
在本实施例中,执行主体可以在存储文件中,查找待存储记录所属类型下的当前存储信息。这里的当前存储信息可以包括当前已分配的数据块的信息和数据块中当前已存储的记录的信息。即查找在该类型下当前已分配的数据块的信息和数据块中当前已存储的记录的信息。其中,数据块的信息可以包括(但不限于)以下至少一项:数据块之间的链接顺序、数据块的标识、数据块的存储空间等。记录的信息可以包括(但不限于)以下至少一项:记录的标识、记录的数据大小、记录所在数据块的标识等。这里的标识可以用于唯一指示数据块或记录。其可以是数字、字母等字符中的至少一种。也就是说,查找到该类型下的当前存储信息后,执行主体便可以知道在该类型下有哪些数据块以及存储了哪些记录。
需要说明的是,同一类型下的记录一般都是一个挨着一个存储的。即逻辑上这些记录占用的是一整块连续的空间。这样可以避免产生磁盘碎片,从而提高存储空间的利用率。
作为示例,如图5A中的待存储记录X。执行主体在确定其类型(type)为128的情况下,可以查找该类型下的当前存储信息。即存储空间为2M的数据块(block)37;记录(record)的个数为4;每个记录的数据大小为512KB。可以理解的是,采用数字编号(1、2、3等)作为记录的标识。这样,既可以区分在同一类型下的不同记录,还可以便于确定各记录的存储顺序。
步骤203,根据当前存储信息,确定当前已分配的数据块中是否有剩余存储空间。
在本实施例中,执行主体根据步骤202中查找到的当前存储信息,可以确定在该类型(即待存储记录所属类型)下的当前已分配的数据块中是否有剩余存储空间。作为示例,如图5A所示,执行主体根据type=128中的当前存储信息,可以确定block 37中没有剩余存储空间,即512KB×4=2M。
在这里,如果当前已分配的数据块中有剩余存储空间,那么执行主体可以将待存储记录存储在剩余存储空间中。如果当前已分配的数据块中没有剩余存储空间,那么执行主体可以继续执行步骤204。
可选地,若执行主体确定已分配的数据块中有剩余存储空间,则可以进一步确定剩余存储空间是否不小于待存储记录的数据大小。若确定剩余存储空间小于待存储记录的数据大小,则可以将待存储记录的部分数据存储在剩余存储空间中。以及可以向该类型下分配新的数据块,并将待存储记录的剩余数据存储在新的数据块中。
作为示例,如图5A中数据大小为504KB的待存储记录Y。执行主体通过type=126的当前存储信息,可以确定block 3的剩余存储空间为64KB(4M-504KB×8)。此时,执行主体可以向该类型下分配一个新的2M的数据块(block 4)。这样,可以将待存储记录Y的前64KB存储在block 3中。并可以将待存储记录Y的后面440KB存储在block 4中。即可以将待存储记录Y存储在两个相邻的数据块中。
步骤204,响应于确定没有剩余存储空间,向类型下分配新的数据块,将待存储记录存储在新的数据块中。
在本实施例中,若执行主体确定当前已分配的数据块中没有剩余存储空间,则可以向该类型下分配新的数据块。并可以将待存储记录存储在新的数据块中。作为示例,如图5A中待存储记录X。由于block 37中没有剩余存储空间,所以执行主体可以分配一个新的block 49。此时,可以将待存储记录X存储在block 49中。
本实施例中的用于存储数据的方法,可以根据待存储记录的数据大小,对其进行分类存储。在保证数据连续存储的同时,可以降低或避免产生磁盘碎片。这样有助于提高存储空间的利用率,改善磁盘的读写性能。此外,还丰富了分布式对象存储方法。
在本实施例的一些可选地实现方式中,在将待存储记录进行存储之后,执行主体还可以更新其所属类型下的当前存储信息。以及可以生成待存储记录存储后的位置信息。并可以输出该位置信息。其中,位置信息可以用于描述待存储记录的存储位置。例如位置信息可以包括以下至少一项:记录的类型、记录的标识或记录所在的数据块的标识并输出位置信息。这里的输出可以是存储输出,如将位置信息存储在执行主体本地或其他电子设备上;也可以是传输输出,如将位置信息发送给终端等。
作为示例,如图5A中待存储记录X,其位置信息可以为[record_type=128,record_id=5,block_id=49,next_block_id=0]。可以理解的是,在位置信息为[record_type=128,record_id=5]或[record_id=5,block_id=49]时,执行主体也可以找到记录X。
需要说明的是,为了使同一类型下存储的记录的数据大小相同,可选地,执行主体在存储待存储记录之前,可以先确定待存储记录的数据大小是否为该类型对应的数据大小。若确定待存储记录的数据大小是该类型对应的数据大小,则执行主体可以进行存储操作。若确定待存储记录的数据大小不是该类型对应的数据大小,通常为小于该类型对应的数据大小,则执行主体可以在待存储记录的预设位置(如前面或后面)补充预设数据(如0或其他字符串等)。从而使补充后的待存储记录的数据大小是该类型对应的数据大小。之后,执行主体可以对补充后的待存储记录进行存储。
在一些应用场景中,在根据待存储记录的数据大小,确定待存储记录的类型之前,执行主体可以通过处理数据来得到待存储记录。例如对于切分待存储对象得到的至少一个子对象中的子对象,执行主体可以对该子对象进行编码(如EC编码),从而得到副本。之后,可以对该副本的描述信息和数据进行序列化处理,从而生成该子对象的待存储记录。
需要说明的是,切分待存储对象的过程可以是执行主体完成的,也可以是其他电子设备完成的。其他电子设备可以将切分得到的至少一个子对象发送给执行主体。
进一步地,为了使同一类型下存储的记录的数据大小相同,执行主体还可以对序列化之后的该副本进行分析处理,从而生成所需数据大小(即各类型对应的数据大小中的一个)的待存储记录。
具体地,首先,执行主体可以确定序列化之后的该副本的数据大小是否与存储文件中各类型对应的数据大小中的一个相同。若该副本的数据大小与各类型对应的数据大小中的一个相同,则执行主体可以直接生成该子对象的待存储记录。
若该副本的数据大小(如5KB)与各类型对应的数据大小(如4KB、8KB和12KB)均不同,且小于部分类型对应的数据大小(如8KB和12KB),则可以在该副本的数据后面补零。从而可以使补零后的该副本的数据大小与目标类型对应的数据大小相同。并可以生成该子对象的一条待存储记录。其中,目标类型可以为该部分类型中对应的数据大小最小的类型(如8KB和12KB中的8KB)。需要说明的是,补充位置和补充内容在本申请中并不限制,只要不对原有数据造成影响即可。
若该副本的数据大小大于各类型对应的数据大小的最大值(如512KB),则可以对该副本进行切分和补零。从而可以使切分后的各副本的数据大小分别与各类型对应的数据大小中的一个相同,并生成该子对象的至少两条待存储记录。例如副本的数据大小为518KB,可以将其切分为512KB和6KB的两个子副本,并将6KB的子副本补零至8KB。或者,也可以将其切分为512KB、4KB和2KB的三个子副本,并将2KB的子副本补零至4KB。再或者,还可以根据其他类型对应的数据大小将该副本切分为多个相应数据大小的子副本,而不需要进行补零操作。
作为示例,待存储记录中可以包括如图5B所示的字段。其中,Shard Record中可以记录副本(shard)的一些元信息,包括循环冗余校验(crc,Cyclic Redundancy Code)、长度(length)等内容。Key+meta中可以用于记录用户指定的描述信息。Binary data中通常可以是副本的实际数据(shard data)数据。该数据后面可以有不固定长度的字段(即filledzero)可以用于补零对齐。从而可以保证每条记录(record)都是4kb的整数倍。
可以理解的是,为了降低执行主体的负荷,每个存储文件也可以进行内部存储空间的自我管理。例如对于一个存储文件,可以设置有一个数据块管理单元(BlockManager)501和多个类型管理单元(BlockLinkList)502。其中,数据块管理单元可以用于分配和回收数据块。每个类型管理单元可以用于管理一种类型下的存储信息。例如图5A中type=128的类型管理单元可以记住自己所分配的数据块的列表(如block 37)以及自己已经写入的记录的个数(如4个)。这样通过记录的个数便可以计算最后一个数据块(如block 37)还有多少剩余存储空间可用。在存储空间不够用的情况下,可以向数据块管理单元发送用于表征分配数据块的信息。此时,数据块管理单元可以向其分配一个新的数据块(如block 49)。这样有助于提高执行主体整体的处理效率和性能。
此时,每个存储文件的内部结构都可以通过自己已存储记录的位置信息(Location)构建出来。启动的时候,每个存储文件可以把自己所有的记录扫描一次。从而可以在BlockManager中标记自己已经分配过的所有数据块。并且可以在BlockLinkList中恢复各个记录的位置信息。扫描完毕之后,BlockManager就知道了自己的数据块的分配信息。而所有类型的BlockLinkList也都知道了自己的数据块的信息和自己当前的记录的信息。
本实施例中的用于存储数据的方法,根据待存储记录的数据大小,可以确定待存储记录的类型。从而可以在存储文件中查找类型下的当前存储信息。当前存储信息可以包括当前已分配的数据块的信息和数据块中当前已存储的记录的信息。其中,在存储文件中同一类型下存储的记录的数据大小相同,不同类型下存储的记录的数据大小不同。进而根据当前存储信息,可以确定当前已分配的数据块中是否有剩余存储空间。在确定没有剩余存储空间的情况下,可以向类型下分配新的数据块。并且可以将待存储记录存储在新的数据块中。这样可以降低空间碎片的产生,提高磁盘的空间利用率。而且也有助于改善磁盘的读写性能。
请参见图3,其示出了根据本申请的用于存储数据的方法的又一个实施例的流程300。在本实施例中,磁盘上可以创建有至少两个存储文件。并且磁盘的目录中可以存储有该磁盘上的各存储文件的索引信息。也就是说,每个存储文件可以包括索引信息和数据信息。其中,索引信息中记录了存储文件的内部存储了哪些记录和记录的状态。而数据信息主要是指存储文件的内部存储的实际数据。即所有写入磁盘的记录都会在目录中记录该条记录的索引信息。在这里,索引信息可以包括记录的位置信息。
作为示例,磁盘的结构可以如图5C所示。其中,Rocksdb 503可以表示磁盘的目录,其可以采用键-值(key-value)存储方式;Vlet 504(Vlet_110_3以及Vlet···)可以表示存储文件。需要说明的是,一个磁盘通常只有一个目录实例。而将索引信息和数据信息分开存储,这样能够保证可以快速地查找记录是否存在。可选地,索引信息可以采用全内存方式存储,但会受限于内存大小。在这里使用目录存储不会受内存限制,但可能会带来额外的IO。此时,可以通过配置高速缓存存储器(cache)可以较好地平衡内存使用和IO使用。
在本实施例中,用于存储数据的方法还可以包括以下步骤:
步骤301,从目录中查找到待读取记录的位置信息。
在本实施例中,用于存储数据的方法的执行主体(例如图1所示的服务器105)可以从目录中查找待读取记录。在查找到待读取记录的情况下,可以在目录中获取其位置信息。
步骤302,根据待读取记录的位置信息,确定待读取记录的类型以及在对应的存储文件中所在数据块的位置偏移量。
在本实施例中,若位置信息中包括记录的类型,则执行主体可以根据待读取记录的位置信息,确定待读取记录的类型。或者执行主体可以根据位置信息,确定待读取记录所在的存储文件和数据块,从而可以确定其类型。同时,可以根据其所在数据块的存储空间和该数据块上所存储的记录的信息,来确定待读取记录在该数据块的位置偏移量。这里的位置偏移量可以用于表征记录在数据块中的起始位置。
作为示例,如图5A所示,执行主体可以在磁盘的目录中找到记录Y的位置信息为[vlet_id=110_3,record_type=126,record_id=9,block_id=3,next_block_id=4]。此时,根据Vlet_110_3中数据块的存储空间,可以计算出记录Y在block 3中的位置偏移量为2M-64KB(64KB=4M-8×504KB)。
步骤303,根据待读取记录的类型,确定待读取记录的长度,从位置偏移量所指示的位置开始,读取长度为待读取记录的长度的数据。
在本实施例中,执行主体可以根据待读取记录的类型,确定待读取记录的长度。进而,执行主体可以从步骤302中确定的位置偏移量所指示的位置开始,读取长度为待读取记录的长度的数据。例如上述记录Y的类型为126,则其长度可以为504KB。此时,执行主体可以在block 3中,从2M-64KB的位置处开始,一次读取长度为504KB的数据到内存中。
步骤304,将读取的数据作为待读取记录进行输出。
在本实施例中,执行主体可以将读取的数据作为待读取记录,并可以对其进行编码解析。从而可以将解析后的数据输出,如发送给终端(例如图1所示的终端101、102、103)。
在一些实施例中,为了在索引信息全部丢失的情况下,能够恢复出索引信息,每条记录中还可以包括用于记录其存储后的位置信息的字段。如图5B所示,在记录的最后位置处(如固定的24个字节)使用了Record Guard数据结构。
可选地,执行主体在进行编码解析之前,可以校验Record Guard信息。同时,可以检测读取的数据在预设位置是否存在补充的预设数据(如0)。若存在预设数据,则可以去除或忽略读取的数据中的预设数据。进而对校验后的且不包含预设数据的读取的数据进行解析。
本实施例中的用于存储数据的方法,增加了读取数据的步骤,并详细描述了读取过程。丰富和完善了本申请中的用于存储数据的方法。而且读取与写入过程都是一次IOPS(Input/Output Operations Per Second,每秒进行读写(I/O)操作的次数)。这样有助于扩大方法的适用范围。
进一步参见图4,其示出了根据本申请的用于存储数据的方法的再一个实施例的流程400。该用于存储数据的方法可以包括以下步骤:
步骤401,从目录中查找到待删除记录的位置信息。
在本实施例中,用于存储数据的方法的执行主体(例如图1所示的服务器105)可以从目录中查找待删除记录。在查找到待删除记录的情况下,可以在目录中获取其位置信息。
步骤402,根据待删除记录的位置信息,获取待删除记录在对应的存储文件中所属类型下的当前存储信息。
在本实施例中,执行主体可以根据待删除记录的位置信息,可以确定其所在的存储文件。并可以获取该存储文件中其所属类型下的当前存储信息。
作为示例,如图5A所示,执行主体可以在磁盘的目录中找到记录Z的位置信息为[vlet_id=110_3,record_type=128,record_id=2,block_id=37,next_block_id=0]。此时,执行主体可以获取Vlet_110_3中type=128的当前存储信息,即block 37(record1-4)和block 49(record5)。
步骤403,根据获取的当前存储信息,从当前已存储的记录中读取最后一条记录,将读取的记录转移存储至待删除记录所在的位置。
在本实施例中,根据获取的当前存储信息,执行主体可以从当前已存储的记录中读取最后一条记录。并可以将读取的记录转移存储至待删除记录所在的位置。
作为示例,如图5A所示,执行主体可以读取record_id=5的记录X。从而可以将记录X转移(Move)写入record_id=2的位置。由于两个记录的数据长度相同,所以可以实现覆盖写入。
步骤404,清除读取的记录在转移前的数据块中的数据,并修改读取的记录的位置信息。
在本实施例中,执行主体可以清除读取的记录(如记录X)在转移前的数据块(如block_id=49)中的数据(如record5)。并需要修改读取的记录的位置信息。例如记录X修改后的位置信息为[record_type=128,record_id=2,block_id=37,next_block_id=0]。需要说明的是,在删除待删除记录之后,还需要更新相关信息(如磁盘的目录、对应类型下的当前存储信息、记录X的Record Guard等)。
步骤405,确定读取的记录转移前所在的数据块中是否还存储有数据。
在本实施例中,执行主体还可以确定读取的记录转移前所在的数据块中是否还存储有数据。例如图5A所示,在将记录X转移存储之后,执行主体可以确定block 49中是否还存储有其他数据。
步骤406,若确定该数据块中没有存储数据,回收该数据块以重新分配。
在本实施例中,执行主体在确定该数据块中没有存储数据的情况下,可以回收该数据块,以等待重新分配。例如可以将数据块的已分配标记状态修改为未分配标记状态。例如从图5A中可以看出,在将记录X转移存储之后,block 49的存储空间是完全空闲。此时,BlockManager可以将该数据块(FreeBlock 49)回收。
本实施例中的用于存储数据的方法,增加了删除数据的步骤,并详细描述了删除过程。进一步丰富和完善了本申请中的用于存储数据的方法。而删除过程相当于一次读过程加上一次写过程,可以有助于提高磁盘的整体性能。并且能够保证剩余数据存储的连续性,不会产生空间碎片。
可以理解的是,对于上述各实施例中的磁盘,其上创建的各存储文件的大小可相同,从而便于管理,有利于提高数据处理效率。各存储文件的大小也可以不同,从而有助于满足不同用户的需求。此外,不同存储文件中的数据块的大小可以相同,也可以不同。而为了便于管理,每个存储文件中还可以设置有配置文件。其中,配置文件可以用于描述存储文件的配置参数信息。
如图5A所示,存储文件的最后可以有一个512KB的文件(即VletInfo)。该文件可以用来存储自己的配置参数信息,可以采用Protobuf(Google Protocol Buffer),是一种轻便高效的结构化数据存储格式。其具有平台无关、语言无关、可扩展、使用简单、解析速度快等特点。需要说明的是,这个文件中的内容只在存储文件创建的时候生成,之后永远都不可修改。
其中,配置参数信息可以包括(但不限于)以下至少一项:存储文件的大小(如32GB)、数据块的大小(如2M)、记录中的最小类型(如4kB)、记录中的最大类型(如512KB)、记录类型之间的间隔(如4kB)等。也就是说,在存储文件中除了最后一个page存储vletinfo外,其他的部分可以全部都是等大小的数据块。
此外,需要说明的是,对于海量小文件的存储,一直是分布式存储系统中难以解决的问题。用户通常需要在读取性能、空间利用率以及删除效率等方面进行取舍。而本申请各实施例中的用于存储数据的方法,读、写数据可以相当于磁盘的一次随机读、写。且删除数据可以相当于一次读加写。这样有助于保证磁盘的读写性能和删除效率。另外,在写入数据和删除数据时不会产生空间碎片。而且能够及时回收空闲的存储空间。这样有助于提高磁盘的空间利用率。也就是说,本申请中的方法可以很好地权衡用户的上述需求。在实际使用中能够达到良好的处理效果,可以有利于提高用户体验。
本申请实施例中的用于存储数据的方法,只要不跨两个数据块,所有数据的读写都是一次IOPS。这里可以通过调节数据块的大小或写入数据的切分等措施,来减少或避免跨越两个数据块的情况。读、写性能分别与磁盘的一次随机读取、随机写入的耗时基本相同。且写入和删除过程不会产生碎片,并能够立即回收空间。虽然删除会产生一次额外的写IO,但与现有技术方案相比,对IO的耗费仍然是比较少的。
另外,在空间浪费方面主要有两部分。一是将同类型下的数据的大小对齐。这部分浪费取决于写入数据的平均大小。根据统计可知,用户平均写入数据一般为256KB。这样产生的空间浪费约为0.7%。另一部分是,每种类型下分配的最后一个数据块写不满。在最坏的情况下,大概有127个数据块只有一条记录。那么空间浪费大约是(2M×127)÷32G=0.7%。通过分析可知,这两部分的空间浪费都是可以接受的。因此,在吞吐、延时、空间利用率等方面的综合比较来看,该方法要优于现有技术。
需要说明的是,本申请实施例中方法主要可以用于数据规模在EB级,且读取多于写入,写入多于删除的情况。这就使得对空间利用率有着极为苛刻的要求(即降低成本)。同时对读写延时和吞吐有着较高的要求。
继续参见图6,作为对上述各图所示方法的实现,本申请提供了一种用于存储数据的装置的一个实施例。该装置实施例与上述各实施例所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图6所示,本实施例的用于存储数据的装置600可以设置于分布式对象存储的单机存储引擎中。单机存储引擎的磁盘上可以创建有存储文件。其中,存储文件的存储空间可以被划分为至少两个数据块,且至少两个数据块之间可以采用链表结构。该装置600可以包括:类型确定单元601,被配置成根据待存储记录的数据大小,确定待存储记录的类型;查找单元602,被配置成在存储文件中查找该类型下的当前存储信息,当前存储信息包括当前已分配的数据块的信息和数据块中当前已存储的记录的信息,其中,在存储文件中同一类型下存储的记录的数据大小相同,不同类型下存储的记录的数据大小不同;空间确定单元603,被配置成根据当前存储信息,确定当前已分配的数据块中是否有剩余存储空间;第一分配单元604,被配置成响应于确定没有剩余存储空间,向该类型下分配新的数据块,将待存储记录存储在新的数据块中。
在本实施例的一些可选地实现方式中,该装置600还可以包括:大小确定单元(图6中未示出),被配置成响应于确定有剩余存储空间,进一步确定剩余存储空间是否不小于待存储记录的数据大小;第二分配单元(图6中未示出),被配置成响应于确定剩余存储空间小于待存储记录的数据大小,将待存储记录的部分数据存储在剩余存储空间中;以及向类型下分配新的数据块,将待存储记录的剩余数据存储在新的数据块中。
可选地,至少两个数据块的存储空间可以相同,且不同类型下存储的记录的数据大小可以均为预设数值的整数倍。
进一步地,该装置600还可以包括:位置生成单元(图6中未示出),被配置成更新该类型下的当前存储信息,以及生成待存储记录存储后的位置信息,并输出位置信息;其中,位置信息包括以下至少一项:记录的类型、记录的标识或记录所在的数据块的标识。
在一些实施例中,磁盘上可以创建有至少两个存储文件,且磁盘的目录中可以存储有各存储文件的索引信息。
可选地,该装置600还可以包括:第一位置查找单元(图6中未示出),被配置成从目录中查找到待读取记录的位置信息;确定单元(图6中未示出),被配置成根据待读取记录的位置信息,确定待读取记录的类型以及在对应的存储文件中所在数据块的位置偏移量;读取单元(图6中未示出),被配置成根据待读取记录的类型,确定待读取记录的长度,从位置偏移量所指示的位置开始,读取长度为待读取记录的长度的数据,以及将读取的数据作为待读取记录进行输出。
进一步地,该装置600还可以包括:第二位置查找单元(图6中未示出),被配置成从目录中查找到待删除记录的位置信息;获取单元(图6中未示出),被配置成根据待删除记录的位置信息,获取待删除记录在对应的存储文件中所属类型下的当前存储信息;转移单元(图6中未示出),被配置成根据获取的当前存储信息,从当前已存储的记录中读取最后一条记录,将读取的记录转移存储至待删除记录所在的位置;修改单元(图6中未示出),被配置成清除读取的记录在转移前的数据块中的数据,并修改读取的记录的位置信息。
在一些实施例中,该装置600还可以包括:回收单元(图6中未示出),被配置成确定读取的记录转移前所在的数据块中是否还存储有数据;若确定该数据块中没有存储数据,回收该数据块以重新分配。
在一些实施例中,该装置600还可以包括:编码单元(图6中未示出),被配置成对于切分待存储对象得到的至少一个子对象中的子对象,对该子对象进行编码得到副本;记录生成单元(图6中未示出),被配置成对该副本的描述信息和数据进行序列化处理,生成该子对象的待存储记录。
可选地,记录生成单元可以包括:确定子单元,被配置成确定序列化之后的该副本的数据大小是否与存储文件中各类型对应的数据大小中的一个相同;第一生成子单元,被配置成若该副本的数据大小与各类型对应的数据大小均不同,且小于部分类型对应的数据大小,则在该副本的数据后面补零,以使补零后的该副本的数据大小与目标类型对应的数据大小相同,并生成该子对象的一条待存储记录,其中,目标类型为该部分类型中对应的数据大小最小的类型;第二生成子单元,被配置成若该副本的数据大小大于各类型对应的数据大小的最大值,则对该副本进行切分和补零,以使切分后的各副本的数据大小分别与各类型对应的数据大小中的一个相同,并生成该子对象的至少两条待存储记录。
可以理解的是,该装置600中记载的诸单元与参考图2至图4描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作、特征以及产生的有益效果同样适用于该装置600及其中包含的单元,在此不再赘述。
请参见图7,其示出了根据本申请的用于存储数据的系统的一个实施例的时序图。
本实施例中的用于存储数据的系统可以包括第一子系统、第二子系统和第三子系统,其中,第三子系统中可以安装有如上述各实施例所描述的单机存储引擎;第一子系统,被配置成接收用户发送的包含待存储对象的存储请求,将待存储对象切分为至少一个子对象,将待存储对象与至少一个子对象之间的对应关系发送给第二子系统,并将至少一个子对象发送给第三子系统;第二子系统,被配置成将待存储对象与至少一个子对象之间的对应关系存储在列表中;第三子系统,被配置成对至少一个子对象中的子对象进行编码和序列化处理,生成该子对象的待存储记录,以及对生成的待存储记录进行存储。
如图7所示,在步骤701中,第一子系统可以接收用户发送的包含待存储对象的存储请求。
在本实施例中,第一子系统可以通过有线连接方式或无线连接方式,来接收用户发送的包含待存储对象的存储请求。其中,待存储对象可以是分布式对象存储系统的数据。
在步骤702中,第一子系统可以将待存储对象切分为至少一个子对象。这里的切分方式可以根据实际需求进行设置。
在步骤703中,第一子系统可以将待存储对象与至少一个子对象之间的对应关系发送给第二子系统,并可以将至少一个子对象发送给第三子系统。
在步骤704中,第二子系统可以将待存储对象与至少一个子对象之间的对应关系存储在列表中。
在步骤705中,第三子系统可以对至少一个子对象中的子对象进行编码和序列化处理,生成该子对象的待存储记录,以及对生成的待存储记录进行存储。可以参见图2实施例的相关描述,此处不再赘述。
在本实施例的一些可选地实现方式中,如步骤706,第三子系统可以向第一子系统发送用于表征数据存储完成的响应信息。
之后,在步骤707中,第一子系统在接收到响应信息的情况下,可以生成待存储对象的查询标识,并将查询标识反馈给用户。这样,用户可以通过查询标识来访问其所指示的对象数据。其中,查询标识可以包括(但不限于)数字、字母、文字等至少一种字符。
可选地,如步骤708,第一子系统还可以接收用户发送的包含查询标识的读取请求。
接着,在步骤709中,第一子系统可以将读取请求中的查询标识发送给第二子系统。
之后,在步骤710中,第二子系统可以获取与读取请求中的查询标识所指示的对象对应的子对象列表,并可以将子对象列表发送给第三子系统。
之后,在步骤711中,第三子系统可以根据子对象列表读取对应的记录,对读取的记录进行解析得到对象数据,并可以将对象数据发送给第一子系统。可以参见图3实施例的相关描述,此处不再赘述。
最后,在步骤712中,第一子系统可以将对象数据反馈给用户。
在一些应用场景中,第一子系统还可以接收用户发送的包含查询标识的删除请求。这样,第三子系统可以按照图4实施例中的相关描述,对删除请求所指示的对象数据进行删除。此处不再赘述。
可以理解的是,上述第一子系统、第二子系统和第三子系统可以位于不同的电子设备中(如三台服务器);也可以位于同一电子设备中(如图1所示的服务器105)。且在一些实施例中,若第一子系统中可以包括第二子系统的功能,则本实施例中的系统可以不设置第二子系统。
本实施例中的用于存储数据的系统,采用一种新的数据存储方式,即按照数据大小分类存储。这样,不仅可以实现数据的分布式存储,提高数据的安全性。同时,可以提高整体的数据处理性能,降低运行成本。
下面参见图8,其示出了适于用来实现本申请实施例的电子设备(例如图1所示的服务器105)的计算机系统800的结构示意图。图8示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括按键、鼠标、麦克风、摄像头等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本申请公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括类型确定单元、查找单元、空间确定单元和第一分配单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,类型确定单元还可以被描述为“根据待存储记录的数据大小,确定待存储记录的类型的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:根据待存储记录的数据大小,确定待存储记录的类型;在存储文件中查找类型下的当前存储信息,当前存储信息包括当前已分配的数据块的信息和数据块中当前已存储的记录的信息,其中,在存储文件中同一类型下存储的记录的数据大小相同,不同类型下存储的记录的数据大小不同;根据当前存储信息,确定当前已分配的数据块中是否有剩余存储空间;响应于确定没有剩余存储空间,向类型下分配新的数据块,将待存储记录存储在新的数据块中。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (16)

1.一种用于存储数据的方法,所述方法用于分布式对象存储的单机存储引擎,所述单机存储引擎的磁盘上创建有存储文件,其中,所述存储文件的存储空间被划分为至少两个数据块,且所述至少两个数据块之间采用链表结构,包括:
根据待存储记录的数据大小,确定所述待存储记录的类型;
在所述存储文件中查找所述类型下的当前存储信息,所述当前存储信息包括当前已分配的数据块的信息和数据块中当前已存储的记录的信息,其中,在存储文件中同一类型下存储的记录的数据大小相同,不同类型下存储的记录的数据大小不同;
根据所述当前存储信息,确定当前已分配的数据块中是否有剩余存储空间;
响应于确定没有剩余存储空间,向所述类型下分配新的数据块,将所述待存储记录存储在新的数据块中。
2.根据权利要求1所述的方法,其中,所述方法还包括:
响应于确定有剩余存储空间,进一步确定剩余存储空间是否不小于所述待存储记录的数据大小;
响应于确定剩余存储空间小于所述待存储记录的数据大小,将所述待存储记录的部分数据存储在剩余存储空间中;以及向所述类型下分配新的数据块,将所述待存储记录的剩余数据存储在新的数据块中。
3.根据权利要求1所述的方法,其中,所述至少两个数据块的存储空间相同,且不同类型下存储的记录的数据大小均为预设数值的整数倍。
4.根据权利要求1-3之一所述的方法,其中,所述方法还包括:
更新所述类型下的当前存储信息,以及生成所述待存储记录存储后的位置信息,并输出所述位置信息;
其中,所述位置信息包括以下至少一项:记录的类型、记录的标识或记录所在的数据块的标识。
5.根据权利要求4所述的方法,其中,所述磁盘上创建有至少两个所述存储文件,且所述磁盘的目录中存储有各所述存储文件的索引信息。
6.根据权利要求5所述的方法,其中,所述方法还包括:
从所述目录中查找到待读取记录的位置信息;
根据所述待读取记录的位置信息,确定所述待读取记录的类型以及在对应的存储文件中所在数据块的位置偏移量;
根据所述待读取记录的类型,确定所述待读取记录的长度,从所述位置偏移量所指示的位置开始,读取长度为所述待读取记录的长度的数据,以及将读取的数据作为所述待读取记录进行输出。
7.根据权利要求5所述的方法,其中,所述方法还包括:
从所述目录中查找到待删除记录的位置信息;
根据所述待删除记录的位置信息,获取所述待删除记录在对应的存储文件中所属类型下的当前存储信息;
根据获取的当前存储信息,从当前已存储的记录中读取最后一条记录,将读取的记录转移存储至所述待删除记录所在的位置;
清除读取的记录在转移前的数据块中的数据,并修改读取的记录的位置信息。
8.根据权利要求7所述的方法,其中,所述清除读取的记录在转移前的数据块中的数据之后,所述方法还包括:
确定读取的记录转移前所在的数据块中是否还存储有数据;若确定该数据块中没有存储数据,回收该数据块以重新分配。
9.根据权利要求1-8之一所述的方法,其中,所述根据待存储记录的数据大小,确定所述待存储记录的类型之前,所述方法还包括:
对于切分待存储对象得到的至少一个子对象中的子对象,对该子对象进行编码得到副本;对该副本的描述信息和数据进行序列化处理,生成该子对象的待存储记录。
10.根据权利要求9所述的方法,其中,所述生成该子对象的待存储记录,包括:
确定序列化之后的该副本的数据大小是否与所述存储文件中各类型对应的数据大小中的一个相同;
若该副本的数据大小与各类型对应的数据大小均不同,且小于部分类型对应的数据大小,则在该副本的数据后面补零,以使补零后的该副本的数据大小与目标类型对应的数据大小相同,并生成该子对象的一条待存储记录,其中,目标类型为该部分类型中对应的数据大小最小的类型;
若该副本的数据大小大于各类型对应的数据大小的最大值,则对该副本进行切分和补零,以使切分后的各副本的数据大小分别与各类型对应的数据大小中的一个相同,并生成该子对象的至少两条待存储记录。
11.一种用于存储数据的装置,所述装置设置于分布式对象存储的单机存储引擎中,所述单机存储引擎的磁盘上创建有存储文件,其中,所述存储文件的存储空间被划分为至少两个数据块,且所述至少两个数据块之间采用链表结构,包括:
类型确定单元,被配置成根据待存储记录的数据大小,确定所述待存储记录的类型;
查找单元,被配置成在所述存储文件中查找所述类型下的当前存储信息,所述当前存储信息包括当前已分配的数据块的信息和数据块中当前已存储的记录的信息,其中,在存储文件中同一类型下存储的记录的数据大小相同,不同类型下存储的记录的数据大小不同;
空间确定单元,被配置成根据所述当前存储信息,确定当前已分配的数据块中是否有剩余存储空间;
第一分配单元,被配置成响应于确定没有剩余存储空间,向所述类型下分配新的数据块,将所述待存储记录存储在新的数据块中。
12.一种用于存储数据的系统,包括:第一子系统、第二子系统和第三子系统,其中,所述第三子系统中安装有如权利要求1-10之一所述的单机存储引擎;
所述第一子系统,被配置成接收用户发送的包含待存储对象的存储请求,将所述待存储对象切分为至少一个子对象,将所述待存储对象与所述至少一个子对象之间的对应关系发送给所述第二子系统,并将所述至少一个子对象发送给所述第三子系统;
所述第二子系统,被配置成将所述待存储对象与所述至少一个子对象之间的对应关系存储在列表中;
所述第三子系统,被配置成对所述至少一个子对象中的子对象进行编码和序列化处理,生成该子对象的待存储记录,以及对生成的待存储记录进行存储。
13.根据权利要求12所述的系统,其中,所述第三子系统,还被配置成向所述第一子系统发送用于表征数据存储完成的响应信息;以及
所述第一子系统,还被配置成在接收到所述响应信息的情况下,生成所述待存储对象的查询标识,并将所述查询标识反馈给用户。
14.根据权利要求13所述的系统,其中,所述第一子系统,还被配置成接收用户发送的包含查询标识的读取请求,将所述读取请求中的查询标识发送给所述第二子系统;
所述第二子系统,还被配置成获取与所述读取请求中的查询标识所指示的对象对应的子对象列表,将所述子对象列表发送给所述第三子系统;以及
所述第三子系统,还被配置成根据所述子对象列表读取对应的记录,对读取的记录进行解析得到对象数据,将所述对象数据发送给所述第一子系统,以使所述第一子系统将所述对象数据反馈给用户。
15.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-10中任一所述的方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1-10中任一所述的方法。
CN201811024928.8A 2018-09-04 2018-09-04 用于存储数据的方法、装置和系统 Active CN109254733B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201811024928.8A CN109254733B (zh) 2018-09-04 2018-09-04 用于存储数据的方法、装置和系统
JP2019127387A JP6778795B2 (ja) 2018-09-04 2019-07-09 データを記憶するための方法、装置及びシステム
KR1020190083622A KR102240557B1 (ko) 2018-09-04 2019-07-11 데이터 저장 방법, 장치 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811024928.8A CN109254733B (zh) 2018-09-04 2018-09-04 用于存储数据的方法、装置和系统

Publications (2)

Publication Number Publication Date
CN109254733A true CN109254733A (zh) 2019-01-22
CN109254733B CN109254733B (zh) 2021-10-01

Family

ID=65046720

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811024928.8A Active CN109254733B (zh) 2018-09-04 2018-09-04 用于存储数据的方法、装置和系统

Country Status (3)

Country Link
JP (1) JP6778795B2 (zh)
KR (1) KR102240557B1 (zh)
CN (1) CN109254733B (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109918381A (zh) * 2019-03-13 2019-06-21 北京百度网讯科技有限公司 用于存储数据的方法和装置
CN110059087A (zh) * 2019-03-26 2019-07-26 阿里巴巴集团控股有限公司 一种块链式账本中的数据属性标识方法、装置及设备
CN110427377A (zh) * 2019-08-02 2019-11-08 北京博睿宏远数据科技股份有限公司 数据处理方法、装置、设备和存储介质
CN110727639A (zh) * 2019-10-08 2020-01-24 深圳市网心科技有限公司 碎片数据读取方法、电子设备、系统及介质
CN110781146A (zh) * 2019-10-28 2020-02-11 宁波三星智能电气有限公司 事件存储方法、电力终端及计算机可读存储介质
CN111198807A (zh) * 2019-12-18 2020-05-26 中移(杭州)信息技术有限公司 数据流分析方法、装置、计算机设备及存储介质
CN111694521A (zh) * 2020-06-17 2020-09-22 杭州海康威视系统技术有限公司 存储文件的方法、装置及系统
CN111797032A (zh) * 2020-06-19 2020-10-20 南京南瑞继保工程技术有限公司 存储结构、方法、装置、设备及可读存储介质
CN112085424A (zh) * 2019-06-14 2020-12-15 北京京东振世信息技术有限公司 存储物品的方法、装置、设备和计算机可读介质
CN112506918A (zh) * 2020-11-03 2021-03-16 深圳市宏电技术股份有限公司 数据存取方法、终端及计算机可读存储介质
CN112699092A (zh) * 2021-01-13 2021-04-23 浪潮云信息技术股份公司 一种RocksDB存储大值数据的方法
CN112765046A (zh) * 2019-10-21 2021-05-07 伊姆西Ip控股有限责任公司 用于回收存储空间的方法、设备和计算机程序产品
WO2021104380A1 (zh) * 2019-11-27 2021-06-03 杭州海康威视系统技术有限公司 数据存储方法、装置及存储系统
CN113486026A (zh) * 2021-08-02 2021-10-08 北京字节跳动网络技术有限公司 数据处理方法、装置、设备及介质
WO2021208239A1 (zh) * 2020-04-14 2021-10-21 中山大学 一种低延迟的文件系统地址空间管理方法、系统及介质
CN114116795A (zh) * 2021-11-01 2022-03-01 北京力控元通科技有限公司 一种数据存储和查询方法、装置、存储介质及电子设备
CN114430458A (zh) * 2020-10-29 2022-05-03 北京小米移动软件有限公司 防抖数据获取方法、防抖数据获取装置以及存储介质
CN114816277A (zh) * 2022-06-30 2022-07-29 广东睿江云计算股份有限公司 文件数据块顺序性保障的控制方法及控制系统
CN117082083A (zh) * 2023-08-30 2023-11-17 杭州浩联智能科技有限公司 一种基于分布式物联网架构的数据存储方法、装置及介质

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113010105A (zh) * 2021-02-25 2021-06-22 深圳市广和通无线股份有限公司 一种数据备份的方法、装置、设备和计算机可读存储介质
CN113194127B (zh) * 2021-04-21 2022-08-12 统信软件技术有限公司 一种数据存储方法、数据传输方法及计算设备
CN113495889B (zh) * 2021-07-07 2024-03-15 浙江大华技术股份有限公司 一种分布式对象存储方法、装置、电子设备及存储介质
CN116010997B (zh) * 2023-03-20 2023-08-01 中国信息通信研究院 基于区块链的连续性校验的数据资源托管方法和装置
CN116521091B (zh) * 2023-06-28 2023-09-15 苏州浪潮智能科技有限公司 数据读取方法、装置、设备、数据传输系统及存储介质
CN116910825B (zh) * 2023-09-12 2023-12-15 上海融和元储能源有限公司 一种基于kafka的数据同步方法及装置
CN117078213B (zh) * 2023-10-11 2024-03-29 潍坊威尔信息技术有限公司 基于大数据整合分析的建筑工程管理平台

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100449419B1 (ko) * 2002-06-14 2004-09-18 학교법인 인하학원 데이터 크기에 따른 선별적 공간데이터 관리방법
KR20060059568A (ko) * 2004-11-29 2006-06-02 삼성전자주식회사 상이한 크기를 가지는 복수 개의 데이터 블록들을포함하는 저장 장치 및 이를 이용한 파일 관리 방법 및이를 포함하는 인쇄 장치
CN101039278A (zh) * 2007-03-30 2007-09-19 华为技术有限公司 数据管理方法及系统
KR20080029677A (ko) * 2006-09-29 2008-04-03 한국전자통신연구원 파일 저장 시스템 및 그 시스템에서의 파일 저장 및 검색방법
CN101446976A (zh) * 2008-12-26 2009-06-03 中兴通讯股份有限公司 一种分布式文件系统中的文件存储方法
JP2011191835A (ja) * 2010-03-12 2011-09-29 Hitachi Ltd 計算機システムおよびアプリケーションプログラムの実行方法
JP2012073777A (ja) * 2010-09-28 2012-04-12 Kddi Corp 分散ファイルシステム制御装置
CN1984118B (zh) * 2005-12-13 2012-05-30 汤姆森许可贸易公司 用于组织网络中的节点的方法和设备
KR101525453B1 (ko) * 2014-04-09 2015-06-04 인하대학교 산학협력단 데이터 접근빈도를 이용한 raid 시스템의 데이터 복제 방법
CN105205174A (zh) * 2015-10-14 2015-12-30 北京百度网讯科技有限公司 用于分布式系统的文件处理方法和装置
WO2016106757A1 (zh) * 2014-12-31 2016-07-07 华为技术有限公司 一种存储数据的管理方法、存储管理器及存储系统
CN107967121A (zh) * 2017-10-25 2018-04-27 华为技术有限公司 数据写入方法和存储设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030058687A (ko) * 2001-12-31 2003-07-07 주식회사 케이티 공간 데이터 특성에 따른 데이터 관리방법
JP5677336B2 (ja) 2011-08-01 2015-02-25 株式会社東芝 メモリ・デバイス
US9582204B2 (en) 2014-01-07 2017-02-28 Apple Inc. Speculative prefetching of data stored in flash memory

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100449419B1 (ko) * 2002-06-14 2004-09-18 학교법인 인하학원 데이터 크기에 따른 선별적 공간데이터 관리방법
KR20060059568A (ko) * 2004-11-29 2006-06-02 삼성전자주식회사 상이한 크기를 가지는 복수 개의 데이터 블록들을포함하는 저장 장치 및 이를 이용한 파일 관리 방법 및이를 포함하는 인쇄 장치
CN1984118B (zh) * 2005-12-13 2012-05-30 汤姆森许可贸易公司 用于组织网络中的节点的方法和设备
KR20080029677A (ko) * 2006-09-29 2008-04-03 한국전자통신연구원 파일 저장 시스템 및 그 시스템에서의 파일 저장 및 검색방법
CN101039278A (zh) * 2007-03-30 2007-09-19 华为技术有限公司 数据管理方法及系统
CN101446976A (zh) * 2008-12-26 2009-06-03 中兴通讯股份有限公司 一种分布式文件系统中的文件存储方法
JP2011191835A (ja) * 2010-03-12 2011-09-29 Hitachi Ltd 計算機システムおよびアプリケーションプログラムの実行方法
JP2012073777A (ja) * 2010-09-28 2012-04-12 Kddi Corp 分散ファイルシステム制御装置
KR101525453B1 (ko) * 2014-04-09 2015-06-04 인하대학교 산학협력단 데이터 접근빈도를 이용한 raid 시스템의 데이터 복제 방법
WO2016106757A1 (zh) * 2014-12-31 2016-07-07 华为技术有限公司 一种存储数据的管理方法、存储管理器及存储系统
CN105205174A (zh) * 2015-10-14 2015-12-30 北京百度网讯科技有限公司 用于分布式系统的文件处理方法和装置
CN107967121A (zh) * 2017-10-25 2018-04-27 华为技术有限公司 数据写入方法和存储设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KRISTAL T. POLLACK ET AL.: "Quota enforcement for high-performance distributed storage systems", 《IEEE XPLORE》 *
盛秀杰 等: "PetroV分布式数据存储与分析框架设计", 《石油地球物理勘探》 *

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109918381A (zh) * 2019-03-13 2019-06-21 北京百度网讯科技有限公司 用于存储数据的方法和装置
CN110059087A (zh) * 2019-03-26 2019-07-26 阿里巴巴集团控股有限公司 一种块链式账本中的数据属性标识方法、装置及设备
CN112085424A (zh) * 2019-06-14 2020-12-15 北京京东振世信息技术有限公司 存储物品的方法、装置、设备和计算机可读介质
CN110427377A (zh) * 2019-08-02 2019-11-08 北京博睿宏远数据科技股份有限公司 数据处理方法、装置、设备和存储介质
CN110427377B (zh) * 2019-08-02 2023-12-26 北京博睿宏远数据科技股份有限公司 数据处理方法、装置、设备和存储介质
CN110727639A (zh) * 2019-10-08 2020-01-24 深圳市网心科技有限公司 碎片数据读取方法、电子设备、系统及介质
CN110727639B (zh) * 2019-10-08 2023-09-19 深圳市网心科技有限公司 碎片数据读取方法、电子设备、系统及介质
CN112765046A (zh) * 2019-10-21 2021-05-07 伊姆西Ip控股有限责任公司 用于回收存储空间的方法、设备和计算机程序产品
CN110781146A (zh) * 2019-10-28 2020-02-11 宁波三星智能电气有限公司 事件存储方法、电力终端及计算机可读存储介质
US11853549B2 (en) 2019-11-27 2023-12-26 Hangzhou Hikvision System Technology Co., Ltd. Index storage in shingled magnetic recording (SMR) storage system with non-shingled region
WO2021104380A1 (zh) * 2019-11-27 2021-06-03 杭州海康威视系统技术有限公司 数据存储方法、装置及存储系统
CN111198807A (zh) * 2019-12-18 2020-05-26 中移(杭州)信息技术有限公司 数据流分析方法、装置、计算机设备及存储介质
CN111198807B (zh) * 2019-12-18 2023-10-27 中移(杭州)信息技术有限公司 数据流分析方法、装置、计算机设备及存储介质
WO2021208239A1 (zh) * 2020-04-14 2021-10-21 中山大学 一种低延迟的文件系统地址空间管理方法、系统及介质
CN111694521A (zh) * 2020-06-17 2020-09-22 杭州海康威视系统技术有限公司 存储文件的方法、装置及系统
CN111694521B (zh) * 2020-06-17 2022-08-05 杭州海康威视系统技术有限公司 存储文件的方法、装置及系统
CN111797032A (zh) * 2020-06-19 2020-10-20 南京南瑞继保工程技术有限公司 存储结构、方法、装置、设备及可读存储介质
CN111797032B (zh) * 2020-06-19 2022-09-23 南京南瑞继保工程技术有限公司 存储结构、方法、装置、设备及可读存储介质
CN114430458A (zh) * 2020-10-29 2022-05-03 北京小米移动软件有限公司 防抖数据获取方法、防抖数据获取装置以及存储介质
CN114430458B (zh) * 2020-10-29 2023-12-19 北京小米移动软件有限公司 防抖数据获取方法、防抖数据获取装置以及存储介质
CN112506918A (zh) * 2020-11-03 2021-03-16 深圳市宏电技术股份有限公司 数据存取方法、终端及计算机可读存储介质
CN112699092A (zh) * 2021-01-13 2021-04-23 浪潮云信息技术股份公司 一种RocksDB存储大值数据的方法
CN113486026A (zh) * 2021-08-02 2021-10-08 北京字节跳动网络技术有限公司 数据处理方法、装置、设备及介质
CN114116795B (zh) * 2021-11-01 2022-12-20 北京力控元通科技有限公司 一种数据存储和查询方法、装置、存储介质及电子设备
CN114116795A (zh) * 2021-11-01 2022-03-01 北京力控元通科技有限公司 一种数据存储和查询方法、装置、存储介质及电子设备
CN114816277A (zh) * 2022-06-30 2022-07-29 广东睿江云计算股份有限公司 文件数据块顺序性保障的控制方法及控制系统
CN114816277B (zh) * 2022-06-30 2022-11-11 广东睿江云计算股份有限公司 文件数据块顺序性保障的控制方法及控制系统
CN117082083A (zh) * 2023-08-30 2023-11-17 杭州浩联智能科技有限公司 一种基于分布式物联网架构的数据存储方法、装置及介质

Also Published As

Publication number Publication date
KR102240557B1 (ko) 2021-04-14
JP2020038623A (ja) 2020-03-12
KR20200027413A (ko) 2020-03-12
JP6778795B2 (ja) 2020-11-04
CN109254733B (zh) 2021-10-01

Similar Documents

Publication Publication Date Title
CN109254733A (zh) 用于存储数据的方法、装置和系统
US11740891B2 (en) Providing access to a hybrid application offline
US11146614B2 (en) Distributed computing on document formats
US10951702B2 (en) Synchronized content library
US8219562B1 (en) Efficient storage and retrieval for large number of data objects
US6848079B2 (en) Document conversion using an intermediate computer which retrieves and stores position information on document data
WO2017107414A1 (zh) 文件操作方法和装置
CN104881466B (zh) 数据分片的处理以及垃圾文件的删除方法和装置
CN110457281A (zh) 数据处理方法、装置、设备及介质
US8280895B2 (en) Multi-streamed method for optimizing data transfer through parallelized interlacing of data based upon sorted characteristics to minimize latencies inherent in the system
CN108629029A (zh) 一种应用于数据仓库的数据处理方法和装置
CN110019080A (zh) 数据访问方法和装置
CN108777685A (zh) 用于处理信息的方法和装置
CN112685223A (zh) 基于文件类型的文件备份
CN112866406A (zh) 一种数据存储方法、系统、装置、设备及存储介质
CN105677579A (zh) 缓存系统中的数据访问方法和系统
CN109213950A (zh) Iptv智能机顶盒浏览器应用的数据处理方法及装置
CN109150927A (zh) 用于文件存储系统的文件下发方法和装置
JP2010128812A (ja) データ管理システム及びデータ管理方法及びデータ管理プログラム
CN113434673A (zh) 数据处理方法和计算机可读存储介质、电子设备
CN112540776A (zh) 一种基于iso9660镜像分片去重技术的操作系统镜像管理方法
CN116566965B (zh) 一种ofd大文件的处理方法
CN115757300A (zh) 电子文件封装方法以及电子文件解封读取方法
CN115510000A (zh) 文件合并方法、装置、电子设备、存储介质及程序产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20190122

Assignee: Beijing Intellectual Property Management Co.,Ltd.

Assignor: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd.

Contract record no.: X2023110000099

Denomination of invention: Method, device, and system for storing data

Granted publication date: 20211001

License type: Common License

Record date: 20230822

EE01 Entry into force of recordation of patent licensing contract