数据访问方法、数据处理系统与流程

未命名 07-27 阅读:102 评论:0
1.本发明实施例涉及计算机
技术领域
:,尤其涉及一种数据访问方法、数据处理系统、计算设备及计算机存储介质。
背景技术
::2.为了保障数据存储的稳定性以及一致性,存储系统通常采用分布式结构,由一个计算节点和多个数据节点组成,其中数据节点负责存储实际的数据块,计算节点是管理节点,负责存储数据节点所存储的每个数据对应的元数据,元数据例如可以包括数据的数据名、存储位置、访问路径等。3.数据节点在存储数据时可以采用分块机制,当数据请求写入数据节点时,首先根据块大小对数据进行分块,然后将每个数据块存储到一个或多个数据节点上,块大小通常为64mb或128mb。当数据块写入到数据节点后,可以将每个数据块对应的元数据存储至计算节点,用于跟踪每个数据块的位置和存储状态。4.在实际应用过程中,通常会将小数据存储至数据节点,小数据可以指数据量小于一个块大小的数据。5.发明人在实现本发明构思的过程中发现,在利用数据节点存储小数据时,将导致计算节点需要耗费大量的内存来保存小数据的元数据,严重消耗计算节点的内存,从而限制了可以存储到数据节点中数据的数量。技术实现要素:6.本发明实施例提供一种数据访问方法、数据处理系统、计算设备及计算机存储介质。7.第一方面,本发明实施例中提供了一种数据访问方法,包括:8.获取数据存储请求,确定待存储的第一数据;9.从数据节点中预先划分的多个存储区域中,确定第一存储区域;10.将所述第一数据追加写入所述第一存储区域;11.确定所述第一存储区域的标识信息,以及所述第一数据在所述第一存储区域的第一位置信息;12.将所述标识信息写入计算节点,将所述标识信息以及所述第一位置信息对应写入存储节点。13.第二方面,本发明实施例中提供了一种数据访问装置,包括:14.第一获取模块,用于获取数据存储请求,确定待存储的第一数据;15.第一确定模块,用于从数据节点中预先划分的多个存储区域中,确定第一存储区域;16.第一写入模块,用于将所述第一数据追加写入所述第一存储区域;17.第二确定模块,用于确定所述第一存储区域的标识信息,以及所述第一数据在所述第一存储区域的第一位置信息;18.第二写入模块,用于将所述标识信息写入计算节点,将所述标识信息以及所述第一位置信息对应写入存储节点。19.第三方面,本发明实施例中提供了一种数据处理系统,包括接入节点、分布式存储系统以及存储节点,所述分布式存储系统包括计算节点以及数据节点:20.所述接入节点,用于执行本发明实施例提供的数据访问方法;21.所述数据节点,用于提供多个存储区域,以及接收来自所述接入节点的第一数据,并将所述第一数据存储至所述多个存储区域中的第一存储区域;22.所述计算节点,用于接收来自所述接入节点的用于标识所述第一存储区域的标识信息;23.所述存储节点,用于接收来自所述接入节点的用于标识第一数据在所述第一存储区域存储位置的位置信息。24.本发明实施例提供了一种数据访问方法,通过采用获取数据存储请求,确定待存储的第一数据;从数据节点中预先划分的多个存储区域中,确定第一存储区域;将第一数据追加写入第一存储区域;确定第一存储区域的标识信息,以及第一数据在第一存储区域的第一位置信息;将标识信息写入计算节点,将标识信息以及第一位置信息对应写入存储节点的技术方案,预先将数据节点划分成多个存储区域,并将待存储的第一数据追加写入第一存储区域中,从而,在计算节点中,可以仅保存第一存储区域的标识信息,而无需保存大量的具体数据的元数据,节省了计算节点的内存。25.本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。附图说明26.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。27.图1示意性示出了本发明一个实施例提供的一种数据访问方法的流程图;28.图2示意性示出了本发明实施例提供的数据访问方法的示意图;29.图3示意性示出了本发明实施例提供的内存回收的示意图;30.图4示意性示出了本发明实施例提供的数据读取过程的示意图;31.图5示意性示出了本发明一个实施例提供的一种数据访问装置的框图;32.图6示意性示出了本发明一个实施例提供的一种数据处理系统的框图;33.图7示意性示出了本发明一个实施例提供的一种计算设备的框图。具体实施方式34.为了使本
技术领域
:的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。35.在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。36.需要说明的是,本发明所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。37.为了保障数据存储的稳定性以及一致性,存储系统,例如hdfs(hadoopdistributedfilesystem,hadoop分布式文件系统)通常采用分布式结构,由一个计算节点(namenode)和多个数据节点(datanode)组成,其中数据节点负责存储实际的数据块,计算节点是管理节点,负责存储数据节点所存储的每个数据对应的元数据,元数据例如可以包括数据的数据名、存储位置、访问路径等。38.数据节点在存储数据时可以采用分块机制,当数据请求写入数据节点时,首先根据块大小对数据进行分块,然后将每个数据块存储到一个或多个数据节点上,块大小通常为64mb或128mb。当数据块写入到数据节点后,可以将每个数据块对应的元数据存储至计算节点,用于跟踪每个数据块的位置和存储状态。39.在实际应用过程中,通常会将小数据存储至数据节点,小数据可以指数据量小于一个块大小的数据。40.发明人在实现本发明构思的过程中发现,在利用数据节点存储大量小数据时,将导致计算节点需要耗费大量的内存来保存小数据的元数据,严重消耗计算节点的内存,从而限制了可以存储到数据节点中数据的数量。41.为了解决现有技术中存在的技术问题,本发明实施例提供了一种数据访问方法,通过采用获取数据存储请求,确定待存储的第一数据;从数据节点中预先划分的多个存储区域中,确定第一存储区域;将第一数据追加写入第一存储区域;确定第一存储区域的标识信息,以及第一数据在第一存储区域的第一位置信息;将标识信息写入计算节点,将标识信息以及第一位置信息对应写入存储节点的技术方案,预先将数据节点划分成多个存储区域,并将待存储的第一数据追加写入第一存储区域中,从而,在计算节点中,可以仅保存第一存储区域的标识信息,而无需保存大量的具体数据的元数据,节省了计算节点的内存。42.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。43.图1示意性示出了本发明一个实施例提供的一种数据访问方法的流程图,如图1所示,该数据访问方法具体可以包括以下步骤:44.101,获取数据存储请求,确定待存储的第一数据;45.102,从数据节点中预先划分的多个存储区域中,确定第一存储区域;46.103,将第一数据追加写入第一存储区域;47.104,确定第一存储区域的标识信息,以及第一数据在第一存储区域的第一位置信息;48.105,将标识信息写入计算节点,将标识信息以及第一位置信息对应写入存储节点。49.根据本发明的实施例,数据存储请求可以是由客户端发起的,具体而言,用户可以利用客户端与存储系统连接,并通过客户端向存储系统发送数据获取请求,以将第一数据存储至存储系统。50.本发明实施例提供的数据访问方法可以由接入节点执行,接入节点用于提供存储系统的访问接口,使得用户可以利用客户端通过调用访问接口的方式访问存储系统。51.在本发明的实施例中,接入节点无需保存存储系统或者客户端的状态信息,可以任意水平扩展。52.根据本发明的实施例,存储系统可以采用分布式结构,即包括一个计算节点以及多个数据节点。当获取到数据存储请求后,可以从多个数据节点中随机确定一个数据节点用于存储第一数据,但不限于此,还可以根据预先确定的客户端与数据节点的对应关系确定用于存储第一数据的数据节点;此外,还可以在确定第一数据后,首先判断第一数据的数据类型,并根据预先确定的数据类型与数据节点的对应关系确定用于存储第一数据的数据节点。53.根据本发明的实施例,在数据节点中划分多个存储区域具体可以实现为在数据节点中预先创建多个文件,每个文件中均可以存储数据。其中,多个文件的容量可以不同也可以相同。例如,可以对数据节点的容量进行均分,以创建多个容量相同的文件,但不限于此,还可以基于先验经验,在数据节点中创建多个容量不同的文件。54.根据本发明的实施例,每个文件可以存储多个数据,多个数据可以在一次数据存储请求中写入,也可以在多次数据存储请求中写入。55.根据本发明的实施例,可以将第一数据追加写入第一存储区域,即第一文件中,追加写可以是指在第一文件中已经存储有数据的基础上继续写入新的数据,而不会改变原有的数据。一般来说,在进行追加写操作时,新的数据都会被加到已有的数据的末尾处,而且可以多次执行追加写操作,直至将第一文件写满。56.根据本发明的实施例,通过将第一数据追加写入第一存储区域,从而在写入第一数据时,就将小数据直接聚合至第一存储区域中,无需在将数据写入后进行数据的合并,避免了写入放大的问题。57.根据本发明的实施例,将第一数据写入第一存储区域具体可以实现为将第一数据持久化至第一存储区域,例如,可以调用持久化接口对第一数据进行持久化,并在对第一数据持久化成功后,保存第一数据的索引信息。58.根据本发明的实施例,在将第一数据写入第一存储区域后,可以记录第一存储区域的标识信息,该标识信息可以用于唯一确定第一存储区域,还可以记录第一位置信息,第一位置信息可以是第一数据在第一存储区域中的存储位置。59.根据本发明的实施例,在记录第一存储区域的标识信息以及第一位置信息后,可以仅将第一存储区域的标识信息存储至计算节点中,而将第一存储区域的标识信息以及第一位置信息对应存储至存储节点。60.由于第一存储区域中存储有大量数据,若将每个数据的标识信息、位置信息等均存储至计算节点,将严重消耗计算节点的内存空间。在本发明的实施例,可以仅将存储有大量数据的第一存储区域的标识信息存储至计算节点,相较于存储每个数据的元数据至计算节点,可以节省计算节点的大量内存。61.根据本发明的实施例,存储节点例如可以基于数据库实现,具体而言,该数据库可以实现为非关系型数据库。62.根据本发明的实施例,存储节点可以是构建在数据节点之上的分布式数据库,运行在数据节点之上可以是指存储节点使用数据节点作为底层存储设备来管理和存储数据。具体而言,存储节点可以将数据组织成一张表(table),每个表包含多行(row)、多列(column)和多版本(version)的数据,并以列族(columnfamily)为单位进行组织和存储。在存储节点中,每个表会被拆分成多个区域(region),每个region会被存储到数据节点中,因此当需要读取或写入存储节点数据时,存储节点会先将请求转化为对数据节点的读写操作。这种基于数据节点的存储方式使得存储节点可以充分利用数据节点提供的高可靠性、自动故障转移、负载均衡等特性,从而确保了存储节点数据存储和查询的高可靠性和性能。63.根据本发明的实施例,从数据节点中预先划分的多个存储区域中,确定第一存储区域具体可以实现为:64.从多个存储区域中确定处于可写入状态的第一存储区域。65.根据本发明的实施例,数据节点中预先创建的文件可以被置为打开状态和关闭状态,被置为打开状态的文件可以直接写入数据,而处于关闭状态的文件,则需要首先打开文件,使文件处于打开状态,再将数据写入。66.根据本发明的实施例,通过从多个存储区域中确定处于可写入状态,即处于打开状态的第一存储区域,可以将第一数据直接写入到之前已经打开的第一存储区域中,而不是每次都需要重新打开和关闭第一存储区域。这种方式可以有效地减少资源消耗和时间成本,提高了数据访问的性能和效率。67.根据本发明的实施例,从多个存储区域中确定处于可写入状态的第一存储区域具体可以实现为:68.获取缓存中存储的至少一个文件句柄,每个文件句柄对应于数据节点中预先划分的一个存储区域,文件句柄在存储区域被置为可写入状态时存储至缓存;69.从至少一个文件句柄中确定第一文件句柄;70.将第一文件句柄对应的存储区域确定为第一存储区域。71.根据本发明的实施例,文件句柄(filehandle)可以是一种在分布式存储系统中用来跟踪已打开文件的标识符。文件句柄可以包括文件id,文件id可以用于唯一地标识一个已经打开的文件;文件上次访问时间,文件上次访问时间可以指文件最近一次被读或写的时间;文件当前访问模式,文件当前访问模式可以包括“只读”、“只写”和“读写”等多种访问模式;文件指针位置,文件指针位置可以指当前读写操作在文件中的位置。72.在存储系统中,当需要访问数据节点中预先创建的某个文件时,会首先通过分布式存储系统提供的api(applicationprogramminginterface,应用程序编程接口)函数打开该文件,在该文件被打开后,系统会为该文件分配一个文件句柄,然后将该文件句柄保存至缓存中。73.在接入节点缓存预创建的文件句柄后,当用户向接入节点写入第一数据时,接入节点会从缓存中查找文件句柄,通过查找预先存储至缓存中的文件句柄,可以使用之前已经打开的文件,将第一数据直接写入到对应的文件句柄所表示的文件中。这样就避免了每次写入操作都需要重新打开和关闭文件,提高了写入操作的效率。74.根据本发明的实施例,用过预先打开文件,使得第一数据的写入第一文件可以实现为顺序写入,从而可以更好地利用底层硬盘的写入能力,提高数据访问效率。75.图2示意性示出了本发明实施例提供的数据访问方法的示意图。76.如图2所示,接入节点201的缓存空间中可以存储有多个文件句柄2011,每个文件句柄2011对应于数据节点202中预先创建生成的一个文件2021。77.接入节点201在获取到数据存储请求后,可以从接入节点201的缓存空间中已经存储的多个文件句柄2011中确定一个第一文件句柄,然后将数据存储请求所请求存储的第一数据写入到数据节点202中,与第一文件句柄对应的第一文件中。78.在将第一数据写入到第一文件后,可以保存第一数据的索引信息。具体而言,索引信息可以包括第一文件的标识信息以及第一数据在第一文件中存储的位置信息,并将第一文件的标识信息写入至计算节点203,将第一文件的标识信息与位置信息对应写入到存储节点204。79.根据本发明的实施例,数据访问方法还包括:80.确定多个存储区域中,是否存在符合内存回收条件的第二存储区域;81.在多个存储区域中存在符合内存回收条件的第二存储区域的情况下,对第二存储区域进行内存回收操作,以释放第二存储区域的存储空间。82.根据本发明的实施例,数据节点的多个存储区域中,每个存储区域均可以是一个聚合文件,即每个存储区域中均存储有多个数据。83.根据本发明的实施例,对于一个存储区域中存储的多个数据,可能存储一些无效数据,无效数据可以包括损坏的数据、用户指示删除的数据等,这些数据不再被用户需要,但还占用着数据节点中的存储空间。84.根据本发明的实施例,为了释放存储区域的存储空间,可以确定多个存储区域中是否存储符合内存回收条件的第二存储区域,若有,则可以针对第二存储区域进行内存回收操作,以释放第二存储区域的存储空间。85.根据本发明的实施例,内存回收操作例如可以实现为:86.获取第二存储区域存储的多个第三数据;87.确定多个第三数据中的无效的第四数据;88.删除第四数据;89.将剩余的第三数据重新写入第二存储区域。90.根据本发明的实施例,确定多个存储区域中,是否存在符合内存回收条件的第二存储区域具体可以实现为:91.遍历多个存储区域,确定多个存储区域的无效数据量;92.基于无效数据量确定对应的存储区域是否符合内存回收条件。93.根据本发明的实施例,可以通过遍历多个存储区域的方式,依次确定每个存储区域中的无效数据量,然后根据无效数据量的多少判断对应存储区域是否符合内存回收条件。94.根据本发明的实施例,基于无效数据量确定对应的存储区域是否符合内存回收条件具体可以实现为:95.基于无效数据量与第一预设阈值的大小关系确定存储区域是否符合内存回收条件。96.在本发明的一个实施例中,内存回收条件例如可以实现为无效数据量大于第一预设阈值,第一预设阈值的取值可以由本领域技术人员根据实际的应用需求进行灵活设置。97.根据本发明的实施例,在确定一存储区域中的无效数据量大于第一预设阈值的情况下,可以确定该存储区域中存在较多的无效数据,此时可以对该存储区域执行内存回收操作,以释放该存储区域的存储空间。98.或者,99.基于无效数据量,确定对应存储区域的无效数据比例值;100.基于无效数据比例值与第二预设阈值的大小关系确定存储区域是否符合内存回收条件。101.在本发明的另一实施例中,还可以通过该存储区域中,无效数据的占比确定该存储区域是否符合内存回收条件。此时,内存回收条件可以为该存储区域中无效数据的比例值大于第二预设阈值,第二预设阈值可以为区间0至1之间的任意数值,第二预设阈值的取值可以由本领域技术人员根据实际的应用需求进行灵活设置。102.根据本发明的实施例,无效数据比例值可以通过对存储区域中的无效数据量除以该存储区域中的数据总量的方式计算得到。103.根据本发明的实施例,通过在对存储区域执行内存回收操作之前,首先判断存储区域是否符合内存回收条件,并在存储区域中存在较多无效数据,或者存储区域中的无效数据超过一定占比后,才对存储区域进行内存回收,从而可以减少数据重写次数。104.根据本发明的实施例,确定多个存储区域中,是否存在符合内存回收条件的第二存储区域具体可以实现为:105.按照预设检索频率对多个存储区域进行检索,以确定多个存储区域中,是否存在符合内存回收条件的第二存储区域。106.根据本发明的实施例,数据访问方法还包括:107.获取针对存储区域中存储的至少一个第二数据的删除请求;108.响应于删除请求,将存储节点中记录的与第二数据对应的第二位置信息标记为已删除。109.根据本发明的实施例,在分布式存储系统中,若用户想要删除一个聚合文件中的数据,由于分布式文件系统通常仅支持追加写入操作,所以在用户指示删除一个聚合文件中的数据时,并非真正地删除了这个数据,而是将这个数据标记为已删除,该数据仍继续占用数据节点中的存储空间。110.遍历多个存储区域,确定多个存储区域的无效数据量包括:111.遍历存储节点中记录的与每个存储区域存储的数据对应的位置信息;112.通过确定位置信息是否具有已删除标记确定存储区域的无效数据量。113.根据本发明的实施例,由于在用户指示删除某个数据时,将会对对应数据标记已删除,从而,在确定存储区域的无效数据量时,可以将存储区域中标记为已删除的数据确定为无效数据。114.图3示意性示出了本发明实施例提供的内存回收的示意图。115.接入节点可以按照一定的检索频率,对数据节点中的多个存储区域进行扫描,以确定是否存在符合内存回收条件的第二存储区域。具体而言,接入节点可以依次遍历多个存储区域,并判断该存储区域是否符合内存回收条件,若符合,则对该存储区域进行内存回收,若不符合,则继续扫描下一个存储区域。116.对于符合内存回收条件的存储区域,接入节点可以将该存储区域中存储的数据读取出来,然后删除这些数据中的无效数据,然后将剩余的有效数据再次写入该存储区域。117.例如,存储区域中可以存储有数据1至数据5,其中,用户指示将数据2与数据3删除,并且该存储区域符合内存回收条件。那么接入节点可以读取该存储区域,获取到数据1至数据5,然后将数据2与数据3删除,再将数据1、数据4与数据5重新写入该存储区域。如此以来,数据2与数据3即被从存储设备层面删除,不再占用存储设备中的存储空间。118.根据本发明的实施例,计算节点用于记录多个存储区域的访问路径;数据访问方法还包括:119.获取针对第一数据的读取请求;120.响应于读取请求,从存储节点读取用于存储第一数据的第一存储区域的标识信息以及位置信息;121.基于标识信息,读取计算节点,确定第一存储区域的访问路径;122.基于访问路径以及位置信息,读取第一存储区域,获得第一数据。123.图4示意性示出了本发明实施例提供的数据读取过程的示意图。124.如图4所示,在接入节点获取到来自客户端的针对第一数据的读取请求后,可以依次读取计算节点以及存储节点,以获取第一数据的索引信息。具体而言,接入节点可以首先读取存储节点,以从存储节点中获取用于存储第一数据的第一存储区域的标识信息,以及第一数据在第一存储区域的存储位置信息;进一步的,获取到第一存储区域的标识信息后,接入节点可以再读取计算节点,以基于第一存储区域的标识信息,获取第一存储区域的访问路径。125.在获取到第一存储区域的访问路径以及第一数据在第一存储区域的存储位置后,即可以首先利用访问路径访问第一存储区域,然后再利用位置信息访问第一存储区域的对应的存储空间,以获取第一数据。126.根据本发明的实施例,基于标识信息,读取计算节点,确定第一存储区域的访问路径具体可以实现为:127.确定缓存中是否存在与第一存储区域对应的第一文件句柄;128.若缓存中存在与第一存储区域对应的第一文件句柄,从第一文件句柄中确定访问路径。129.根据本发明的实施例,第一存储区域的访问路径可以存储在第一存储区域对应的第一文件句柄中。130.根据本发明的实施例,若第一文件句柄已经保存在缓存中,则可以直接从缓存中获取文件句柄,并获取到第一存储区域的访问路径,而无需访问计算节点。131.根据本发明的实施例,数据访问方法还包括:132.若缓存中不存在与第一存储区域对应的第一文件句柄,则打开第一存储区域,以生成第一文件句柄;133.将第一文件句柄加入至缓存中。134.根据本发明的实施例,若第一文件句柄没有存储至缓存中,则可以首先访问计算节点,从计算节点中获取第一缓存区域的访问路径,然后利用第一访问路径访问第一存储区域,并将第一存储区域置为打开状态,此时,将会生成与第一存储区域对应的第一文件句柄,可以将第一文件句柄存储至缓存中,如此以来,当下次数据读取操作需要访问第一存储区域时,则可以直接从缓存中获取第一文件句柄,并获取第一存储区域的访问路径,而无需访问计算节点,降低打开访问第一存储区域的远程过程调用(remoteprocedurecall,rpc)开销。135.图5示意性示出了本发明一个实施例提供的一种数据访问装置的框图,如图2所示,该数据访问装置可以包括:136.第一获取模块501,用于获取数据存储请求,确定待存储的第一数据;137.第一确定模块502,用于从数据节点中预先划分的多个存储区域中,确定第一存储区域;138.第一写入模块503,用于将第一数据追加写入第一存储区域;139.第二确定模块504,用于确定第一存储区域的标识信息,以及第一数据在第一存储区域的第一位置信息;140.第二写入模块505,用于将标识信息写入计算节点,将标识信息以及第一位置信息对应写入存储节点。141.根据本发明的实施例,第一确定模块502包括:142.第一确定子模块,用于从多个存储区域中确定处于可写入状态的第一存储区域。143.根据本发明的实施例,第一确定子模块包括:144.句柄获取单元,用于获取缓存中存储的至少一个文件句柄,每个文件句柄对应于数据节点中预先划分的一个存储区域,文件句柄在存储区域被置为可写入状态时存储至缓存;145.句柄确定单元,用于从至少一个文件句柄中确定第一文件句柄;146.区域确定单元,用于将第一文件句柄对应的存储区域确定为第一存储区域。147.根据本发明的实施例,数据访问装置还包括:148.第一判定模块,用于确定多个存储区域中,是否存在符合内存回收条件的第二存储区域;149.内存回收模块,用于在多个存储区域中存在符合内存回收条件的第二存储区域的情况下,对第二存储区域进行内存回收操作,以释放第二存储区域的存储空间。150.根据本发明的实施例,第一判定模块包括:151.遍历子模块,用于遍历多个存储区域,确定多个存储区域的无效数据量;152.条件确定子模块,用于基于无效数据量确定对应的存储区域是否符合内存回收条件。153.根据本发明的实施例,条件确定子模块包括:154.第一确定单元,用于基于无效数据量与第一预设阈值的大小关系确定存储区域是否符合内存回收条件;155.或者,156.第二确定单元,用于基于无效数据量,确定对应存储区域的无效数据比例值;157.第三确定单元,用于基于无效数据比例值与第二预设阈值的大小关系确定存储区域是否符合内存回收条件。158.根据本发明的实施例,第一判定模块包括:159.检索子模块,用于按照预设检索频率对多个存储区域进行检索,以确定多个存储区域中,是否存在符合内存回收条件的第二存储区域。160.根据本发明的实施例,数据访问装置还包括:161.删除请求获取模块,用于获取针对存储区域中存储的至少一个第二数据的删除请求;162.删除模块,用于响应于删除请求,将存储节点中记录的与第二数据对应的第二位置信息标记为已删除;163.根据本发明的实施例,遍历子模块包括:164.遍历单元,用于遍历存储节点中记录的与每个存储区域存储的数据对应的位置信息;165.无效数据确定单元,用于通过确定位置信息是否具有已删除标记确定存储区域的无效数据量。166.根据本发明的实施例,计算节点用于记录多个存储区域的访问路径。167.根据本发明的实施例,数据访问装置还包括:168.读取请求获取模块,用于获取针对第一数据的读取请求;169.信息获取模块,用于响应于读取请求,从存储节点读取用于存储第一数据的第一存储区域的标识信息以及位置信息;170.路径确定模块,用于基于标识信息,从计算节点确定第一存储区域的访问路径;171.数据获取模块,用于基于访问路径以及位置信息,从第一存储区域获得第一数据。172.根据本发明的实施例,路径确定模块包括:173.句柄确定单元,用于确定缓存中是否存在与第一存储区域对应的第一文件句柄;174.路径确定单元,用于若缓存中存在与第一存储区域对应的第一文件句柄,从第一文件句柄中确定访问路径。175.根据本发明的实施例,数据访问装置还包括:176.句柄生成模块,用于若缓存中不存在与第一存储区域对应的第一文件句柄,则打开第一存储区域,以生成第一文件句柄;177.句柄缓存模块,用于将第一文件句柄加入至缓存中。178.图5的数据访问装置可以执行图1所示实施例的数据访问方法,其实现原理和技术效果不再赘述。对于上述实施例中的数据访问装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。179.图6示意性示出了本发明一个实施例提供的一种数据处理系统的框图,数据处理系统600包括接入节点601、分布式存储系统602以及存储节点603,分布式存储系统602包括计算节点6021以及数据节点6022:180.接入节点6301,用于执行本发明实施例提供的数据访问方法;181.数据节点6022,用于提供多个存储区域,以及接收来自接入节点的第一数据,并将第一数据存储至多个存储区域中的第一存储区域;182.计算节点6021,用于接收来自接入节点的用于标识第一存储区域的标识信息;183.存储节点603,用于接收来自接入节点的用于标识第一数据在第一存储区域存储位置的位置信息。184.在本发明的一个实施例中,分布式存储系统可以实现为hadoop分布式文件系统(hadoopdistributedfilesystem,hdfs)。185.在一个可能的设计中,本发明实施例提供的数据访问装置可以实现为计算设备,如图7所示,该计算设备可以包括存储组件701以及处理组件702;186.存储组件701存储一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理组件702调用执行,用以实现本发明实施例提供的数据访问方法。187.当然,计算设备必然还可以包括其他部件,例如输入/输出接口、通信组件等。输入/输出接口为处理组件和外围接口模块之间提供接口,上述外围接口模块可以是输出设备、输入设备等。通信组件被配置为便于计算设备和其他设备之间有线或无线方式的通信等。188.其中,该计算设备可以为物理设备或者云计算平台提供的弹性计算主机等,此时计算设备即可以是指云服务器,上述处理组件、存储组件等可以是从云计算平台租用或购买的基础服务器资源。189.当计算设备为物理设备时,可以实现成多个服务器或终端设备组成的分布式集群,也可以实现成单个服务器或单个终端设备。190.本发明实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被计算机执行时可以实现本发明实施例提供的数据访问方法。191.本发明实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被计算机执行时可以实现本发明实施例提供的数据访问方法。192.其中,前文相应实施例中的处理组件可以包括一个或多个处理器来执行计算机指令,以完成上述的方法中的全部或部分步骤。当然处理组件也可以为一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。193.存储组件被配置为存储各种类型的数据以支持在设备中操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。194.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。195.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。196.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。197.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12当前第1页12
技术特征:
1.一种数据访问方法,其特征在于,包括:获取数据存储请求,确定待存储的第一数据;从数据节点中预先划分的多个存储区域中,确定第一存储区域;将所述第一数据追加写入所述第一存储区域;确定所述第一存储区域的标识信息,以及所述第一数据在所述第一存储区域的第一位置信息;将所述标识信息写入计算节点,将所述标识信息以及所述第一位置信息对应写入存储节点。2.根据权利要求1所述的方法,其特征在于,所述从数据节点中预先划分的多个存储区域中,确定第一存储区域包括:从多个存储区域中确定处于可写入状态的第一存储区域。3.根据权利要求2所述的方法,其特征在于,所述从多个存储区域中确定处于可写入状态的第一存储区域包括:获取缓存中存储的至少一个文件句柄,每个所述文件句柄对应于所述数据节点中预先划分的一个存储区域,所述文件句柄在所述存储区域被置为可写入状态时存储至所述缓存;从所述至少一个文件句柄中确定第一文件句柄;将所述第一文件句柄对应的存储区域确定为所述第一存储区域。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:确定所述多个存储区域中,是否存在符合内存回收条件的第二存储区域;在多个存储区域中存在符合内存回收条件的第二存储区域的情况下,对所述第二存储区域进行内存回收操作,以释放所述第二存储区域的存储空间。5.根据权利要求4所述的方法,其特征在于,所述确定所述多个存储区域中,是否存在符合内存回收条件的第二存储区域包括:遍历所述多个存储区域,确定所述多个存储区域的无效数据量;基于所述无效数据量确定对应的所述存储区域是否符合所述内存回收条件。6.根据权利要求5所述的方法,其特征在于,所述基于所述无效数据量确定对应的所述存储区域是否符合所述内存回收条件包括:基于所述无效数据量与第一预设阈值的大小关系确定所述存储区域是否符合所述内存回收条件;或者,基于所述无效数据量,确定对应所述存储区域的无效数据比例值;基于所述无效数据比例值与第二预设阈值的大小关系确定所述存储区域是否符合所述内存回收条件。7.根据权利要求4所述的方法,其特征在于,所述确定所述多个存储区域中,是否存在符合内存回收条件的第二存储区域包括:按照预设检索频率对所述多个存储区域进行检索,以确定所述多个存储区域中,是否存在符合内存回收条件的第二存储区域。8.根据权利要求5所述的方法,其特征在于,所述方法还包括:
获取针对存储区域中存储的至少一个第二数据的删除请求;响应于所述删除请求,将所述存储节点中记录的与所述第二数据对应的第二位置信息标记为已删除;所述遍历所述多个存储区域,确定所述多个存储区域的无效数据量包括:遍历存储节点中记录的与每个所述存储区域存储的数据对应的位置信息;通过确定所述位置信息是否具有已删除标记确定所述存储区域的无效数据量。9.根据权利要求1所述的方法,其特征在于,所述计算节点用于记录多个所述存储区域的访问路径;所述方法还包括:获取针对所述第一数据的读取请求;响应于所述读取请求,从所述存储节点读取用于存储所述第一数据的第一存储区域的标识信息以及所述位置信息;基于所述标识信息,从所述计算节点确定所述第一存储区域的访问路径;基于所述访问路径以及所述位置信息,从所述第一存储区域获得所述第一数据。10.根据权利要求9所述的方法,其特征在于,所述基于所述标识信息,读取所述计算节点,确定所述第一存储区域的访问路径包括:确定缓存中是否存在与所述第一存储区域对应的第一文件句柄;若缓存中存在与所述第一存储区域对应的第一文件句柄,从所述第一文件句柄中确定所述访问路径。11.根据权利要求10所述的方法,其特征在于,所述方法还包括:若缓存中不存在与所述第一存储区域对应的第一文件句柄,则打开所述第一存储区域,以生成所述第一文件句柄;将所述第一文件句柄加入至缓存中。12.一种数据处理系统,其特征在于,包括接入节点、分布式存储系统以及存储节点,所述分布式存储系统包括计算节点以及数据节点:所述接入节点,用于执行如权利要求1至11任一项所述的数据访问方法;所述数据节点,用于提供多个存储区域,以及接收来自所述接入节点的第一数据,并将所述第一数据存储至所述多个存储区域中的第一存储区域;所述计算节点,用于接收来自所述接入节点的用于标识所述第一存储区域的标识信息;所述存储节点,用于接收来自所述接入节点的用于标识第一数据在所述第一存储区域存储位置的位置信息。13.一种计算设备,其特征在于,包括处理组件以及存储组件;所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行,实现如权利要求1至11任一项所述的数据访问方法。14.一种计算机存储介质,其特征在于,存储有计算机程序,所述计算程序被计算机执行时,实现如权利要求1至11任一项所述的数据访问方法。

技术总结
本申请实施例提供一种数据访问方法、数据处理系统、计算设备及计算机存储介质。其中,数据访问方法,包括:获取数据存储请求,确定待存储的第一数据;从数据节点中预先划分的多个存储区域中,确定第一存储区域;将所述第一数据追加写入所述第一存储区域;确定所述第一存储区域的标识信息,以及所述第一数据在所述第一存储区域的第一位置信息;将所述标识信息写入计算节点,将所述标识信息以及所述第一位置信息对应写入存储节点。本发明实施例提供的技术方案在计算节点中,可以仅保存第一存储区域的标识信息,而无需保存大量的具体数据的元数据,节省了计算节点的内存。节省了计算节点的内存。节省了计算节点的内存。


技术研发人员:冯昊 汪翔 沈春辉 张为
受保护的技术使用者:阿里云计算有限公司
技术研发日:2023.04.14
技术公布日:2023/7/25
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐