CN113741822B - 数据存储方法、数据读取方法及相关装置 - Google Patents
数据存储方法、数据读取方法及相关装置 Download PDFInfo
- Publication number
- CN113741822B CN113741822B CN202111302898.4A CN202111302898A CN113741822B CN 113741822 B CN113741822 B CN 113741822B CN 202111302898 A CN202111302898 A CN 202111302898A CN 113741822 B CN113741822 B CN 113741822B
- Authority
- CN
- China
- Prior art keywords
- data
- attribute information
- read
- available type
- storage
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据存储方法、数据读取方法及相关装置,其中该数据存储方法包括:获取待存储数据,待存储数据包括本体数据以及与本体数据相关的属性信息数据;对待存储数据中的属性信息数据进行降解处理,保留可用类型的属性信息数据,删除无用类型的属性信息数据;将待存储数据中的本体数据存储至磁盘中;根据本体数据的数据标识、可用类型的属性信息数据、以及本体数据在磁盘中的存储位置,确定本体数据对应的元数据;并将本体数据对应的元数据存储至内存中。基于该种数据存储机制,能够提高服务器对于磁盘中存储的数据的读取效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及数据存储方法、数据读取方法及相关装置。
背景技术
随着计算机技术和互联网技术的迅速发展,如今各种应用程序层出不穷,用户使用应用程序时会产生对应的用户数据,如图片数据、文本数据、视频数据等。应用程序的后台服务器需要对这些用户数据进行相应地存储和管理,以便后续响应用户触发的数据读取操作,向用户反馈其所要读取的用户数据。
在后台服务器中,用户数据通常存储在磁盘中,用户通过应用程序客户端请求读取用户数据时,后台服务器需要从磁盘中读取该用户数据,进而将该用户数据反馈至对应的应用程序客户端。
在实际应用中,当同时存在大量用户通过应用程序客户端请求读取用户数据时,后台服务器的运行性能将会受到影响。其原因在于,从磁盘中读取数据是非常消耗磁盘IO(Input Output)性能的操作,而基于目前的用户数据存储机制,后台服务器普遍需要多次访问磁盘,才能从磁盘中读取到对应的用户数据;当需要后台服务器从磁盘中读取大量的用户数据时,其需要耗费较多的处理资源执行该数据读取操作,如此,一方面会产生较长的数据读取延时,另一方面,还可能影响该后台服务器所支持的其它功能的实现,这对用户来说体验较差。
可见,如何提高服务器对于磁盘中存储的用户数据的读取效率,是目前亟待解决的问题。
发明内容
本申请实施例提供了一种数据存储方法、数据读取方法及相关装置,能够提高服务器对于磁盘中存储的用户数据的读取效率。
有鉴于此,本申请第一方面提供了一种数据存储方法,所述方法包括:
获取目标对象使用目标应用程序时产生的待存储数据;所述待存储数据包括本体数据、以及与所述本体数据相关的属性信息数据;
对所述待存储数据中的所述属性信息数据进行降解处理,保留所述待存储数据中可用类型的属性信息数据,删除所述待存储数据中无用类型的属性信息数据;所述可用类型以及所述无用类型是根据所述目标应用程序的业务需求确定的;
将所述待存储数据中的所述本体数据存储至磁盘中;
根据所述本体数据的数据标识、所述可用类型的属性信息数据、以及所述本体数据在所述磁盘中的存储位置,确定所述本体数据对应的元数据;并将所述本体数据对应的元数据存储至内存中。
本申请第二方面提供了一种数据读取方法,所述方法包括:
接收数据读取请求;所述数据读取请求包括待读取数据的数据标识;
根据所述待读取数据的数据标识,在内存中查找所述待读取数据对应的元数据;所述待读取数据对应的元数据是根据所述待读取数据的数据标识、与所述待读取数据相关的可用类型的属性信息数据、以及所述待读取数据在磁盘中的存储位置确定的,所述可用类型的属性信息数据是对与所述待读取数据相关的各种属性信息数据进行降解处理保留下来的;
根据所述待读取数据对应的元数据,确定所述待读取数据在磁盘中的存储位置;
基于所述待读取数据在磁盘中的存储位置,从所述磁盘中读取所述待读取数据。
本申请第三方面提供了一种数据存储***,所述***包括路由服务器和数据存储服务器集群,所述数据存储服务器集群包括多个数据存储服务器;
所述路由服务器,用于为待存储数据分配对应的数据存储服务器,记录所述待存储数据中本体数据的数据标识与数据存储服务器之间的对应关系;以及,根据数据读取请求中包括的待读取数据的数据标识,确定用于存储所述待读取数据的数据存储服务器;
所述数据存储服务器,用于执行上述第一方面所述的数据存储方法或上述第二方面所述的数据读取方法。
本申请第四方面提供了一种数据存储装置,所述装置包括:
数据获取模块,用于获取目标对象使用目标应用程序时产生的待存储数据;所述待存储数据包括本体数据、以及与所述本体数据相关的属性信息数据;
属性降解模块,用于对所述待存储数据中的所述属性信息数据进行降解处理,保留所述待存储数据中可用类型的属性信息数据,删除所述待存储数据中无用类型的属性信息数据;所述可用类型以及所述无用类型是根据所述目标应用程序的业务需求确定的;
第一存储模块,用于将所述待存储数据中的所述本体数据存储至磁盘中;
第二存储模块,用于根据所述本体数据的数据标识、所述可用类型的属性信息数据、以及所述本体数据在所述磁盘中的存储位置,确定所述本体数据对应的元数据;并将所述本体数据对应的元数据存储至内存中。
本申请第五方面提供了一种数据读取装置,所述装置包括:
请求接收模块,用于接收数据读取请求;所述数据读取请求包括待读取数据的数据标识;
第一查找模块,用于根据所述待读取数据的数据标识,在内存中查找所述待读取数据对应的元数据;所述待读取数据对应的元数据是根据所述待读取数据的数据标识、与所述待读取数据相关的可用类型的属性信息数据、以及所述待读取数据在磁盘中的存储位置确定的,所述可用类型的属性信息数据是对与所述待读取数据相关的各种属性信息数据进行降解处理保留下来的;
定位模块,用于根据所述待读取数据对应的元数据,确定所述待读取数据在磁盘中的存储位置;
第二查找模块,用于基于所述待读取数据在磁盘中的存储位置,从所述磁盘中读取所述待读取数据。
本申请第六方面提供了一种计算机设备,所述设备包括处理器以及存储器:
所述存储器用于存储计算机程序;
所述处理器用于根据所述计算机程序,执行上述第一方面所述的数据存储方法或上述第二方面所述的数据读取方法的步骤。
本申请第七方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行上述第一方面所述的数据存储方法或上述第二方面所述的数据读取方法的步骤。
本申请第八方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行第一方面所述的数据存储方法或上述第二方面所述的数据读取方法的步骤。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例提供了一种数据存储方法和数据读取方法,采用该数据存储方法存储用户使用应用程序时产生的待存储数据时,会对该待存储数据中的属性信息数据进行降解处理,保留可用类型的属性信息数据(与应用程序实际业务相关的属性信息数据),删除无用类型的属性信息数据(与应用程序实际业务无关的属性信息数据);进而,根据该待存储数据中本体数据的数据标识、该本体数据在磁盘中的存储位置、以及上述可用类型的属性信息数据,生成该本体数据对应的元数据。本申请实施例通过对待存储数据中的属性信息数据进行降解处理,可以大幅减少生成元数据时所利用的属性信息数据,从而可以减小所生成的元数据占用的存储空间;在元数据所占用的存储空间较小的情况下,服务器可以利用其内存实现对所有元数据的存储。相应地,当需要读取存储在磁盘中的本体数据时,服务器可以先在内存中找到该本体数据对应的元数据,并根据该元数据确定该本体数据在磁盘中的存储位置,进而基于该存储位置一次性地从磁盘中读取该本体数据。如此,大幅减少了执行数据读取操作时对于磁盘的访问次数,可以有效地提高对于存储在磁盘中的数据的读取效率。
附图说明
图1为本申请实施例提供的一种数据存储***的工作原理示意图;
图2为本申请实施例提供的另一种数据存储***的工作原理示意图;
图3为本申请实施例提供的数据存储方法的流程示意图;
图4为本申请实施例提供的存储图片数据的实现过程示意图;
图5为本申请实施例提供的数据读取方法的流程示意图;
图6为本申请实施例提供的游戏后台数据存储***的实现架构示意图;
图7为本申请实施例提供的一种数据存储装置的结构示意图;
图8为本申请实施例提供的另一种数据存储装置的结构示意图;
图9为本申请实施例提供的又一种数据存储装置的结构示意图;
图10为本申请实施例提供的一种数据读取装置的结构示意图;
图11为本申请实施例提供的另一种数据读取装置的结构示意图;
图12为本申请实施例提供的服务器的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了提高服务器对于磁盘中存储的数据的读取效率,本申请实施例提供了一种数据存储方法和数据读取方法。
在本申请实施例提供的数据存储方法中,先获取目标对象使用目标应用程序时产生的待存储数据,该待存储数据包括本体数据、以及与该本体数据相关的属性信息数据。然后,对该待存储数据中的属性信息数据进行降解处理,保留该待存储数据中可用类型的属性信息数据,删除该待存储数据中无用类型的属性信息数据;此处的可用类型和无用类型均是根据目标应用程序的业务需求确定的。将待存储数据中的本体数据存储至磁盘中;进而,根据该本体数据的数据标识、上述可用类型的属性信息数据、以及该本体数据在磁盘中的存储位置,确定该本体数据对应的元数据;并将该本体数据对应的元数据存储至内存中。
上述数据存储方法通过对待存储数据中的属性信息数据进行降解处理,大幅减少了生成元数据时所利用的属性信息数据,从而相应地减小了所生成的元数据占用的存储空间;在元数据所占用的存储空间较小的情况下,服务器可以利用其内存实现对所有元数据的存储。由于访问内存所需耗费的处理资源远少于访问磁盘所需耗费的处理资源,且内存访问速度远大于磁盘访问速度,因此,利用内存存储元数据,可以使服务器快速定位所要访问的本体数据在磁盘中的存储位置,进而可以基于所定位的存储位置,实现一次性地访问磁盘读取本体数据。此外,由于对属性信息数据进行降解处理时,保留的属性信息数据是与实际业务相关的属性信息数据,删除的属性信息数据是与实际业务无关的属性信息数据,因此,可以保证基于降解后的属性信息数据生成的元数据不会影响应用程序实际业务的实现。
在本申请实施例提供的数据读取方法中,接收到包括待读取数据的数据标识的数据读取请求后,根据该待读取数据的数据标识,在内存中查找该待读取数据对应的元数据,该元数据即是在上述数据存储过程中生成的。然后,根据该待读取数据对应的元数据,确定该待读取数据在磁盘中的存储位置。进而,基于该待读取数据在磁盘中的存储位置,从磁盘中读取该待读取数据。
上述数据读取方法基于存储在内存中的元数据,可以快速地定位待读取数据在磁盘中的存储位置,进而基于该存储位置实现一次性地访问磁盘读取数据。相比相关技术中的数据读取机制,本申请实施例提供的数据读取方法大幅减少了执行数据读取操作时对于磁盘的访问次数,从而有效地提高了对于存储在磁盘中的数据的读取效率;即使在服务器需要同时从磁盘中读取大量数据的情况下,由于读取每个数据所需执行的磁盘访问次数较少,因此也不会使服务器耗费大量的处理资源,不会对服务器的运行性能产生影响。
应理解,本申请实施例提供的数据存储方法和数据读取方法可以应用于目标应用程序的后台服务器,该服务器可以用于管理用户使用该目标应用程序时产生的数据,支持数据的写入和读取。在实际应用中,该服务器可以是独立的物理服务器,也可以是由多个物理服务器构成的服务器集群或分布式***,还可以是提供云存储服务的云服务器。此外,该服务器可以是区块链上的节点,相应地,本申请实施例中的本体数据及其对应的元数据即是存储在区块链中的数据。
为了便于理解本申请实施例提供的数据存储方法和数据读取方法,下面先对该数据存储方法和数据读取方法的应用场景进行介绍。在一种可能的实现方式中,本申请实施例提供的数据存储方法和数据读取方法具体可以应用于本申请实施例提供的数据存储***,下面对本申请实施例提供的数据存储***进行介绍,同时介绍本申请实施例提供的数据存储方法和数据读取方法在该数据存储***的应用方式。
参见图1,图1为本申请实施例提供的数据存储***的工作原理示意图。如图1所示,该数据存储***中包括路由服务器110和数据存储服务器集群120,数据存储服务器集群120中包括多个数据存储服务器121、122、……、12n;路由服务器110与数据存储服务器集群120中的各数据存储服务器可以通过网络进行通信。
应理解,本申请实施例提供的数据存储***是目标应用程序的后台数据存储***,该数据存储***中的服务器可以与运行有目标应用程序的终端设备130进行通信。即,路由服务器110与终端设备130可以通过网络通信,数据存储服务器集群120中的各数据存储服务器与终端设备130可以通过网络通信。
在本申请实施例提供的数据存储***中,路由服务器110用于为待存储数据分配对应的数据存储服务器,并记录该待存储数据中本体数据的数据标识与该数据存储服务器之间的对应关系。此外,路由服务器110还用于根据数据读取读取请求中包括的待读取数据的数据标识,确定用于存储该待读取数据的数据存储服务器。
示例性的,路由服务器110获取到用户通过终端设备130上运行的目标应用程序产生的待存储数据后,可以为该待存储数据中的本体数据配置数据标识,并且基于使数据存储服务器集群120中的各数据存储服务器负载均衡的原则,为该待存储数据分配对应的数据存储服务器。同时存储该本体数据的数据标识与该数据存储服务器之间的对应关系,具体的,可以存储该本体数据的数据标识与该数据存储服务器的IP地址之间的对应关系。进而,路由服务器110可以将该待存储数据传输给对应的数据存储服务器,以使该数据存储服务器对该待存储数据执行数据存储处理。
示例性的,路由服务器110接收到用户通过终端设备130上运行的目标应用程序发起的数据读取请求后,可以从该数据读取请求中提取出其携带的待读取数据的数据标识,然后,根据自身存储的本体数据的数据标识与数据存储服务器之间的对应关系,确定用于存储该待读取数据的数据存储服务器。进而,路由服务器110可以将该数据存储服务器的IP地址反馈给终端设备130,以使终端设备向对应的数据存储服务器发送该数据读取请求;或者,路由服务器110也可以直接将该数据读取请求转发给对应的数据存储服务器,以使该数据存储服务器读取该待读取数据,并将其读取出的待读取数据通过路由服务器110反馈给终端设备130。
在本申请实施例提供的数据存储***中,数据存储服务器集群120中的每个数据存储服务器,可以用于执行本申请实施例提供的数据存储方法以及数据读取方法。
示例性的,数据存储服务器接收到路由服务器110传输来的待存储数据后,可以对该待存储数据中的属性信息数据进行降解处理,以保留该待存储数据中可用类型的属性信息数据,删除该待存储数据中无用类型的属性信息数据;此处的可用类型以及无用类型均是根据目标应用程序的实际业务需求确定的,例如,可以将在目标应用程序的后续业务中会起到重要作用的属性类型作为可用类型,将在目标应用程序的后续业务中不会起作用、或者所起作用的重要度较低的属性类型作为无用类型。同时,数据存储服务器可以将该待存储数据中的本体数据存储在磁盘中。
进而,数据存储服务器可以根据该待存储数据中本体数据的数据标识、经上述降解处理后保留的可用类型的属性信息数据、以及该待存储数据中的本体数据在磁盘中的存储位置,生成该本体数据对应的元数据,并将该本体数据对应的元数据存储至内存中。
下文将通过方法实施例对本申请提供的数据存储方法进行详细介绍,应理解,该数据存储服务器可以用于执行下述方法实施例介绍的数据存储方法中的任一种实现方式,即上文介绍的数据存储服务器执行的数据存储操作仅为示例,可以结合下文方法实施例中介绍的数据存储方法深入地了解该数据存储服务器实际执行的数据存储操作。
示例性的,数据存储服务器接收到终端设备130发送的数据读取请求、或者路由服务器110转发的数据读取请求后,可以从该数据读取请求中获取待读取数据的数据标识。然后,根据该待读取数据的数据标识,在其内存中查找该待读取数据对应的元数据;应理解,该待读取数据对应的元数据即是在上文介绍的数据存储过程中生成的,即该待读取数据对应的元数据是数据存储服务器根据该待读取数据的数据标识、与该待读取数据相关的可用类型的属性信息数据、以及该待读取数据在磁盘中的存储位置生成的,其中,与该待读取数据相关的可用类型的属性信息数据是对与该待读取数据相关的各属性信息数据进行降解处理保留下来的。
数据存储服务器查找到待读取数据对应的元数据后,可以根据该待读取数据对应的元数据,确定该待读取数据在磁盘中的存储位置。进而,数据存储服务器可以基于该待读取数据在磁盘中的存储位置,相应地从磁盘中读取该待读取数据,并将所读取出的待读取数据直接返回给终端设备130,或者通过路由服务器110返回给终端设备130。
下文将通过方法实施例对本申请提供的数据读取方法进行详细介绍,应理解,该数据存储服务器可以用于执行下述方法实施例介绍的数据读取方法中的任一种实现方式,即上文介绍的数据存储服务器执行的数据读取操作仅为示例,可以结合下文方法实施例中介绍的数据读取方法深入地了解该数据存储服务器实际执行的数据读取操作。
可选的,在图1所示的数据存储***的基础上,该数据存储***还可以包括背景服务器140;参见图2,图2为包括背景服务器140的数据存储***的工作原理示意图。
在该数据存储***中,背景服务器140用于根据存储在数据存储服务器内存中的元数据包括的状态数据,控制数据存储服务器对其存储的数据执行清除操作。即,数据存储服务器中存储的元数据可以包括状态数据,且该状态数据用于表征用户是否针对其所属的元数据对应的本体数据触发执行删除操作,在该种情况下,背景服务器140可以根据各数据存储服务器的内存中存储的各元数据各自包括的状态数据,确定待删除数据;进而,通知各数据存储服务器删除其中的待删除数据。
示例性的,如图2所示,在本申请实施例提供的数据存储***中,假设数据存储服务器12i检测到用户针对其存储的目标数据(即本体数据3)触发执行了删除操作,那么该数据存储服务器可以在其内存中查找到该目标数据对应的元数据(即元数据3),并对该元数据中的状态数据进行调整,以使该状态数据表征其所属的元数据对应的本体数据已被触发执行删除操作。例如,假设状态数据包括0和1,其中,0表示其所属的元数据对应的本体数据未被触发执行删除操作,1表示其所属的元数据对应的本体数据已被触发执行删除操作,若数据存储服务器检测到用户针对目标数据触发执行删除操作,则可以将该目标数据对应的元数据中的状态数据由0调整为1。此时,数据存储服务器暂不针对该目标数据执行实际的删除操作。
背景服务器140可以周期性地检测各数据存储服务器存储的元数据包括的状态数据,若元数据中包括的状态数据表征该元数据对应的本体数据已被触发执行删除操作,则背景服务器140可以将该本体数据作为待删除数据,并记录该待删除数据的数据标识。进而,背景服务器140可以将待删除数据的数据标识发送给对应的数据存储服务器,以控制该数据存储服务器在特定时段(如应用程序的使用低谷时段)针对该待删除数据执行实际的删除操作,即删除磁盘中存储的该待删除数据,回收该待删除数据在磁盘中占用的存储空间,并且删除内存中存储的该待删除数据对应的元数据,回收该待删除数据对应的元数据在磁盘中占用的存储空间。
需要说明的是,本申请实施例通过在元数据中增设状态数据,可以实现对于本体数据的延时删除。之所以如此设置,是因为在实际应用中用户经常在应用程序的使用高峰期触发批量删除数据的操作,若数据存储服务器及时响应用户触发的数据删除操作,实时地删除磁盘中存储的数据,容易使数据存储服务器因执行该数据删除操作而耗费大量的处理资源,影响其所支持的其它功能的实现;而延时删除用户所要删除的数据,可以根据实际需求选择在应用程序的使用低谷期触发执行数据删除操作,如此,可以有效地避免对数据存储服务器所支持的其它功能的实现产生影响。
应理解,在实际应用中,本申请实施例提供的数据存储方法和数据读取方法除了可以应用于图1所示的数据存储***中外,还可以应用于其它场景,例如,在目标应用程序的后台部署比较简单的情况下,可以直接利用该目标应用程序的后台服务器执行本申请实施例提供的数据存储方法和数据读取方法,而无需部署路由服务器、背景服务器等,在此不对本申请实施例提供的数据存储方法和数据读取方法做任何限定。
下面通过方法实施例对本申请提供的数据存储方法进行详细介绍。
参见图3,图3为本申请实施例提供的数据存储方法的流程示意图。为了便于描述,下述实施例以该数据存储方法的执行主体为服务器为例进行介绍,如图3所示,该数据存储方法包括以下步骤:
步骤301:获取目标对象使用目标应用程序时产生的待存储数据;所述待存储数据包括本体数据、以及与所述本体数据相关的属性信息数据。
在实际应用中,目标用户(也即目标对象)使用目标应用程序时会产生待存储数据,支持该目标应用程序运行的终端设备可以将该目标用户产生的待存储数据通过网络发送给服务器,以使服务器获取到该待存储数据,并将该待存储数据存储至其存储空间中。
需要说明的是,本申请实施例中的目标应用程序可以是任一种支持用户交互的应用程序,如社交应用程序、游戏应用程序、媒体数据播放应用程序、购物应用程序等等,本申请在此不对该目标应用程序做任何限定。
本申请实施例中的待存储数据是用户使用目标应用程序时产生的、需要存储的数据。例如,用户使用游戏应用程序时上传的头像图片、想要与游戏社区内的其它用户分享的图片等;又例如,用户使用社交应用程序时产生的聊天文本、聊天图像等;再例如,用户使用媒体数据播放应用程序时上传的图片、视频、音频等。本申请在此不对待存储数据的产生方式以及数据类型做任何限定。
待存储数据中通常包括本体数据以及与本体数据相关的属性信息数据,其中,本体数据即是用户使用目标应用程序时产生的数据实体,与本体数据相关的属性信息数据即是用于承载该数据实体的属性信息的数据。以待存储数据为图片数据为例,该待存储数据中包括的本体数据即是该图片本身,该待存储数据中包括的属性信息数据即是用于承载该图片的属性信息的数据,该图片的属性信息可以包括但不限于创建时间、修改时间、图片占用的存储空间的大小、创建用户、创建用户所属的用户组、图片读写权限。以待存储数据为文本数据为例,该待存储数据中包括的本体数据即是该文本本身,该待存储数据中包括的属性信息数据即是用于承载该文本的属性信息的数据,该文本的属性信息可以包括但不限于创建时间、修改时间、文本占用的存储空间的大小、创建用户、创建用户所属的用户组、文本读写权限。应理解,不同类型的待存储数据中包括的本体数据和属性信息数据可能不同,本申请在此不对待存储数据中包括的本体数据的类型、以及属性信息数据的类型做任何限定。
步骤302:对所述待存储数据中的所述属性信息数据进行降解处理,保留所述待存储数据中可用类型的属性信息数据,删除所述待存储数据中无用类型的属性信息数据;所述可用类型以及所述无用类型是根据所述目标应用程序的业务需求确定的。
服务器获取到待存储数据后,可以对该待存储数据包括的属性信息数据进行降解处理,以保留该待存储数据中可用类型的属性信息数据,删除该待存储数据中无用类型的属性信息数据。需要说明的是,降解处理本质上是对待存储数据中包括的所有属性信息数据进行过滤筛选处理,从而实现将待存储数据中可用类型的属性信息数据保留下来、无用类型的属性信息数据过滤出去的效果。具体进行降解处理时,服务器可以针对待存储数据中的各属性信息数据,判断其所属的类型是否属于预设的可用类型,若是,则将该属性信息数据保留下来,若否,则确定该属性信息数据属于无用类型的属性信息数据,进而将该属性信息数据删除掉。
需要说明的是,上述可用类型和无用类型均是根据目标应用程序的实际业务需求确定的。在目标应用程序的实际业务中能够起到重要作用的属性信息类型为可用类型,在目标应用程序的实际业务中不会起作用、或者所起的作用不太重要的属性信息类型为无用类型。
以目标应用程序为大型多人在线角色扮演游戏(Massive Multiplayer OnlineRole-Playing Game,MMORPG)为例,在MMORPG中,玩家上传的头像图片、在游戏社区内分享的图片等通常包括以下属性信息数据:创建时间、图片占用的存储空间的大小、创建用户、创建用户所属的用户组、图片读写权限。其中,图片占用的存储空间的大小在后续的数据读取操作中能够辅助定位图片在磁盘中的存储位置;图片读写权限能够限制可对该图片触发读写操作的用户;二者在MMORPG的实际业务中均能起到重要作用,因此,图片占用的存储空间的大小与图片读写权限均属于可用类型的属性信息数据。而根据MMORPG的实际业务需求,图片的创建时间、创建用户和创建用户所属的用户组在实际业务中均不会起到重要作用,因此,图片的创建时间、创建用户和创建用户所属的用户组均属于无用类型的属性信息数据。
应理解,对于不同的目标应用程序,根据实际业务需求设定的可用类型和无用类型可能有所区别,本申请在此不对可用类型和无用类型做具体限定。
步骤303:将所述待存储数据中的所述本体数据存储至磁盘中。
服务器获取到待存储数据后,可以将该待存储数据中的本体数据存储至磁盘中。在实际应用中,服务器可以包括至少一个磁盘,每个磁盘均可以被划分为多个磁盘页块,每个磁盘页块中可以保存多个用户数据,且每个磁盘页块都具有唯一的标识BlockID;服务器存储本体数据时,可以将该本体数据存储至具有空闲存储空间的磁盘页块,同时记录该本体数据所在的磁盘页块的标识、以及该本体数据在该磁盘页块中的偏移量Offset。
需要说明的是,在实际应用中,服务器可以先执行步骤302、后执行步骤303,也可以先执行步骤303、后执行步骤302,还可以同时执行步骤302和步骤303,本申请在此不对步骤302和步骤303的执行顺序做任何限定。
步骤304:根据所述本体数据的数据标识、所述可用类型的属性信息数据、以及所述本体数据在所述磁盘中的存储位置,确定所述本体数据对应的元数据;并将所述本体数据对应的元数据存储至内存中。
服务器完成对于待存储数据中属性信息数据的降解处理、以及将待存储数据中的本体数据写入磁盘中后,可以进一步构建用于描述该本体数据的元数据,进而将所构建的元数据存储至服务器的内存中。需要说明的是,元数据又可以被称为中介数据或中继数据,其是用于描述数据的数据;在本申请实施例中,本体数据对应的元数据即是用于描述该本体数据的数据,该元数据具体可以描述与该本体数据相关的属性信息(与目标应用程序的实际业务相关的可用类型的属性信息)、以及该本体数据在磁盘中的存储位置。
具体的,服务器可以利用本体数据的数据标识、经降解处理后保留下来的属性信息数据、以及本体数据在磁盘中的存储位置,构建该本体数据对应的元数据,进而,将该本体数据对应的元数据存储至内存中。上述本体数据的数据标识通常是目标应用程序的后台服务器接收到待存储数据后,为该待存储数据分配的;即目标应用程序的后台服务器接收到待存储数据后,可以为该待存储数据分配对唯一的数据标识,该数据标识也被作为该待存储数据中本体数据的数据标识。元数据通常被存储在内存中的逻辑页块上,逻辑页块被划分为多个逻辑节Segment,每个逻辑节Segment可以保存一个本体数据对应的元数据。
需要说明的是,服务器的内存相比磁盘具有更高的数据读取效率,通常情况下,服务器从磁盘中读取1MB的图片数据需要耗费大约30毫秒的时间,而服务器从内存中读取1MB的图片数据仅需耗费大约250微秒的时间,可见,内存的数据读取效率高出磁盘的数据读取效率100多倍。但是内存相比磁盘的造价成本也更高,因此,服务器中内存的存储空间通常远小于磁盘的存储空间。本申请实施例为了尽可能少地执行从磁盘中读取数据的操作,将本体数据对应的元数据存储至内存中,由于本申请实施例预先已对本体数据相关的属性信息数据进行了降解处理,仅保留了其中可用类型的属性信息数据,因此,可以保证所构建的本体数据对应的元数据所占用的存储空间较小,使得服务器可以利用其内存存储各本体数据各自对应的元数据。
在一种可能的实现方式中,服务器可以采用以下方式确定本体数据对应的元数据:根据本体数据的数据标识、可用类型的属性信息数据、本体数据所在的磁盘页块的标识、以及本体数据在磁盘页块中的偏移量,确定该本体数据对应的元数据;此处可用类型的属性信息数据包括本体数据占用的存储空间大小。
正如上文所介绍的,服务器将本体数据存储至磁盘中时,会将本体数据存储至该磁盘中某个具有空闲空间的磁盘页块中,并相应地记录该磁盘页块的标识BlockID、以及该本体数据在该磁盘页块中的偏移量Offset。相应地,构建该本体数据对应的元数据时,服务器可以利用该本体数据的数据标识、经降解处理后保留下来的与该本体数据相关的可用类型的属性信息数据、该本体数据所在的磁盘页块的标识BlockID、以及该本体数据在该磁盘页块中的偏移量Offset,构建该本体数据对应的元数据;同时,需要保证所保留的可用类型的属性信息数据中包括该本体数据所占用的存储空间大小Size。
图4为基于上述元数据构建方式存储图片数据的实现过程示意图,如图4所示,经降解处理后保留的属性信息数据仅包括该图片占用的存储空间大小,相应地,所构建的该图片数据对应的元数据中包括该图片的图片标识、该图片所在的磁盘页块的标识、该图片在该磁盘页块中的偏移量、以及该图片占用的存储空间大小,该元数据存储在内存中逻辑页块上的逻辑节中;该图片的本体数据存储在磁盘的磁盘页块中。
通过上述方式构建的元数据在后续的数据读取过程中,能够帮助服务器快速地定位本体数据在磁盘中的存储位置。即当服务器需要读取某本体数据时,该服务器可以直接在内存中查找到该本体数据对应的元数据,并根据该元数据中包括的本体数据所在的磁盘页块的标识、本体数据在磁盘页块中的偏移量、以及本体数据所占用的存储空间大小,定位出该本体数据在磁盘中具体的存储位置;进而,服务器可以依据该存储位置,通过一次磁盘访问直接获得所要读取的本体数据。
可选的,为了进一步降低所构建的元数据占用的存储空间,本申请实施例还可以对部分可用类型的属性信息数据进行数据转换处理,以得到所占用的存储空间更小的属性信息数据表示;进而,基于经过数据转换处理得到的属性信息数据构建元数据。
即,服务器可以在经降解处理保留下来的可用类型的属性信息数据中,确定第一可用类型的属性信息数据和第二可用类型的属性信息数据。针对该第一可用类型的属性信息数据,服务器可以基于该第一可用类型对应的数据转换方式,将该第一可用类型的属性信息数据转换为该第一可用类型的目标属性信息数据;此处第一可用类型的目标属性信息数据占用的存储空间小于第一可用类型的属性信息数据占用的存储空间。进而,根据本体数据的数据标识、第一可用类型的目标属性信息数据、第二可用类型的属性信息数据、以及本体数据在磁盘中的存储位置,确定该本体数据对应的元数据。
具体的,服务器可以预先设定第一可用类型和第二可用类型。对于第一可用类型的属性信息数据,服务器可以采用对应的数据转换方式对其进行数据转换处理,以得到更优(即占用存储空间更小)的属性信息数据表达形式;示例性的,第一可用类型可以为时间,时间类型的属性信息数据通常以物理时间的形式表达,如2021-12-12 00:00:00,此种表达形式的属性信息数据通常会占用较大的存储空间,因此,可以对其进行数据转换处理;示例性的,第一可用类型也可以为处理权限,处理权限的属性信息数据即是用户处理权限描述数据,字节形式的用户处理权限描述数据通常也会占用较大的存储空间,因此,也可以对其进行数据转换处理;当然,第一可用类型还可以为其它类型,本申请在此不对第一可用类型的属性信息数据做任何限定。对于第二可用类型的属性信息数据,由于其本身占用的存储空间已足够小,因此无需对其进行进一步的数据转换处理。
基于上述可用类型的划分,本申请实施例构建本体数据对应的元数据时,可以先采用对应的数据转换方式,对第一可用类型的属性信息数据进行数据转换处理,得到该第一可用类型的目标属性信息数据;该第一可用类型的目标属性信息数据占用的存储空间小于该第一可用类型的属性信息数据占用的存储空间。进而,服务器可以利用本体数据的数据标识、该第一可用类型的目标属性信息数据、第二可用类型的属性信息数据、以及该本体数据在磁盘中的存储位置,构建该本体数据对应的元数据。
作为一种示例,当第一可用类型为时间,第一可用类型的属性信息数据为物理时间时,服务器可以基于该物理时间与参照时间之间的时间差,将该物理时间转换为对应的时间戳,作为目标属性信息数据。例如,假设第一可用类型的属性信息数据为图片的创建时间2021-12-12 00:00:00,服务器可以将2021-01-01 00:00:00作为参照时间,根据该创建时间与该参照时间之间的时间差即29808000秒,将该创建时间转换为时间戳29808000,该时间戳29808000即为时间类型的目标属性信息数据;通过对比可以发现,创建时间2021-12-12 00:00:00中包括19个字符,存储这19个字符需要耗费19字节的存储空间,而时间戳29808000只需要4个字节的整数即可表示,可见通过上述数据转换处理,大大减少了存储时间属性信息所需占用的存储空间。
作为另一种示例,当第一可用类型为处理权限,第一可用类型的属性信息数据为对象处理权限描述数据时,服务器可以基于预设的权限信息与比特位之间的对应关系,将该对象处理权限描述数据转换为对应的比特位,作为目标属性信息数据。例如,假设对象处理权限描述数据为“用户A没有权限读写图片数据a”,服务器预设的权限信息与比特位之间的对应关系为无权限表示为0、有权限表示为1,基于此,服务器可以将该对象处理权限描述数据转换为“用户标识A 0”,作为目标属性信息数据;通过对比可以发现,相比直接将对象处理权限描述数据转换为对应的字符表示,上述数据转换处理后得到的目标属性信息数据所占用的存储空间大幅减小。
应理解,对于其它的第一可用类型,服务器也可以采用对应的数据转换方式,对该第一可用类型的属性信息数据进行转换处理,本申请在此不对所采用的数据转换方式做任何限定。
可选的,在本体数据对应的元数据中还可以包括状态数据,该状态数据用于表征对象是否针对该本体数据触发执行了删除操作,即该状态数据用于表征该本体数据是否被触发执行了删除操作。在该种情况下,服务器可以在目标应用程序的使用低谷时段,针对内存中的每个元数据,判断该元数据中的状态数据是否表征对象针对该元数据对应的本体数据触发执行了删除操作,若是,则确定该元数据对应的本体数据为待删除数据;进而,删除磁盘中的待删除数据,并回收该待删除数据在磁盘中占用的存储空间;删除内存中该待删除数据对应的元数据,并回收该待删除数据对应的元数据在内存中占用的存储空间。
具体的,服务器构建本体数据对应的元数据时,可以在该元数据中增设用于承载状态数据Flag的字段,通过该状态数据Flag表示元数据对应的本体数据是否被用户触发执行删除操作;例如,当状态数据为0时,表示其所属的元数据对应的本体数据未被用户触发执行删除操作,当状态数据为1时,表示其所属的元数据对应的本体数据已被用户触发执行删除操作。
若服务器检测到其中存储的某本体数据被用户触发执行了删除操作,则可以将该本体数据对应的元数据中包括的状态数据设置为1,以表示该元数据对应的本体数据已被用户触发执行了删除操作,但是服务器可以暂缓执行对该本体数据的实际删除操作。
在目标应用程序的使用低谷时段,服务器可以针对其内存中存储的每个元数据,判断其中的状态数据是否表征用户已针对该元数据对应的本体数据触发执行了删除操作,若是,则可以将该元数据对应的本体数据作为待删除数据。进而,服务器可以针对该待删除数据执行实际删除操作,即删除磁盘中存储的该待删除数据,回收该待删除数据在磁盘中占用的存储空间,并且删除内存中存储的该待删除数据对应的元数据,回收该待删除数据对应的元数据在磁盘中占用的存储空间。
如此,通过在元数据中增设状态数据,可以实现对于本体数据的延时删除。考虑到实际应用中用户经常在目标应用程序的使用高峰时段,触发批量删除数据的操作,若服务器及时响应用户触发的该数据删除操作,实时删除磁盘中存储的数据,容易使自身因执行该数据删除操作耗费大量的处理资源,进而影响其所支持的其它功能的实现。而延时删除用户所要删除的数据,可以选择在目标应用程序的使用低谷时段触发执行数据删除操作,如此,可以有效地避免对数据存储服务器所支持的其它功能的实现产生影响,使得服务器的数据删除压力分散到使用低谷时段。
可选的,本申请实施例还可以监测磁盘中存储的各本体数据各自对应的访问频率;进而,将所对应的访问频率满足预设条件的本体数据,存储至内存中。
示例性的,针对磁盘中存储的各本体数据,服务器可以根据各本体数据各自的被访问情况,确定各本体数据各自对应的访问频率。若本体数据对应的访问频率高于预设频率阈值,则说明该本体数据被用户频繁访问,为了提高用户对于该本体数据的读取效率,避免每次访问该本体数据时均执行磁盘读取操作,服务器可以在内存Cache中存储该本体数据,并且在内存中存储该本体数据的数据标识与该本体数据在该内存中的存储位置之间的对应关系。
如此,对于此类用户频繁访问的本体数据,服务器可以直接从内存中读取,无需执行磁盘读取操作,可以大幅提高此类本体数据的读取效率,从而也提高用户的使用体验。
上述数据存储方法通过对待存储数据中的属性信息数据进行降解处理,大幅减少了生成元数据时所利用的属性信息数据,从而相应地减小了所生成的元数据占用的存储空间;在元数据所占用的存储空间较小的情况下,服务器可以利用其内存实现对所有元数据的存储。由于访问内存所需耗费的处理资源远少于访问磁盘所需耗费的处理资源,且内存访问速度远大于磁盘访问速度,因此,利用内存存储元数据,可以使服务器快速定位所要访问的本体数据在磁盘中的存储位置,进而可以基于所定位的存储位置,实现一次性地访问磁盘读取本体数据。此外,由于对属性信息数据进行降解处理时,保留的属性信息数据是与实际业务相关的属性信息数据,删除的属性信息数据是与实际业务无关的属性信息数据,因此,可以保证基于降解后的属性信息数据生成的元数据不会影响应用程序实际业务的实现。
基于上述数据存储方法中的数据存储机制,本申请实施例还提供了对应的数据读取方法,通过该数据读取方法,可以在上述数据存储机制的基础上实现对于磁盘中存储的数据的快速读取。下面通过方法实施例对本申请提供的数据读取方法进行详细介绍。
参见图5,图5为本申请实施例提供的数据读取方法的流程示意图。为了便于描述,下述实施例仍以该数据读取方法的执行主体为服务器为例进行介绍,如图5所示,该数据读取方法包括以下步骤:
步骤501:接收数据读取请求;所述数据读取请求包括待读取数据的数据标识。
在实际应用中,用户需要读取某待读取数据时,可以通过目标应用程序发起数据读取请求,该数据读取请求中携带有该待读取数据的数据标识,并通过支持该目标应用程序运行的终端设备将该数据读取请求发送给服务器。应理解,上述待读取数据通常指的是本体数据。
例如,假设用户想要通过MMORPG客户端读取其此前上传的图片,则用户可以通过MMORPG客户端发起针对该图片的数据读取请求,该数据读取请求中应携带该图片的数据标识;相应地,支持该MMORPG客户端运行的终端设备可以将该数据读取请求发送给服务器。
步骤502:根据所述待读取数据的数据标识,在内存中查找所述待读取数据对应的元数据;所述待读取数据对应的元数据是根据所述待读取数据的数据标识、与所述待读取数据相关的可用类型的属性信息数据、以及所述待读取数据在磁盘中的存储位置确定的,所述可用类型的属性信息数据是对与所述待读取数据相关的各种属性信息数据进行降解处理保留下来的。
服务器接收到数据读取请求后,可以从该数据读取请求中提取出待读取数据的数据标识,进而,根据该待读取数据的数据标识,在其内存中查找该待读取数据对应的元数据。
正如上文图3所示实施例中所介绍的,服务器存储待存储数据时,可以构建该待存储数据中本体数据对应的元数据,并将该元数据存储至内存中;该元数据可以包括本体数据的数据标识、与本体数据相关的可用类型的属性信息数据、以及本体数据在磁盘中的存储位置。相应地,服务器执行数据读取操作时,可以根据待读取数据的数据标识,在服务器的内存中相应地查找到该待读取数据对应的元数据,该待读取数据对应的元数据本质上即是内存中存储的包括该待读取数据的数据标识的元数据。
可选的,若服务器可以针对频繁访问的本体数据,将其存储至内存中,则服务器执行数据读取操作时,可以先根据待读取数据的数据标识,确定内存中是否存储有该待读取数据;若内存中存储有该待读取数据,则可以直接从内存中读取该待读取数据;若内存中未存储该待读取数据,则需要执行上述根据待读取数据的数据标识,在内存中查找待读取数据对应的元数据的步骤。
正如上文图3所示实施例中所介绍的,对于访问频率高于预设频率阈值的本体数据,服务器可以在其内存Cache中存储该本体数据;相应地,服务器执行数据读取操作时,可以优先查找其内存中是否存储有待读取数据。具体的,服务器可以在该内存中存储的对应关系列表(用于记录存储在内存中的本体数据与其在该内存中的存储位置之间的对应关系)中查找是否存在待读取数据的数据标识;若存在,则说明该内存中存储有该待读取数据,相应地,服务器可以根据该对应关系列表中记录的该待读取数据在该内存中的存储位置,从该内存中读取该待读取数据,而无需继续执行步骤502至步骤504;若不存在,则说明该内存中没有存储该待读取数据,此时服务器需要正常执行步骤502至步骤504。
如此,对于此类用户频繁访问的本体数据,服务器可以直接从内存缓存空间中读取,无需执行磁盘读取操作,可以大幅提高此类本体数据的读取效率,从而也提高用户的数据读取体验。
步骤503:根据所述待读取数据对应的元数据,确定所述待读取数据在磁盘中的存储位置。
服务器在内存中查找到待读取数据对应的元数据后,可以进一步根据该待读取数据对应的元数据,确定该待读取数据在磁盘中的存储位置。
正如上文图3所示实施例中所介绍的,服务器构建本体数据对应的元数据时,可以根据本体数据的数据标识、与本体数据相关的可用类型的属性信息数据、以及本体数据在磁盘中的存储位置,构建该本体数据对应的元数据;因此,服务器在内存中查找到待读取数据对应的元数据后,即可根据该元数据中承载的信息,确定该待读取数据在磁盘中的存储位置,
在一种可能的实现方式中,在服务器存储本体数据时,根据该本体数据的数据标识、与该本体数据相关的可用类型的属性信息数据、该本体数据所在的磁盘页块的标识、以及该本体数据在该磁盘页块中的偏移量构建该本体数据对应的元数据,且上述可用类型的属性信息数据包括该本体数据占用的存储空间大小的情况下,服务器可以通过以下方式,根据待读取数据对应的元数据,确定该待读取数据在磁盘中的存储位置:
解析待读取数据对应的元数据,得到该待读取数据所在的磁盘页块的标识、该待读取数据在该磁盘页块中的偏移量、以及该待读取数据占用的存储空间大小;进而,根据该待读取数据所在的磁盘页块的标识、该待读取数据在该磁盘页块中的偏移量、以及该待读取数据占用的存储空间大小,确定该待读取数据在磁盘中的存储位置。
具体的,在待读取数据对应的元数据包括该待读取数据所在的磁盘页块的标识BlockID、该待读取数据在该磁盘页块中的偏移量Offset、以及该待读取数据本身占用的存储空间大小Size的情况下,服务器可以根据该待读取数据所在的磁盘页块的标识BlockID,确定该磁盘页块的首地址BlockAddress,在该首地址的基础上增加该待读取数据在该磁盘页块中的偏移量Offset,即可得到该待读取数据的存储首地址BlockAddress+Offset,从该存储首地址起Size字节大小的存储空间即是该待读取数据在磁盘中的存储位置。
在上述元数据结构的基础上,服务器可以直接根据该元数据中包括的待读取数据所在的磁盘页块的标识、待读取数据在磁盘页块中的偏移量、以及待读取数据所占用的存储空间大小,定位出该待读取数据在磁盘中具体的存储位置;从而实现对于待读取数据快速定位其在磁盘中的存储位置。
步骤504:基于所述待读取数据在磁盘中的存储位置,从所述磁盘中读取所述待读取数据。
服务器确定出待读取数据在磁盘中的存储位置后,即可直接读取该存储位置处存储的待读取数据,进而,将所读取的待读取数据反馈给对应的终端设备。
上述数据读取方法基于存储在内存中的元数据,可以快速地定位待读取数据在磁盘中的存储位置,进而基于该存储位置实现一次性地访问磁盘读取数据。相比相关技术中的数据读取机制,本申请实施例提供的数据读取方法大幅减少了执行数据读取操作时对于磁盘的访问次数,从而有效地提高了对于存储在磁盘中的数据的读取效率;即使在服务器需要同时从磁盘中读取大量数据的情况下,由于读取每个数据所需执行的磁盘访问次数较少,因此也不会使服务器耗费大量的处理资源,不会对服务器的运行性能产生影响。
为了便于进一步理解本申请实施例提供的数据存储方法和数据读取方法,下面以本申请实施例提供的数据存储方法和数据读取方法应用于MMORPG的后台数据存储***,用于存储或读取玩家使用MMORPG时上传的图片为例,对本申请实施例提供的数据存储方法和数据读取方法做整体示例性介绍。
MMORPG中玩法种类繁多,其中大量玩法会涉及到图片(如玩家头像、游戏精彩镜头、游戏场景、玩家在游戏社区中分享的图片等)的上传和下载,由于玩家数量众多,且玩家每天都会产生大量的图片数据,因此,MMORPG的后台数据存储***需要维护大量的图片数据。
将本申请实施例提供的数据存储方法和数据读取方法应用至MMORPG的后台数据存储***中时,该后台数据存储***可以基于图6所示的实现架构,响应玩家通过终端设备发起的图片读取请求,快速地读取并返回玩家所要读取的图片。如图6所示,该图片读取流程的实现过程如下:
用户终端通过网络向后台数据存储***中的路由服务器Router Server发送图片读取请求,该图片读取请求中包括待读取图片的图片标识。路由服务器接收到图片读取请求后,可以根据其中存储的图片标识与图片存储服务器的IP地址之间的对应关系,确定用于存储该待读取图片的图片存储服务器的IP地址,并将该图片存储服务器的IP地址发送给用户终端。用户终端获取用于存储该待读取图片的图片存储服务器的IP地址后,可以基于该图片存储服务器的IP地址,向该图片存储服务器发送图片读取请求。该图片存储服务器接收到该图片读取请求后,可以先查询其内存中是否存储有该待读取图片,若该内存中存储有该待读取图片,则图片存储服务器可以直接将该待读取图片发送给用户终端,而无需继续执行后续操作。若该内存中没有存储该待读取图片,则图片存储服务器需要在该内存中查询该待读取图片对应的元数据,并根据该待读取图片对应的元数据确定该待读取图片在磁盘中的存储位置,进而从磁盘中对应的存储位置处读取该待读取图片,并将该待读取图片发送给用户终端。
下面对上述后台数据存储***中各部分结构的功能进行介绍:
1、路由服务器Router Server,用于为每张需要存储的图片配置唯一的标识PictureID,并且为每张需要存储的图片分配相应的图片存储服务器Picture Server负责处理该图片的读写请求。即,该路由服务器的功能是将各需要存储的图片均衡地分配给各图片存储服务器,由其进行后续的图片存储处理或者图片读取处理。用户终端每次发起图片读取请求时,该图片读取请求都要先经过该路由服务器,由该路由服务器根据其中携带的图片的标识PictureID,确定负责处理该图片的图片存储服务器Picture Server的IP地址,并将该IP地址反馈至用户终端,以使该用户终端将图片读取请求发送给该IP地址对应的图片存储服务器Picture Server进行后续的处理。
2、图片存储服务器集群Picture Server Cluster,其是由若干图片存储服务器Picture Server组成的集群,该集群中不同的图片存储服务器处理各自负责的图片请求,集群中各图片存储服务器各自负责处理的图片的并集即为全部用户的图片。对于用户发起的图片存储请求,图片存储服务器会将图片落地存储至磁盘Disk中的磁盘页块DiskBlock,同时会生成对应的元数据(也即逻辑页块Memory Block)常驻于内存中,并统计其中存储的各张图片的访问频率,对于访问频率高于预设频率阈值的图片,可以将其存入内存中,以为后续对于该图片频繁的读取请求提供快捷的图片读取途径。对于用户发起的图片读取请求,图片存储服务器会在内存中检索对应的元数据,以基于检索到的元数据快速定位该图片至磁盘中的存储位置,并基于该存储位置读取该图片。为了减少重复的图片读取请求每次都访问磁盘,造成磁盘IO消耗严重,图片存储服务器在其内存中维护了用于存储频繁访问的图片的缓存空间Cache,每次图片读取请求到来时,可以优先检索该缓存空间,如果在该缓存空间中命中所要读取的图片,可直接将该图片返回至用户终端,而无需读写磁盘。
3、逻辑页块Memory Block,常驻于图片存储服务器的内存中,逻辑页块被划分为多个逻辑节Segment,每个逻辑节中保存了一张图片对应的元数据MetaData,其中可以包括图片标识、图片所在的磁盘页块的标识BlockId(表示图片存储在哪个磁盘页块中)、图片在该磁盘页块中的偏移量Offset(表示图片的起始存储地址在该磁盘页块中的偏移量)、图片的大小Size(表示图片所占用的存储空间大小)、图片的状态数据Flag(表示图片处于正常状态或者删除状态)。
4、物理磁盘Disk,每个磁盘都被划分为多个磁盘页块,每个磁盘页块中可以保存多张图片,每次磁盘页块都拥有唯一的标识BlockId,每张图片在其所在的磁盘页块中具有唯一的偏移量Offset,根据每张图片的偏移量Offset和图片大小Size,可以准确地在其所属的磁盘页块中定位到该图片。
5、图片缓存空间Cache,其存在于内存中,其中保存了访问频率较高的图片,每次图片读取请求到来时,都可以优先在该图片缓存空间中进行检索,如果在该缓存空间中命中所要读取的图片,可直接将该图片返回至用户终端,而无需读写磁盘。
6、背景服务器BackGround Server,背景服务器会在后台持续运行,定期检查逻辑页块中各个逻辑节存储的状态数据Flag,如果该状态数据表示图片处于删除状态,则背景服务器会通知对应的图片存储服务器将该图片从磁盘中删除,以及将该图片对应的元数据从逻辑页块中删除,同时回收图片及其元数据占用的存储空间。基于元数据中的状态数据,当用户执行删除图片的操作时,图片存储服务器不会立即将图片删除,而是将该图片对应的元数据中的状态数据标记为删除状态;如此,可以避免用户在应用程序的使用高峰时段批量删除图片造成服务器卡顿,引入背景服务器,可以控制图片存储服务器在应用程序的使用低估时段执行数据删除操作,从而将数据删除操作的处理压力分摊至空闲时段,以避免影响正常用户的图片读取效率。
将本申请实施例提供的数据存储方法应用至MMORPG的后台数据存储***中后,图片存储服务器存储图片数据是可以将图片数据降解为属性信息数据和本体数据,该属性信息数据又可降解为可用类型的属性信息数据以及无用类型的属性信息数据,利用图片标识、可用类型的属性信息数据和图片在磁盘中的存储位置构建图片对应的元数据,并将该元数据存储在内存中的逻辑页块上,将该图片本身(即本体数据)存储在磁盘中的磁盘页块上。对于无用类型的属性信息数据,如创建时间、处理权限、创建用户等等,由于其在后续的实际业务中不会起作用,因此可以直接删除,从而减少元数据对于内存的占用。
当用户的图片读取请求到达图片存储服务器时,图片存储服务器可以根据该图片读取请求中携带的图片标识,在内存中查找请求读取的图片对应的元数据,并从该元数据中获取该图片所在的磁盘页块的标识BlockID、该图片在该磁盘页块中的偏移量Offset和该图片的大小Size,进而,根据该图片所在的磁盘页块的标识BlockID,确定该磁盘页块的首地址BlockAddress,在该首地址的基础上增加该图片在该磁盘页块中的偏移量Offset,即可得到该图片的存储首地址BlockAddress+ Offset,从该存储首地址起往后读取Size个字节大小,即可读取到完整的该图片。
如此,根据图片标识PictureID,即可在内存中的逻辑页块查找到BlockID、Offset和Size,根据这些参数可以直接确定所要读取的图片在磁盘中的存储位置,进而,基于该存储位置直接一次性地访问磁盘读取该图片,图片读取效率极高、
应理解,本申请实施例除了可以用于对游戏场景中的图片数据进行存储和读取处理外,还可以用于在其它场景中对其它类型的数据进行存储和读取,在此不对本申请适用的应用场景和数据类型做任何限定。
针对上文描述的数据存储方法和数据读取方法,本申请还提供了对应的数据存储装置和数据读取装置,以使上述数据存储方法和数据读取方法在实际中得以应用及实现。
参见图7,图7是与上文图3所示的数据存储方法对应的一种数据存储装置700的结构示意图。如图7所示,该数据存储装置700包括:
数据获取模块701,用于获取目标对象使用目标应用程序时产生的待存储数据;所述待存储数据包括本体数据、以及与所述本体数据相关的属性信息数据;
属性降解模块702,用于对所述待存储数据中的所述属性信息数据进行降解处理,保留所述待存储数据中可用类型的属性信息数据,删除所述待存储数据中无用类型的属性信息数据;所述可用类型以及所述无用类型是根据所述目标应用程序的业务需求确定的;
第一存储模块703,用于将所述待存储数据中的所述本体数据存储至磁盘中;
第二存储模块704,用于根据所述本体数据的数据标识、所述可用类型的属性信息数据、以及所述本体数据在所述磁盘中的存储位置,确定所述本体数据对应的元数据;并将所述本体数据对应的元数据存储至内存中。
可选的,在图7所示的数据存储装置的基础上,所述第二存储模块704具体用于:
在所述可用类型的属性信息数据中,确定第一可用类型的属性信息数据和第二可用类型的属性信息数据;
针对所述第一可用类型的属性信息数据,基于所述第一可用类型对应的数据转换方式,将所述第一可用类型的属性信息数据转换为所述第一可用类型的目标属性信息数据;所述第一可用类型的目标属性信息数据占用的存储空间小于所述第一可用类型的属性信息数据占用的存储空间;
根据所述本体数据的数据标识、所述第一可用类型的目标属性信息数据、所述第二可用类型的属性信息数据、以及所述本体数据在所述磁盘中的存储位置,确定所述本体数据对应的元数据。
可选的,在图7所示的数据存储装置的基础上,所述第二存储模块704具体用于通过以下至少一种方式转换目标属性信息数据:
当所述第一可用类型为时间,所述第一可用类型的属性信息数据为物理时间时,基于所述物理时间与参照时间之间的时间差,将所述物理时间转换为对应的时间戳,作为所述目标属性信息数据;
当所述第一可用类型为处理权限,所述第一可用类型的属性信息数据为对象处理权限描述数据时,基于预设的权限信息与比特位之间的对应关系,将所述对象处理权限描述数据转换为对应的比特位,作为所述目标属性信息数据。
可选的,在图7所示的数据存储装置的基础上,所述元数据中还包括状态数据,所述状态数据用于表征对象是否针对所述元数据对应的本体数据触发执行删除操作;参见图8,图8为本申请实施例提供的另一种数据存储装置800的结构示意图。如图8所示,该装置还包括:
删除数据确定模块801,用于针对所述内存中的每个元数据,判断所述元数据中的状态数据是否表征对象针对所述元数据对应的本体数据触发执行了删除操作,若是,则确定所述元数据对应的本体数据为待删除数据;
数据删除模块802,用于删除所述磁盘中的所述待删除数据,并回收所述待删除数据在所述磁盘中占用的存储空间;删除所述内存中所述待删除数据对应的元数据,并回收所述待删除数据对应的元数据在所述内存中占用的存储空间。
可选的,在图7所示的数据存储装置的基础上,参见图9,图9为本申请实施例提供的另一种数据存储装置900的结构示意图。如图9所示,该装置还包括:
第三存储模块901,用于监测所述磁盘中存储的各本体数据各自对应的访问频率;将所对应的访问频率满足预设条件的本体数据,存储至所述内存中。
可选的,在图7所示的数据存储装置的基础上,所述第二存储模块704具体用于:
根据所述本体数据的数据标识、所述可用类型的属性信息数据、所述本体数据所在的磁盘页块的标识、以及所述本体数据在所述磁盘页块中的偏移量,确定所述本体数据对应的元数据;所述可用类型的属性信息数据包括所述本体数据占用的存储空间大小。
上述数据存储装置通过对待存储数据中的属性信息数据进行降解处理,大幅减少了生成元数据时所利用的属性信息数据,从而相应地减小了所生成的元数据占用的存储空间;在元数据所占用的存储空间较小的情况下,服务器可以利用其内存实现对所有元数据的存储。由于访问内存所需耗费的处理资源远少于访问磁盘所需耗费的处理资源,且内存访问速度远大于磁盘访问速度,因此,利用内存存储元数据,可以使服务器快速定位所要访问的本体数据在磁盘中的存储位置,进而可以基于所定位的存储位置,实现一次性地访问磁盘读取本体数据。此外,由于对属性信息数据进行降解处理时,保留的属性信息数据是与实际业务相关的属性信息数据,删除的属性信息数据是与实际业务无关的属性信息数据,因此,可以保证基于降解后的属性信息数据生成的元数据不会影响应用程序实际业务的实现。
参见图10,图10是与上文图5所示的数据读取方法对应的一种数据读取装置1000的结构示意图。如图10所示,该数据读取装置1000包括:
请求接收模块1001,用于接收数据读取请求;所述数据读取请求包括待读取数据的数据标识;
第一查找模块1002,用于根据所述待读取数据的数据标识,在内存中查找所述待读取数据对应的元数据;所述待读取数据对应的元数据是根据所述待读取数据的数据标识、与所述待读取数据相关的可用类型的属性信息数据、以及所述待读取数据在磁盘中的存储位置确定的,所述可用类型的属性信息数据是对与所述待读取数据相关的各种属性信息数据进行降解处理保留下来的;
定位模块1003,用于根据所述待读取数据对应的元数据,确定所述待读取数据在磁盘中的存储位置;
第二查找模块1004,用于基于所述待读取数据在磁盘中的存储位置,从所述磁盘中读取所述待读取数据。
可选的,在图10所示的数据读取装置的基础上,参见图11,图11为本申请实施例提供的另一种数据读取装置1100的结构示意图。如图11所示,该装置还包括:
第三查找模块1101,用于根据所述待读取数据的数据标识,确定所述内存中是否存储有所述待读取数据;若所述内存中存储有所述待读取数据,则从所述内存中读取所述待读取数据;若所述内存中未存储所述待读取数据,则执行所述根据所述待读取数据的数据标识,在内存中查找所述待读取数据对应的元数据。
可选的,在图10所示的数据读取装置的基础上,所述定位模块1003具体用于:
在所述待读取数据对应的元数据是根据所述待读取数据的数据标识、所述可用类型的属性信息数据、所述待读取数据所在的磁盘页块的标识、以及所述待读取数据在所述磁盘页块中的偏移量确定的,且所述可用类型的属性信息数据包括所述待读取数据占用的存储空间大小的情况下,解析所述待读取数据对应的元数据,得到所述待读取数据所在的磁盘页块的标识、所述待读取数据在所述磁盘页块中的偏移量、以及所述待读取数据占用的存储空间大小;根据所述待读取数据所在的磁盘页块的标识、所述待读取数据在所述磁盘页块中的偏移量、以及所述待读取数据占用的存储空间大小,确定所述待读取数据在所述磁盘中的存储位置。
上述数据读取装置基于存储在内存中的元数据,可以快速地定位待读取数据在磁盘中的存储位置,进而基于该存储位置实现一次性地访问磁盘读取数据。相比相关技术中的数据读取机制,本申请实施例提供的数据读取方法大幅减少了执行数据读取操作时对于磁盘的访问次数,从而有效地提高了对于存储在磁盘中的数据的读取效率;即使在服务器需要同时从磁盘中读取大量数据的情况下,由于读取每个数据所需执行的磁盘访问次数较少,因此也不会使服务器耗费大量的处理资源,不会对服务器的运行性能产生影响。
本申请实施例还提供了一种用于存储或读取数据的计算机设备,该计算机设备具体可以是服务器,下面将从硬件实体化的角度对本申请实施例提供服务器进行介绍。
参见图12,图12为本申请实施例提供的一种服务器1200的结构示意图。该服务器1200可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(central processing units,CPU)1222(例如,一个或一个以上处理器)和存储器1232,一个或一个以上存储应用程序1242或数据1244的存储介质1230(例如一个或一个以上海量存储设备)。其中,存储器1232和存储介质1230可以是短暂存储或持久存储。存储在存储介质1230的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1222可以设置为与存储介质1230通信,在服务器1200上执行存储介质1230中的一系列指令操作。
服务器1200还可以包括一个或一个以上电源1226,一个或一个以上有线或无线网络接口1250,一个或一个以上输入输出接口1258,和/或,一个或一个以上操作***,例如Windows ServerTM,Mac OS XTM,UnixTM, LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于该图12所示的服务器结构。
其中,CPU 1222用于执行本申请实施例提供的数据存储方法或数据读取方法的任意一种实现方式的步骤。
本申请实施例还提供一种计算机可读存储介质,用于存储计算机程序,该计算机程序用于执行前述各个实施例所述的一种数据存储方法或数据读取方法中的任意一种实施方式。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前述各个实施例所述的一种数据存储方法或数据读取方法中的任意一种实施方式。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储计算机程序的介质。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (14)
1.一种数据存储方法,其特征在于,所述方法包括:
获取目标对象使用目标应用程序时产生的待存储数据;所述待存储数据包括本体数据、以及与所述本体数据相关的属性信息数据;
对所述待存储数据中的所述属性信息数据进行降解处理,保留所述待存储数据中可用类型的属性信息数据,删除所述待存储数据中无用类型的属性信息数据;所述可用类型以及所述无用类型是根据所述目标应用程序的业务需求确定的;
将所述待存储数据中的所述本体数据存储至磁盘中;
在所述可用类型的属性信息数据中,确定第一可用类型的属性信息数据和第二可用类型的属性信息数据;
针对所述第一可用类型的属性信息数据,基于所述第一可用类型对应的数据转换方式,将所述第一可用类型的属性信息数据转换为所述第一可用类型的目标属性信息数据;所述第一可用类型的目标属性信息数据占用的存储空间小于所述第一可用类型的属性信息数据占用的存储空间;
根据所述本体数据的数据标识、所述第一可用类型的目标属性信息数据、所述第二可用类型的属性信息数据、以及所述本体数据在所述磁盘中的存储位置,确定所述本体数据对应的元数据;并将所述本体数据对应的元数据存储至内存中。
2.根据权利要求1所述的方法,其特征在于,所述基于所述第一可用类型对应的数据转换方式,将所述第一可用类型的属性信息数据转换为所述第一可用类型的目标属性信息数据,包括以下至少一种:
当所述第一可用类型为时间,所述第一可用类型的属性信息数据为物理时间时,基于所述物理时间与参照时间之间的时间差,将所述物理时间转换为对应的时间戳,作为所述目标属性信息数据;
当所述第一可用类型为处理权限,所述第一可用类型的属性信息数据为对象处理权限描述数据时,基于预设的权限信息与比特位之间的对应关系,将所述对象处理权限描述数据转换为对应的比特位,作为所述目标属性信息数据。
3.根据权利要求1所述的方法,其特征在于,所述元数据中还包括状态数据,所述状态数据用于表征对象是否针对所述元数据对应的本体数据触发执行删除操作;所述方法还包括:
针对所述内存中的每个元数据,判断所述元数据中的状态数据是否表征对象针对所述元数据对应的本体数据触发执行了删除操作,若是,则确定所述元数据对应的本体数据为待删除数据;
删除所述磁盘中的所述待删除数据,并回收所述待删除数据在所述磁盘中占用的存储空间;删除所述内存中所述待删除数据对应的元数据,并回收所述待删除数据对应的元数据在所述内存中占用的存储空间。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
监测所述磁盘中存储的各本体数据各自对应的访问频率;
将所对应的访问频率满足预设条件的本体数据,存储至所述内存中。
5.根据权利要求1所述的方法,其特征在于,所述根据所述本体数据的数据标识、所述可用类型的属性信息数据、以及所述本体数据在所述磁盘中的存储位置,确定所述本体数据对应的元数据,包括:
根据所述本体数据的数据标识、所述可用类型的属性信息数据、所述本体数据所在的磁盘页块的标识、以及所述本体数据在所述磁盘页块中的偏移量,确定所述本体数据对应的元数据;所述可用类型的属性信息数据包括所述本体数据占用的存储空间大小。
6.一种数据读取方法,其特征在于,所述方法包括:
接收数据读取请求;所述数据读取请求包括待读取数据的数据标识;
根据所述待读取数据的数据标识,在内存中查找所述待读取数据对应的元数据;所述待读取数据对应的元数据是根据所述待读取数据的数据标识、与所述待读取数据相关的可用类型的属性信息数据、以及所述待读取数据在磁盘中的存储位置确定的,所述可用类型的属性信息数据是对与所述待读取数据相关的各种属性信息数据进行降解处理保留下来的;
根据所述待读取数据对应的元数据,确定所述待读取数据在磁盘中的存储位置;
基于所述待读取数据在磁盘中的存储位置,从所述磁盘中读取所述待读取数据;
其中,所述待读取数据对应的元数据的获取过程包括:在所述可用类型的属性信息数据中,确定第一可用类型的属性信息数据和第二可用类型的属性信息数据;针对所述第一可用类型的属性信息数据,基于所述第一可用类型对应的数据转换方式,将所述第一可用类型的属性信息数据转换为所述第一可用类型的目标属性信息数据;所述第一可用类型的目标属性信息数据占用的存储空间小于所述第一可用类型的属性信息数据占用的存储空间;根据本体数据的数据标识、所述第一可用类型的目标属性信息数据、所述第二可用类型的属性信息数据、以及所述本体数据在所述磁盘中的存储位置,确定所述本体数据对应的元数据。
7.根据权利要求6所述的方法,其特征在于,在所述根据所述待读取数据的数据标识,在内存中查找所述待读取数据对应的元数据之前,所述方法还包括:
根据所述待读取数据的数据标识,确定所述内存中是否存储有所述待读取数据;
若所述内存中存储有所述待读取数据,则从所述内存中读取所述待读取数据;若所述内存中未存储所述待读取数据,则执行所述根据所述待读取数据的数据标识,在内存中查找所述待读取数据对应的元数据。
8.根据权利要求6所述的方法,其特征在于,在所述待读取数据对应的元数据是根据所述待读取数据的数据标识、所述可用类型的属性信息数据、所述待读取数据所在的磁盘页块的标识、以及所述待读取数据在所述磁盘页块中的偏移量确定的,且所述可用类型的属性信息数据包括所述待读取数据占用的存储空间大小的情况下,所述根据所述待读取数据对应的元数据,确定所述待读取数据在磁盘中的存储位置,包括:
解析所述待读取数据对应的元数据,得到所述待读取数据所在的磁盘页块的标识、所述待读取数据在所述磁盘页块中的偏移量、以及所述待读取数据占用的存储空间大小;
根据所述待读取数据所在的磁盘页块的标识、所述待读取数据在所述磁盘页块中的偏移量、以及所述待读取数据占用的存储空间大小,确定所述待读取数据在所述磁盘中的存储位置。
9.一种数据存储***,其特征在于,所述***包括路由服务器和数据存储服务器集群,所述数据存储服务器集群包括多个数据存储服务器;
所述路由服务器,用于为待存储数据分配对应的数据存储服务器,记录所述待存储数据中本体数据的数据标识与数据存储服务器之间的对应关系;以及,根据数据读取请求中包括的待读取数据的数据标识,确定用于存储所述待读取数据的数据存储服务器;
所述数据存储服务器,用于执行权利要求1至5任一项所述的数据存储方法、或者权利要求6至8任一项所述的数据读取方法。
10.根据权利要求9所述的***,其特征在于,所述***还包括:背景服务器;
所述背景服务器,用于在所述数据存储服务器中存储的元数据包括状态数据,且所述状态数据用于表征对象是否针对其所属的元数据对应的本体数据触发执行删除操作的情况下,根据各所述数据存储服务器的内存中存储的各元数据各自包括的状态数据,确定待删除数据;并且通知所述各数据存储服务器删除其中的所述待删除数据。
11.一种数据存储装置,其特征在于,所述装置包括:
数据获取模块,用于获取目标对象使用目标应用程序时产生的待存储数据;所述待存储数据包括本体数据、以及与所述本体数据相关的属性信息数据;
属性降解模块,用于对所述待存储数据中的所述属性信息数据进行降解处理,保留所述待存储数据中可用类型的属性信息数据,删除所述待存储数据中无用类型的属性信息数据;所述可用类型以及所述无用类型是根据所述目标应用程序的业务需求确定的;
第一存储模块,用于将所述待存储数据中的所述本体数据存储至磁盘中;
第二存储模块,用于在所述可用类型的属性信息数据中,确定第一可用类型的属性信息数据和第二可用类型的属性信息数据;针对所述第一可用类型的属性信息数据,基于所述第一可用类型对应的数据转换方式,将所述第一可用类型的属性信息数据转换为所述第一可用类型的目标属性信息数据;所述第一可用类型的目标属性信息数据占用的存储空间小于所述第一可用类型的属性信息数据占用的存储空间;根据所述本体数据的数据标识、所述第一可用类型的目标属性信息数据、所述第二可用类型的属性信息数据、以及所述本体数据在所述磁盘中的存储位置,确定所述本体数据对应的元数据;并将所述本体数据对应的元数据存储至内存中。
12.一种数据读取装置,其特征在于,所述装置包括:
请求接收模块,用于接收数据读取请求;所述数据读取请求包括待读取数据的数据标识;
第一查找模块,用于根据所述待读取数据的数据标识,在内存中查找所述待读取数据对应的元数据;所述待读取数据对应的元数据是根据所述待读取数据的数据标识、与所述待读取数据相关的可用类型的属性信息数据、以及所述待读取数据在磁盘中的存储位置确定的,所述可用类型的属性信息数据是对与所述待读取数据相关的各种属性信息数据进行降解处理保留下来的,其中,所述待读取数据对应的元数据的获取过程包括:在所述可用类型的属性信息数据中,确定第一可用类型的属性信息数据和第二可用类型的属性信息数据;针对所述第一可用类型的属性信息数据,基于所述第一可用类型对应的数据转换方式,将所述第一可用类型的属性信息数据转换为所述第一可用类型的目标属性信息数据;所述第一可用类型的目标属性信息数据占用的存储空间小于所述第一可用类型的属性信息数据占用的存储空间;根据本体数据的数据标识、所述第一可用类型的目标属性信息数据、所述第二可用类型的属性信息数据、以及所述本体数据在所述磁盘中的存储位置,确定所述本体数据对应的元数据;
定位模块,用于根据所述待读取数据对应的元数据,确定所述待读取数据在磁盘中的存储位置;
第二查找模块,用于基于所述待读取数据在磁盘中的存储位置,从所述磁盘中读取所述待读取数据。
13.一种计算机设备,其特征在于,所述设备包括处理器及存储器;
所述存储器用于存储计算机程序;
所述处理器用于根据所述计算机程序执行权利要求1至5任一项所述的数据存储方法、或者权利要求6至8任一项所述的数据读取方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于权利要求1至5任一项所述的数据存储方法、或者权利要求6至8任一项所述的数据读取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111302898.4A CN113741822B (zh) | 2021-11-05 | 2021-11-05 | 数据存储方法、数据读取方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111302898.4A CN113741822B (zh) | 2021-11-05 | 2021-11-05 | 数据存储方法、数据读取方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113741822A CN113741822A (zh) | 2021-12-03 |
CN113741822B true CN113741822B (zh) | 2022-02-15 |
Family
ID=78727382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111302898.4A Active CN113741822B (zh) | 2021-11-05 | 2021-11-05 | 数据存储方法、数据读取方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113741822B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115840541B (zh) * | 2023-02-23 | 2023-06-13 | 成都体育学院 | 一种运动数据存储方法、***和介质 |
CN117033393B (zh) * | 2023-10-08 | 2023-12-12 | 四川酷赛科技有限公司 | 一种基于人工智能的信息存储管理*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692239A (zh) * | 2009-10-19 | 2010-04-07 | 浙江大学 | 一种分布式文件***元数据分配方法 |
CN105306860A (zh) * | 2015-10-12 | 2016-02-03 | 东方网力科技股份有限公司 | 一种录像数据存储方法及装置 |
CN108446136A (zh) * | 2018-03-22 | 2018-08-24 | 北京焦点新干线信息技术有限公司 | 一种元素代码的提取方法及*** |
CN111625191A (zh) * | 2020-05-21 | 2020-09-04 | 苏州浪潮智能科技有限公司 | 一种数据读写方法、装置及电子设备和存储介质 |
CN111782148A (zh) * | 2020-06-30 | 2020-10-16 | 中国工商银行股份有限公司 | 数据存储控制方法和装置、以及电子设备和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014188560A1 (ja) * | 2013-05-23 | 2014-11-27 | 株式会社日立製作所 | ストレージ装置及びデータ管理方法 |
CN112148693A (zh) * | 2020-10-19 | 2020-12-29 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及存储介质 |
-
2021
- 2021-11-05 CN CN202111302898.4A patent/CN113741822B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692239A (zh) * | 2009-10-19 | 2010-04-07 | 浙江大学 | 一种分布式文件***元数据分配方法 |
CN105306860A (zh) * | 2015-10-12 | 2016-02-03 | 东方网力科技股份有限公司 | 一种录像数据存储方法及装置 |
CN108446136A (zh) * | 2018-03-22 | 2018-08-24 | 北京焦点新干线信息技术有限公司 | 一种元素代码的提取方法及*** |
CN111625191A (zh) * | 2020-05-21 | 2020-09-04 | 苏州浪潮智能科技有限公司 | 一种数据读写方法、装置及电子设备和存储介质 |
CN111782148A (zh) * | 2020-06-30 | 2020-10-16 | 中国工商银行股份有限公司 | 数据存储控制方法和装置、以及电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113741822A (zh) | 2021-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113741822B (zh) | 数据存储方法、数据读取方法及相关装置 | |
CN112076464B (zh) | 一种数据请求处理方法、装置、计算机设备及存储介质 | |
CN110290217B (zh) | 数据请求的处理方法及装置、存储介质及电子装置 | |
EP2824893B1 (en) | Data storage method and device | |
CN111475483B (zh) | 数据库迁移方法、装置及计算设备 | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
CN110457305B (zh) | 数据去重方法、装置、设备及介质 | |
WO2021143351A1 (zh) | 分布式检索方法、装置、***、计算机设备及存储介质 | |
JP2022531339A (ja) | リソース構成方法、リソース構成装置、コンピューター機器、及びコンピュータープログラム | |
US20170153909A1 (en) | Methods and Devices for Acquiring Data Using Virtual Machine and Host Machine | |
CN108540510B (zh) | 一种云主机创建方法、装置及云服务*** | |
JP2019016042A (ja) | データ取得プログラム、装置、及び方法 | |
CA2715739A1 (en) | System and method for avatar management | |
US9208100B2 (en) | Directory replacement method and device | |
CN113051221A (zh) | 数据存储方法、装置、介质、设备及分布式文件*** | |
CN107181773A (zh) | 分布式存储***的数据存储及数据管理方法、设备 | |
CN113553306B (zh) | 数据处理方法及数据存储管理*** | |
CN112988377B (zh) | 用于云服务的资源分配方法、***和介质 | |
WO2021036909A1 (zh) | 写入图片的方法和装置 | |
JP2007293433A (ja) | 文書管理システム | |
CN112559568A (zh) | 一种虚拟物品确定方法、装置及计算机可读存储介质 | |
CN111930724A (zh) | 数据迁移方法和装置、存储介质及电子设备 | |
CN112040023A (zh) | 对象访问方法、装置、电子设备及机器可读存储介质 | |
CN114579514B (zh) | 一种基于多计算节点的文件处理方法、装置及设备 | |
CN115640061A (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 |