CN117093408A - 数据处理方法以及装置 - Google Patents

数据处理方法以及装置 Download PDF

Info

Publication number
CN117093408A
CN117093408A CN202311362286.3A CN202311362286A CN117093408A CN 117093408 A CN117093408 A CN 117093408A CN 202311362286 A CN202311362286 A CN 202311362286A CN 117093408 A CN117093408 A CN 117093408A
Authority
CN
China
Prior art keywords
state
identifier
association module
counting
determining
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
CN202311362286.3A
Other languages
English (en)
Other versions
CN117093408B (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.)
Hundsun Technologies Inc
Original Assignee
Hundsun Technologies Inc
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 Hundsun Technologies Inc filed Critical Hundsun Technologies Inc
Priority to CN202311362286.3A priority Critical patent/CN117093408B/zh
Publication of CN117093408A publication Critical patent/CN117093408A/zh
Application granted granted Critical
Publication of CN117093408B publication Critical patent/CN117093408B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment

Abstract

本说明书实施例提供数据处理方法以及装置,其中所述数据处理方法包括:接收针对关联模块的引用计数请求,其中,所述引用计数请求中携带计数类型,所述关联模块包含被引用对象和引用对象;获取所述被引用对象的第一状态标识和所述引用对象对应的第二状态标识;根据所述第一状态标识、所述第二状态标识和所述计数类型确定所述关联模块的当前处理状态;确定所述当前处理状态对应的关联模块处理规则,并基于所述关联模块处理规则处理所述关联模块。通过引用对象和被引用对象对应的第一状态标识和第二状态标识,来确定关联模块的当前处理状态,从而可以依据当前处理状态对关联模型进行进一步的处理,提升了引用计数的处理性能。

Description

数据处理方法以及装置
技术领域
本说明书实施例涉及计算机技术领域,特别涉及一种数据处理方法。
背景技术
目前的引用计数方法,将内存对象被引用的次数进行保存,在增加或减少对内存的引用时,维护计数值;在引用计数值归零时释放该内存对象,从而提升内存利用率。在对共享内存进行引用的过程中会发生故障中断的情况,为了解决该问题,目前通常利用记录回滚日志、重做日志的方式,对中断进行恢复。
由于引用计数的增加或减少是一种频繁的操作,并且磁盘操作的性能远低于内存操作。因此利用回滚日志、重做日志记录操作的方式,不仅会大大增加日志文件的磁盘空间占用量,并且在高性能场景下这种频繁的延迟是不能接受的。
因此,如何在保证程序高性能的基础上实现引用计数的故障恢复,成为本领域技术人员亟待解决的技术问题。
发明内容
有鉴于此,本说明书实施例提供了一种数据处理方法。本说明书一个或者多个实施例同时涉及一种数据处理装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术难点。
根据本说明书实施例的第一方面,提供了一种数据处理方法,包括:
接收针对关联模块的引用计数请求,其中,所述引用计数请求中携带计数类型,所述关联模块包含被引用对象和引用对象;
获取所述被引用对象的第一状态标识和所述引用对象对应的第二状态标识;
根据所述第一状态标识、所述第二状态标识和所述计数类型确定所述关联模块的当前处理状态;
确定所述当前处理状态对应的关联模块处理规则,并基于所述关联模块处理规则处理所述关联模块。
根据本说明书实施例的第二方面,提供了一种数据处理装置,包括:
接收模块,被配置为接收针对关联模块的引用计数请求,其中,所述引用计数请求中携带计数类型,所述关联模块包含被引用对象和引用对象;
获取模块,被配置为获取所述被引用对象的第一状态标识和所述引用对象对应的第二状态标识;
确定模块,被配置为根据所述第一状态标识、所述第二状态标识和所述计数类型确定所述关联模块的当前处理状态;
处理模块,被配置为确定所述当前处理状态对应的关联模块处理规则,并基于所述关联模块处理规则处理所述关联模块。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据处理方法的步骤。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述数据处理方法的步骤。
根据本说明书实施例的第五方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述数据处理方法的步骤。
本说明书一个实施例实现了接收针对关联模块的引用计数请求,其中,所述引用计数请求中携带计数类型,所述关联模块包含被引用对象和引用对象;获取所述被引用对象的第一状态标识和所述引用对象对应的第二状态标识;根据所述第一状态标识、所述第二状态标识和所述计数类型确定所述关联模块的当前处理状态;确定所述当前处理状态对应的关联模块处理规则,并基于所述关联模块处理规则处理所述关联模块。
通过被引用对象的第一状态标识和引用对象的第二状态标识,来确定关联模块的当前处理状态,从而可以依据当前处理状态对关联模型进行进一步的处理,节省了引用计数过程中发生故障中断需要根据日志恢复中断前处理状态的时长消耗,提升了引用计数的处理性能。
附图说明
图1是本说明书一个实施例提供的一种数据处理方法的场景示意图;
图2是本说明书一个实施例提供的一种数据处理方法的流程图;
图3是本说明书一个实施例提供的一种增加计数类型的状态判断的流程图;
图4是本说明书一个实施例提供的一种减少计数类型的状态判断的流程图;
图5是本说明书一个实施例提供的一种数据处理方法的处理过程流程图;
图6是本说明书一个实施例提供的一种数据处理装置的结构示意图;
图7是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
此外,需要说明的是,本说明书一个或多个实施例所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
引用计数:(reference counting)是计算机中一种常用的内存管理技术,它是指将内存对象被引用的次数保存起来,当增加或减少引用时,维护该计数值。并且,当引用计数值归零时,释放该内存对象。该技术也解决了内存对象的共享问题,大大提升了内存的利用率。
共享内存:(shared memory)是计算机中多进程间通信和数据共享的方式。同时,它可以采用文件等媒介对共享内存区域进行备份,从而使得内存的操作具有了“持久化”的效果。
回滚日志:(undo log)数据库事务开始之前,会将要进行的操作以及与该操作对应的数据放到Undo日志里,当事务回滚时或者数据库崩溃时,可以利用undo log撤销未提交事务对数据库产生的影响。
重做日志:(redo log)也叫重放日志。和undo log回滚日志一样,都是在数据库发生意外时用来进行数据恢复的。
目前,为了达到故障后快速恢复的目的,通常会利用发生故障点时的持久化数据,外加回滚日志(undo log)、重做日志(redo log)进行快速恢复。但是,由于引用计数操作是很频繁的,这样会大大增加日志文件的磁盘空间占用,同时引起程序性能的下降。
本说明书的数据处理方法的实施例背景,但该方案运用不局限于此实施例:该方案的实施例为内存数据库,该内存数据库的运行模式为:数据库服务程序以多进程的方式运行,该服务进程可以随时启动、停止,也允许该服务进程在运行过程中出现异常而崩溃,随后又再次启动。数据库的数据部分(如:表,索引等)使用有名的共享内存方式,在数据库服务进程间共享。在机器不发生重启或者掉电的情况下,数据部分常驻于内存中,且对数据的读取与写入符合内存操作的一般特性。该方案可应用于在数据库的数据部分有效的前提下(即机器不发生重启或者掉电),解决数据库服务程序以多进程模式运行时,数据的共享,以及当服务进程崩溃后再次启动时,数据共享的恢复。
数据共享的场景举例:
假设有A、B两个数据库服务进程在运行中,其中A对于某记录进行读取操作,而B欲将对于同一条记录进行更新操作。为了达到A、B进程的并发,通常不使用粗粒度的排它锁(即在A读取记录期间独占锁住),而是采用“多版本”的方式进行更新,即B进程会创建一条该记录的副本,在此副本上进行更新(不影响A读取记录),只在最终的提交阶段进行细粒度的排它操作。
同时考虑到更新操作一般更新少量的字段,而大部分字段是不变的,因此,为了提升性能和节约内存,对于更新时创建的记录副本,不进行所有字段的复制拷贝,对于一些大字段就使用本方案进行数据共享(类似varchar,blob类型的可变长度字段)。
数据共享恢复的场景举例:
由于数据库服务进程本身是一个多线程的工作方式,其它线程可能(诸如内存访问越界等)引起本进程的崩溃,而本方案的数据共享操作正在进行中,此次崩溃行为就中断了原本进行中的数据共享操作。当进程再次启动时,就需要进行本方案描述的数据共享恢复操作,从被中断的地方进行恢复,以维护数据共享的正确性。
整个过程也需要数据库的一些额外操作辅助完成。例如,在更新记录,创建副本,共享数据字段时崩溃。那么,在恢复时,需要通过数据库的回滚日志(undo log)及重做日志(redo log),定位到这条被更新的记录,同时要清理并再次获取这条记录的锁资源等。
本说明书的数据处理方法,在引用者和被引用对象上,增加很小的空间(8字节、4字节等),外加特定的增加引用与减少引用的过程步骤,即可进行正确的引用计数及故障恢复。
在本说明书中,提供了一种数据处理方法,本说明书同时涉及一种数据处理装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
参见图1,图1示出了根据本说明书一个实施例提供的一种数据处理方法的场景示意图,具体包括:
确定被引用对象“共享内存”以及引用对象“业务处理任务”,并由引用对象和被引用对象组成如图1中虚线框所示的关联模块,图1中X、Y表示引用者,X、Y通过箭头指向的是共享的内存对象。N是初始引用计数值;已预先为被引用对象设置8个字节的第一状态标识,以及为引用对象设置8个字节的第二状态标识;第一状态标识中包含4字节的第一对象标识和4字节的第一计数标识,其中,第一计数标识表示当前引用共享内存的对象总数量,在第一计数标识的属性值为0的情况下,释放该共享内存从而提升内存利用率;第二状态标识中包含4字节的第二对象标识和4字节的第二计数标识,其中,第二对象标识和第二计数标识均不代表具体的处理含义,仅用于确定关联模块的当前处理状态;引用对象和共享内存都具有一个头部信息,共享内容的头部信息为上述第一状态标识,引用对象的头部信息为上述第二状态标识;头部信息均由2个字段组成,即:{标识,计数值},在本实施例中,该头部信息为8字节,每个字段分别占用4字节,在主流CPU上,都可以通过一个指令,完成8字节的读取、写入、比较与交换操作。
接收针对关联模块的引用计数请求,由于无法确定引用计数请求是新发起的请求,还是在监测到故障后重新发起的请求,故需要通过读取第一状态标识、第二状态标识以及计数类型来确定关联模块的当前处理状态。
具体的:在计数类型为增加计数类型的情况下,即增加共享内存中被引用对象的数量的情况下,判断引用对象与被引用对象之间是否存在引用关系,即图1中的关联模块中是否包含由引用对象指向被引用对象的箭头,即确定引用对象与被应用对象之间是否存在引用关系;
若不包含引用关系,则确定当前处理状态可以为第一增加状态、第二增加状态或第三增加状态;进一步确定第一对象标识的属性值是否为引用对象X,若否,则确定当前处理状态为第一增加状态或第二增加状态,进一步根据第二计数标识为0确定第一增加状态,根据第二计数标识为N确定第二增加状态,若是,则确定当前处理状态为第三增加状态;进一步根据第二计数标识在第一增加状态或第二增加状态中锁定当前处理状态,具体为第二计数标识为初始计数标识0的情况下确定当前处理状态为第一增加状态,在第二计数标识为当前计数标识N的情况下确定当前处理状态为第二增加状态,N表示当前共享内存被引用的总次数。
若包含引用关系,则确定当前处理状态为第四增加状态、第五增加状态或第六增加状态;进一步确定第一对象标识对应的属性值,若第一对象标识不为引用对象标识X,则确定当前处理状态为第五增加状态或第六增加状态,进一步根据第二计数标识为N确定第五增加状态,根据第二计数标识为0确定第六增加状态,若第一对象标识为引用对象标识X,则确定当前处理状态为第四增加状态,若第一对象标识非初始对象标识0或引用对象标识X,则表示共享内存正在被其他引用对象处理。
在增加计数类型的情况下,基于上述判断当前处理状态的过程,确定关联模块对应的当前处理状态,进而基于当前处理状态对应的状态处理规则逐步向下一状态进行处理,直至达到第六增加状态,完成对引用计数请求的处理,建立了引用对象X与被引用对象共享内存之间的引用关系。
在计数类型为减少计数类型的情况下,即减少共享内存中被引用对象的数量的情况下,判断引用对象与被引用对象之间是否存在引用关系,即图1中的关联模块中是否包含由引用对象指向被引用对象的箭头;
若存在引用关系,则确定当前处理状态可以是第一减少状态、第二减少状态、第三减少状态、第四减少状态或第五减少状态;进一步确定第一对象标识是否为引用对象标识X,若否,则确定当前处理状态可以是第一减少状态、第二减少状态或第五减少状态,进一步根据第二计数标识为0确定第一减少状态、第二计数标识为N确定第二减少状态、第二计数标识为预设计数标识-1确定第五减少状态,若是,则在第一对象标识为引用对象标识X的情况下确定当前处理状态为第三减少状态或第四减少状态,根据第二计数标识为N确定第三减少状态、根据第二计数标识为-1确定第四减少状态;若第一对象标识非0或X,则表示共享内存正在被其他引用对象处理。
若不存在引用关系,则确定当前处理状态可以是第六减少状态或第七减少状态,根据第二计数标识为-1确定第六减少状态,根据第二计数标识为0确定第七减少状态。
在减少计数类型的情况下,基于上述判断当前处理状态的过程,确定关联模块对应的当前处理状态,进而基于当前处理状态对应的状态处理规则逐步向下一状态进行处理,直至达到第七减少状态,完成对引用计数请求的处理,删除了引用对象X与被引用对象共享内存之间的引用关系。
本说明书的数据处理方法,通过引用对象和被引用对象对应的第一状态标识和第二状态标识,来确定关联模块的当前处理状态,从而可以依据当前处理状态对关联模型进行进一步的处理,节省了引用计数过程中发生故障中断需要根据日志恢复中断前处理状态的时长消耗,提升了引用计数的处理性能。
参见图2,图2示出了根据本说明书一个实施例提供的一种数据处理方法的流程图,具体包括以下步骤。
步骤202:接收针对关联模块的引用计数请求,其中,所述引用计数请求中携带计数类型,所述关联模块包含被引用对象和引用对象。
其中,关联模块是指由引用对象和被引用对象组成的模块,该关联模块中的引用对象和被引用对象之间已建立了引用关系,或还未建立引用关系;引用计数请求是指统计引用对象引用被引用对象次数的请求;计数类型是指对引用计数的数值进行调整的类型,可以包括增加计数类型和减少计数类型,增加计数类型是指对引用计数的数值进行增加处理的类型,减少类型是指对引用计数的数值进行减少处理的类型;引用对象是指需要通过引用被引用对象中的数据进行业务处理的业务处理任务;被引用对象是指可以向引用对象共享业务数据的对象,例如,可以被不同引用对象进行访问的共享内存。
实际应用中,通过引用任务确定引用对象和被引用对象,由基于引用任务确定的引用对象和被引用对象组成关联模块;接收针对关联模块的引用计数请求,并且在引用计数请求中携带有计数类型,以便后续基于计数类型实现对关联模块处理。
具体的,引用计数请求可以是建立或解除引用对象与被引用对象之间引用关系的请求,也可以是在检测到建立或解除引用对象与被引用对象过程发生故障的请求下,重新发出的处理请求;即基于引用计数请求可以触发对关联模块中引用对象与被引用对象的处理。
在本说明书一具体实施方式中,根据引用请求确定要建立业务处理任务与共享内存之间的引用关系,则基于业务处理任务和共享内存组成关联模块,其中,业务处理任务为引用对象,共享内存为被引用对象;接收针对关联模块的引用计数请求,其中,引用计数请求中包含增加计数类型,即需要新增共享内存中引用对象的类型。
在本说明书另一具体实施方式中,沿用上例,监测到建立业务处理任务与共享内存之间引用关系的过程中,执行过程发生故障中断,则重新接收故障中断后发出的引用计数请求。
步骤204:获取所述被引用对象的第一状态标识和所述引用对象对应的第二状态标识。
其中,第一状态标识是指用于标识被引用对象的字段;第二状态标识是指用于标识引用对象的字段。
具体的,在接收到针对关联模块的引用计数请求之后,响应于引用计数请求获取被引用对象的第一状态标识以及引用对象的第二状态标识,以便后续基于第一状态标识和第二状态标识对关联模块做进一步的处理。
在实际应用中,获取所述被引用对象的第一状态标识和所述引用对象对应的第二状态标识的方法可以包括:
获取所述被引用对象对应的第一对象标识和第一计数标识;
获取所述引用对象对应的第二对象标识和第二计数标识。
其中,第一对象标识是指被引用对象用于标识引用被引用对象的对象标识;第一计数标识是指被引用对象被引用的总次数;第二对象标识是指用于标识引用对象的标识;第二计数标识是指引用对象对应的被引用对象被引用的总次数。
具体的,在获取所述被引用对象的第一状态标识和所述引用对象对应的第二状态标识之前,还包括:
为被引用对象设置第一状态标识以及为引用对象设置第二状态标识。
在实际应用中,可以为引用对象和被引用对象预先设置预设大小的空间,以用于存储标识,例如,预先分别为引用对象和被引用对象设置8个字节的空间;实际应用中,预设的空间的大小可以是8个字节、4个字节以及2个字节,以便可以利用一个指令即可实现对第一状态标识或第二状态标识的调用。
在本说明书一具体实施方式中,沿用上例,预先为业务处理任务和共享内存设置了8个字节的空间;获取业务处理任务对应的第二状态标识,即获取引用对象的第二对象标识“X”和第二计数标识“0”;获取共享内存对应的第一状态标识,即获取被引用对象的第一对象标识“0”以及第一计数标识“N”,其中,N表示共享内存当前被引用的总次数。
通过获取被引用对象的第一状态标识和引用对象对应的第二状态标识,以便后续基于第一状态标识和第二状态标识对关联模块做进一步的处理。
步骤206:根据所述第一状态标识、所述第二状态标识和所述计数类型确定所述关联模块的当前处理状态。
其中,当前处理状态是指关联模块针对引用计数任务的处理状态。
具体的,在获取到第一状态标识、第二状态标识和所述计数类型之后,即可以确定关联模块的当前处理状态,即确定引用计数过程处理到哪个步骤,以便基于此时所处的状态继续完成引用计数任务。
在实际应用中,根据所述第一状态标识、所述第二状态标识和所述计数类型确定所述关联模块的当前处理状态的方法可以包括:
根据所述第一对象标识、所述第二计数标识和所述计数类型确定所述关联模块的当前处理状态。
具体的,第一状态标识中包含第一对象标识和第一计数标识,第二状态标识中包含第二对象标识和第二计数标识;可以基于述第一对象标识、第二计数标识和计数类型来判断关联模块的当前处理状态。
实际应用中,计数类型包括增加计数类型和减少计数类型,其中,增加计数类型是指为被引用对象增加引用对象的处理任务类型,减少计数类型是指为被引用对象减少引用对象的处理任务类型。
具体的,在计数类型为增加计数类型的情况下,即所述计数类型包括增加计数类型;
根据所述第一对象标识、所述第二计数标识和所述计数类型确定所述关联模块的当前处理状态的方法可以包括:
判断所述被引用对象和引用对象之间是否存在引用关系;
若是,则在所述第一对象标识不为引用对象标识的情况下,根据所述第二计数标识确定所述关联模块为第五增加状态或第六增加状态,在所述第一对象标识为引用对象标识的情况下,确定所述关联模块为第四增加状态;
若否,则判断所述第一对象标识是否为引用对象标识;
若否,则根据所述第二计数标识确定所述关联模块为第一增加状态或第二增加状态;
若是,则确定所述关联模块为第三增加状态。
其中,初始对象标识是指第一对象标识在初始状态下的属性值,即被引用对象当前处于空闲状态下第一对象标识的属性值,例如,初始对象标识为“0”表示共享对象当前未被其他引用对象处理,即处于空闲状态;引用对象标识是指第一对象标识在与第二对象标识一致情况下的属性值。
具体的,先判断关联模块中的被引用对象和引用对象之间是否存在引用关系;若存在,则可以确定关联模块为第四增加状态、第五增加状态或第六增加状态;进一步地,确定第一对象标识对应的属性值为初始对象标识、引用对象标识或均不是;若不为引用对象标识,则可以确定关联模块为第五增加状态或第六增加状态,若为引用对象标识,则可以确定关联模块为第四增加状态,若第一对象标识的属性值不为初始对象标识或引用对象标识,则确定被引用对象在被其他对象引用,即其他对象在对被引用对象进行读或写的过程中,但不影响对关联模块的状态的判断以及后续的处理。
若不存在,则也判断第一对象标识是否为引用对象标识,若否,则基于第二计数标识确定关联模块为第一增加状态或第二增加状态,若是,则确定关联模块为第三增加状态,在第一对象标识非引用对象标识也非初始对象标识的情况下,确定被引用对象处于被其他对象引用的过程中。
进一步地,根据所述第二计数标识确定所述关联模块为第一增加状态或第二增加状态的方法可以包括:
在所述第二计数标识为初始计数标识的情况下,确定所述关联模块为第一增加状态;
在所述第二计数标识为当前计数标识的情况下,确定所述关联模块为第二增加状态。
其中,初始计数标识是指为引用对象设置的初始计数值,用于确定关联模块的当前处理状态;当前计数标识是指与第二计数标识的属性值一致的情况下的属性值。
具体的,若确定关联模块中引用对象与被引用对象之间不存在引用关系,则判断第一对象标识是否为引用对象标识,若否,则确定关联模块为第一增加状态或第二增加状态,进一步地,根据第二计数标识为初始计数标识,确定关联模块第一增加状态,根据第二计数标识为当前计数标识确定关联模块为第二增加状态;若是,则确定关联模块为第三增加状态,并且需要注意的是,若第一对象标识既非引用对象标识也非初始对象标识,则确定被引用对象在被其他对象引用中。
进一步地,根据所述第二计数标识确定所述关联模块为第五增加状态或第六增加状态的方法可以包括:
在所述第二计数标识为初始计数标识的情况下,确定所述关联模块为第六增加状态;
在所述第二计数标识为当前计数标识的情况下,确定所述关联模块为第五增加状态。
具体的,若确定关联模块中的引用对象和被引用对象之间存在引用关系,则进一步确定第一对象标识是否为引用对象标识,若否,则确定关联模块为第五增加状态或第六增加状态,进一步确定第二计数标识的属性值,在第二计数标识为初始计数标识的情况下,确定关联模块为第六增加状态,在第二计数标识为当前计数标识的情况下,确定关联模块为第五增加状态;若第一对象标识是引用对象标识,则确定关联模块为第四增加状态。
在本说明书一具体实施方式中,参见图3,图3是本说明书一个实施例提供的一种增加计数类型的状态判断的流程图,根据引用计数请求确定计数类型为增加计数类型,则根据增加计数类型的规则来判断关联模块的当前处理状态,具体为:302、确定计数类型为增加计数类型;304、判断业务处理任务和共享内存是否存在引用关系,若是,则执行步骤306,若否则执行步骤308;306、判断第一对象标识的是否为引用对象标识,若否,即第一对象标识不为引用对象标识的情况下,执行步骤310,若是,即第一对象标识为引用对象标识的情况下,执行步骤312;308、判断第一对象标识是否为引用对象标识,若否,则执行步骤314,若是则执行步骤316;310、确定当前处理状态为第五增加状态或第六增加状态;具体的,进一步确定第二计数标识对应的属性值,若第二计数标识为初始计数标识,则确定为第六增加状态,若第二计数标识为当前计数标识,则确定为第五增加状态;312、确定当前处理状态为第四增加状态;314、确定当前处理状态为第一增加状态或第二增加状态;具体的,进一步确定第二计数标识的属性值,在第二计数标识为初始计数标识的情况下,确定当前处理状态为第一增加状态,在第二计数标识为当前计数表标识的情况下,确定当前处理状态为第二增加状态;316、确定当前处理状态为第三增加状态。
具体的,在计数类型为减少计数类型的情况下,即所述计数类型包括减少计数类型;
根据所述第一对象标识、所述第二计数标识和所述计数类型确定所述关联模块的当前处理状态的方法可以包括:
判断所述被引用对象和引用对象之间是否存在引用关系;
若否,则根据所述第二计数标识确定所述关联模块为第六减少状态或第七减少状态;
若是,则判断所述第一对象标识是否为引用对象标识;
若否,则根据所述第二计数标识确定所述关联模块为第一减少状态、第二减少状态或第五减少状态;
若是,则根据所述第二计数标识确定所述关联模块为第三减少状态或第四减少状态。
具体的,先判断关联模块中被引用对象和引用对象之间是否存在引用关系;若不存在,则可以确定关联模块为第六减少状态或第七减少状态;进一步地,基于第二计数标识确定关联模块的当前处理状态为第六减少状态还是第七减少状态;若存在,则可以确定当前处理状态为第一减少状态、第二减少状态、第五减少状态、第三减少状态或第四减少状态;进一步地,确定第一对象标识是否为引用对象标识,若否,则确定关联模块为第一减少状态、第二减少状态或第五减少状态,进一步可根据第二计数标识在三种状态中锁定当前处理状态,若是,则根据第二计数标识确定关联模块为第三减少状态或第四减少状态,并进一步根据第二计数标识在两种状态中锁定当前处理状态。
进一步地,根据所述第二计数标识确定所述关联模块为第一减少状态、第二减少状态或第五减少状态的方法可以包括:
在所述第二计数标识为初始计数标识的情况下,确定所述关联模块为第一减少状态;
在所述第二计数标识为当前计数标识的情况下,确定所述关联模块为第二减少状态;
在所述第二计数标识为预设计数标识的情况下,确定所述关联模块为第五减少状态。
其中,预设计数标识是指标识引用对象处于减少引用关系处理中的属性值,例如,预设计数标识为“-1”。
具体的,若确定关联模块中引用对象与被引用对象之间存在引用关系,则判断所述第一对象标识是否为引用对象标识,若否,则确定关联模块为第一减少状态、第二减少状态或第五减少状态;进一步确定第二计数标识的属性值,在所述第二计数标识为初始计数标识的情况下,确定所述关联模块为第一减少状态;在所述第二计数标识为当前计数标识的情况下,确定所述关联模块为第二减少状态;在所述第二计数标识为预设计数标识的情况下,确定所述关联模块为第五减少状态。
进一步地,根据所述第二计数标识确定所述关联模块为第三减少状态或第四减少状态的方法可以包括:
在所述第二计数标识为当前计数标识的情况下,确定所述关联模块为第三减少状态;
在所述第二计数标识为预设计数标识的情况下,确定所述关联模块为第四减少状态。
具体的,若确定关联模块中引用对象与被引用对象之间存在引用关系,并且第一对象标识为引用对象标识,进一步确定第二计数标识的属性值,在所述第二计数标识为当前计数标识的情况下,确定所述关联模块为第三减少状态;在所述第二计数标识为预设计数标识的情况下,确定所述关联模块为第四减少状态。
进一步地,根据所述第二计数标识确定所述关联模块为第六减少状态或第七减少状态的方法可以包括:
在所述第二计数标识为预设计数标识的情况下,确定所述关联模块为第六减少状态;
在所述第二计数标识为初始计数标识的情况下,确定所述关联模块为第七减少状态。
具体的,若确定关联模块中引用对象与被引用对象之间不存在引用关系,确定第二计数标识对应的属性值;在所述第二计数标识为预设计数标识的情况下,确定所述关联模块为第六减少状态;在所述第二计数标识为初始计数标识的情况下,确定所述关联模块为第七减少状态。
在本说明书一具体实施方式中,参见图4,图4是本说明书一个实施例提供的一种减少计数类型的状态判断的流程图,根据引用计数请求确定计数类型为减少计数类型,则根据减少计数类型的规则来判断关联模块的当前处理状态,具体为:402、确定计数类型为减少计数类型;404、判断业务处理任务和共享内存是否存在引用关系,若是,则执行步骤406,若否则执行步骤408;406、判断第一对象标识是否为引用对象标识,若是,则执行步骤410,若否,则执行步骤412;408、确定当前处理状态为第六处理状态或第七处理状态;具体的,根据第二计数标识的属性值确定关联模块为第六减少状态还是第七减少状态;410、确定当前处理状态为第三减少状态和第四减少状态;412、确定当前处理状态为第一减少状态、第二减少状态或第五减少状态。
在实际应用中,在所述第一对象标识非初始对象标识或引用对象标识的情况下,还包括:
继续执行获取所述被引用对象的第一状态标识和所述引用对象对应的第二状态标识的步骤,直至完成所述关联模块对应的引用计数任务。
具体的,在获取到的第一对象标识非初始对象标识或引用对象标识的情况下,可以确定被引用对象在被其他对象引用,则此时需要返回执行确定被引用对象的第一状态标识和引用对象的第二状态标识的步骤,从而在被引用对象不被其他对象引用的情况下,来完成关联模块对应的引用计数任务。
通过确定关联模块对应的当前处理状态,从而确定关联模块的处理情况,即使在引用计数任务未完全完成的情况下发生中断,仍可以基于第一对象标识、第二计数标识和计数类型确定关联模块的当前处理状态,从而提升故障中断恢复效率,避免记录过多的操作日志导致的程序执行效率低下的问题。
步骤208:确定所述当前处理状态对应的关联模块处理规则,并基于所述关联模块处理规则处理所述关联模块。
其中,关联模块处理规则是指对关联模块中的引用对象、被引用对象以及引用对象与被引用对象之间引用关系进行处理的规则。
具体的,确定关联模块的当前处理状态,通过当前处理状态可以确定针对关联模块的引用计数任务处理至哪个步骤,再基于当前处理状态进一步完成引用计数任务,而无需通过获取记载的操作日志进行故障恢复,从而提升故障恢复的效率。
进一步地,确定所述当前处理状态对应的关联模块处理规则,并基于所述关联模块处理规则处理所述关联模块的方法可以包括:
根据所述计数类型确定所述关联模块的目标关联模块处理规则,其中,所述目标关联模块处理规则包括各处理状态对应的状态处理规则;
根据所述当前处理状态在所述目标关联模块处理规则中确定当前处理状态对应的目标状态处理规则;
基于所述目标状态处理规则处理所述关联模块。
其中,目标关联模块处理规则是指目标计数类型对应的关联模块处理规则,其中,目标计数类型可以是增加计数类型也可以是减少计数类型;目标状态处理规则是指针对关联模块在目标状态执行的处理规则。
具体的,根据计数类型确定增加计数类型对应的关联模块处理规则以及减少计数类型对应的关联模块处理规则;进一步地,关联模块处理规则中包含关联模块的各处理状态对应的目标状态处理规则;在确定关联模块所处的当前处理状态,并基于当前处理状态对关联模块对应的引用计数任务进一步处理,直至完成引用计数任务。
在实际应用中,针对不同的当前处理状态,存在不同的状态处理规则,需要基于各当前处理状态对应的状态处理规则,继续执行针对关联模块的引用计数请求。
具体的,在所述计数类型为增加计数类型的情况下,基于所述目标状态处理规则处理所述关联模块,包括:
在所述当前处理状态为第一增加状态的情况下,通过将所述第二计数标识替换为第一计数标识,转换所述关联模块的第一增加状态至第二增加状态;
在所述当前处理状态为第二增加状态的情况下,通过将所述第一对象标识替换为第二对象标识,并将所述第一计数标识加1,转换所述关联模块的第二增加状态至第三增加状态;
在所述当前处理状态为第三增加状态的情况下,通过建立所述引用对象和所述被引用对象之间的引用关系,转换所述关联模块的第三增加状态至第四增加状态;
在所述当前处理状态为第四增加状态的情况下,通过将所述第一对象标识的引用对象标识恢复为初始对象标识,转换所述关联模块的第四增加状态至第五增加状态;
在所述当前处理状态为第五增加状态的情况下,通过将所述第二计数标识的当前计数标识恢复为初始计数标识,转换所述关联模块的第五增加状态至第六增加状态。
实际应用中,在当前处理状态为第一增加状态的情况下,在第一对象标识的属性值为初始对象标识的前提下,并且确定当前处理状态为第一增加状态的情况下,为了建立引用对象与被引用对象的引用关系,需要先将第一计数标识的属性值,即被引用对象当前被引用的总次数填入第二计数标识,使得当前被引用对象的第一计数标识的属性值与引用对象的第二计数标识的属性值一致。
在当前处理状态为第二增加状态的情况下,用第二对象标识的属性值替换第一对象标识的属性值,使得第一对象标识和第二对象标识的属性值一致;在第一计数标识的属性值上加一,即引用被引用对象的对象数量加一,从而由第二增加状态转换为第三增加状态;在本申请一具体实施方式中,针对第一对象标识,进行原子比较与交换操作,期望值为{第一对象标识的属性值=0,第一计数标识的属性值=N},目标值{第一对象标识的属性值=X,第一计数标识的属性值=N+1 },如果操作成功,则过渡到第三增加状态。如果操作失败,则需回退到第一增加状态,重新从第一增加状态开始执行操作。
在当前处理状态为第三增加状态的情况下,建立引用对象与被引用对象之间的引用关系,从而由第三增加状态转换为第四增加状态。
在当前处理状态为第四增加状态的情况下,将第一对象标识对应的属性值调整至初始对象标识,从而使得后续可以基于属性值为初始对象标识的第一对象标识,继续处理与其他引用对象的引用关系,从而由第四增加状态转换为第五增加状态。
在当前处理状态为第五增加状态的情况下,将第二计数标识的属性值由当前计数标识调整至初始计数标识,从而由第五增加状态转换为第六增加状态。
在当前处理状态为第六增加状态的情况下,表示已经完成本次的引用计数任务,无需做进一步的处理。
具体的,在所述计数类型为减少类型的情况下,基于所述目标状态处理规则处理所述关联模块,包括:
在所述当前处理状态为第一减少状态的情况下,通过将所述第二计数标识替换为所述第一计数标识,转换所述关联模块的第一减少状态至第二减少状态;需要注意的是,在确定第一对象标识为初始对象标识的情况下,才可以进行对第二计数标识的属性值进行调整的操作;若确定当前处理状态为第一减少状态,但第一对象标识非初始对象标识,则需要不断重新确定第一对象标识的属性值。
在所述当前处理状态为第二减少状态的情况下,通过将所述第一对象标识替换为第二对象标识,并将第一计数标识减1,转换所述关联模块的第二减少状态至第三减少状态;在本说明书一具体实施方式中,对对象头部信息即第一状态标识和第二状态标识进行原子的比较与交换操作,期望值{标识=0,计数值=N},目标值{标识=X,计数值=N-1},如果原子比较与交换操作成功,则执行替换操作进入第三减少状态;上述方法避免了将引用计数操作写入回滚/重做日志,避免了日志文件的膨胀以及性能的下降;在修改引用计数值时,使用了原子操作,即保证了操作的原子性,同时也不必引入锁操作而增加了额外的开销,也保证了并发的性能。
如果原子比较与交换操作失败,则说明对象正在被第三方的引用者操作,或者被第三方的引用者改变了计数值,因此,需要回到步骤1进行操作;
在所述当前处理状态为第三减少状态的情况下,通过将所述第二计数标识修改为预设计数标识,转换所述关联模块的第三减少状态至第四减少状态;
在所述当前处理状态为第四减少状态的情况下,通过将第一对象标识恢复为初始对象标识,转换所述关联模块的第四减少状态至第五减少状态;
在所述当前处理状态为第五减少状态的情况下,通过解除所述引用对象与所述被引用对象的引用关系,转换所述关联模块的第五减少状态至第六减少状态;
在所述当前处理状态为第六减少状态的情况下,通过将第二计数标识恢复为初始计数标识,转换所述关联模块的第六减少状态至第七减少状态。
实际应用中,在当前处理状态为第一减少状态的情况下,将第二计数标识的属性值替换为第一计数标识的属性值,从而由第一减少状态转换为第二减少状态;在当前处理状态为第二减少状态的情况下,将第一对象标识的属性值替换为第二对象标识的属性值,并对第一计数标识的属性值减一,从而由第二减少状态转换为第三减少状态;
在当前处理状态为第三减少状态的情况下,将第二计数标识的属性值调整为预设计数标识,从而由第三减少状态转换为第四减少状态;在当前处理状态为第四减少状态的情况下,将第一对象标识调整为初始对象标识,从而由第四减少状态转换为第五减少状态;
在当前处理状态为第五减少状态的情况下,删除引用对象与被引用对象之间的引用关系,从而由第五减少状态转换为第六减少状态;在当前处理状态为第六减少状态的情况下,将第二计数标识调整为初始计数标识,从而完成引用计数任务的执行,由第六减少状态转换为第七减少状态。
本说明书一个实施例实现了接收针对关联模块的引用计数请求,其中,所述引用计数请求中携带计数类型,所述关联模块包含被引用对象和引用对象;获取所述被引用对象的第一状态标识和所述引用对象对应的第二状态标识;根据所述第一状态标识、所述第二状态标识和所述计数类型确定所述关联模块的当前处理状态;确定所述当前处理状态对应的关联模块处理规则,并基于所述关联模块处理规则处理所述关联模块。
通过被引用对象的第一状态标识和引用对象的第二状态标识,来确定关联模块的当前处理状态,从而可以依据当前处理状态对关联模型进行进一步的处理,节省了引用计数过程中发生故障中断需要根据日志恢复中断前处理状态的时长消耗,提升了引用计数的处理性能。
下述结合附图5,以本说明书提供的数据处理方法在基金数据处理的应用为例,对所述数据处理方法进行进一步说明。其中,图5示出了本说明书一个实施例提供的一种数据处理方法的处理过程流程图,具体包括以下步骤。
步骤502:接收针对关联模块的引用计数请求,其中,所述引用计数请求中携带增加计数类型,所述关联模块包含共享内存和基金数据处理任务。
步骤504:获取所述共享内存的第一状态标识和所述基金数据处理任务对应的第二状态标识。
步骤506:根据所述第一状态标识、所述第二状态标识和所述计数类型确定所述关联模块的当前处理状态。
步骤508:确定所述当前处理状态对应的关联模块处理规则,并基于所述关联模块处理规则处理所述关联模块。
本说明书应用于基金数据处理的数据处理方法,通过共享内存和基金数据处理任务对应的第一状态标识和第二状态标识,来确定关联模块的当前处理状态,从而可以依据当前处理状态对关联模型进行进一步的处理,节省了引用计数过程中发生故障中断需要根据日志恢复中断前处理状态的时长消耗,提升了引用计数的处理性能。
与上述方法实施例相对应,本说明书还提供了数据处理装置实施例,图6示出了本说明书一个实施例提供的一种数据处理装置的结构示意图。如图6所示,该装置包括:
接收模块602,被配置为接收针对关联模块的引用计数请求,其中,所述引用计数请求中携带计数类型,所述关联模块包含被引用对象和引用对象;
获取模块604,被配置为获取所述被引用对象的第一状态标识和所述引用对象对应的第二状态标识;
确定模块606,被配置为根据所述第一状态标识、所述第二状态标识和所述计数类型确定所述关联模块的当前处理状态;
处理模块608,被配置为确定所述当前处理状态对应的关联模块处理规则,并基于所述关联模块处理规则处理所述关联模块。
可选地,所述获取模块604,进一步被配置为:
获取所述被引用对象对应的第一对象标识和第一计数标识;
获取所述引用对象对应的第二对象标识和第二计数标识。
可选地,所述确定模块606,进一步被配置为:
根据所述第一对象标识、所述第二计数标识和所述计数类型确定所述关联模块的当前处理状态。
可选地,所述计数类型包括增加计数类型,所述确定模块606,进一步被配置为:
根据所述第一对象标识、所述第二计数标识和所述计数类型确定所述关联模块的当前处理状态,包括:
判断所述被引用对象和引用对象之间是否存在引用关系;
若是,则在所述第一对象标识不为引用对象标识的情况下,根据所述第二计数标识确定所述关联模块为第五增加状态或第六增加状态,在所述第一对象标识为引用对象标识的情况下,确定所述关联模块为第四增加状态;
若否,则判断所述第一对象标识是否为引用对象标识;
若否,则根据所述第二计数标识确定所述关联模块为第一增加状态或第二增加状态;
若是,则确定所述关联模块为第三增加状态。
可选地,所述确定模块606,进一步被配置为:
在所述第二计数标识为初始计数标识的情况下,确定所述关联模块为第一增加状态;
在所述第二计数标识为当前计数标识的情况下,确定所述关联模块为第二增加状态。
可选地,所述确定模块606,进一步被配置为:
在所述第二计数标识为初始计数标识的情况下,确定所述关联模块为第六增加状态;
在所述第二计数标识为当前计数标识的情况下,确定所述关联模块为第五增加状态。
可选地,所述计数类型包括减少计数类型,所述确定模块606,进一步被配置为:
根据所述第一对象标识、所述第二计数标识和所述计数类型确定所述关联模块的当前处理状态,包括:
判断所述被引用对象和引用对象之间是否存在引用关系;
若否,则根据所述第二计数标识确定所述关联模块为第六减少状态或第七减少状态;
若是,则判断所述第一对象标识是否为引用对象标识;
若否,则根据所述第二计数标识确定所述关联模块为第一减少状态、第二减少状态或第五减少状态;
若是,则根据所述第二计数标识确定所述关联模块为第三减少状态或第四减少状态。
可选地,所述确定模块606,进一步被配置为:
在所述第二计数标识为初始计数标识的情况下,确定所述关联模块为第一减少状态;
在所述第二计数标识为当前计数标识的情况下,确定所述关联模块为第二减少状态;
在所述第二计数标识为预设计数标识的情况下,确定所述关联模块为第五减少状态。
可选地,所述确定模块606,进一步被配置为:
在所述第二计数标识为当前计数标识的情况下,确定所述关联模块为第三减少状态;
在所述第二计数标识为预设计数标识的情况下,确定所述关联模块为第四减少状态。
可选地,所述确定模块606,进一步被配置为:
在所述第二计数标识为预设计数标识的情况下,确定所述关联模块为第六减少状态;
在所述第二计数标识为初始计数标识的情况下,确定所述关联模块为第七减少状态。
可选地,所述处理模块608,进一步被配置为:
根据所述计数类型确定所述关联模块的目标关联模块处理规则,其中,所述目标关联模块处理规则包括各处理状态对应的状态处理规则;
根据所述当前处理状态在所述目标关联模块处理规则中确定当前处理状态对应的目标状态处理规则;
基于所述目标状态处理规则处理所述关联模块。
可选地,在所述计数类型为增加计数类型的情况下,所述处理模块608,进一步被配置为:
在所述当前处理状态为第一增加状态的情况下,通过将所述第二计数标识替换为第一计数标识,转换所述关联模块的第一增加状态至第二增加状态;
在所述当前处理状态为第二增加状态的情况下,通过将所述第一对象标识替换为第二对象标识,并将所述第一计数标识加1,转换所述关联模块的第二增加状态至第三增加状态;
在所述当前处理状态为第三增加状态的情况下,通过建立所述引用对象和所述被引用对象之间的引用关系,转换所述关联模块的第三增加状态至第四增加状态;
在所述当前处理状态为第四增加状态的情况下,通过将所述第一对象标识的引用对象标识恢复为初始对象标识,转换所述关联模块的第四增加状态至第五增加状态;
在所述当前处理状态为第五增加状态的情况下,通过将所述第二计数标识的当前计数标识恢复为初始计数标识,转换所述关联模块的第五增加状态至第六增加状态。
可选地,在所述计数类型为减少计数类型的情况下,所述处理模块608,进一步被配置为:
在所述当前处理状态为第一减少状态的情况下,通过将所述第二计数标识替换为所述第一计数标识,转换所述关联模块的第一减少状态至第二减少状态;
在所述当前处理状态为第二减少状态的情况下,通过将所述第一对象标识替换为第二对象标识,并将第一计数标识减1,转换所述关联模块的第二减少状态至第三减少状态;
在所述当前处理状态为第三减少状态的情况下,通过将所述第二计数标识修改为预设计数标识,转换所述关联模块的第三减少状态至第四减少状态;
在所述当前处理状态为第四减少状态的情况下,通过将第一对象标识恢复为初始对象标识,转换所述关联模块的第四减少状态至第五减少状态;
在所述当前处理状态为第五减少状态的情况下,通过解除所述引用对象与所述被引用对象的引用关系,转换所述关联模块的第五减少状态至第六减少状态;
在所述当前处理状态为第六减少状态的情况下,通过将第二计数标识恢复为初始计数标识,转换所述关联模块的第六减少状态至第七减少状态。
可选地,所述装置还包括执行模块,被配置为:
继续执行获取所述被引用对象的第一状态标识和所述引用对象对应的第二状态标识的步骤,直至完成所述关联模块对应的引用计数任务。
本说明书的数据处理装置,通过接收模块,接收针对关联模块的引用计数请求,其中,所述引用计数请求中携带计数类型,所述关联模块包含被引用对象和引用对象;获取模块,被配置为获取所述被引用对象的第一状态标识和所述引用对象对应的第二状态标识;确定模块,根据所述第一状态标识、所述第二状态标识和所述计数类型确定所述关联模块的当前处理状态;处理模块,确定所述当前处理状态对应的关联模块处理规则,并基于所述关联模块处理规则处理所述关联模块。
通过被引用对象的第一状态标识和引用对象的第二状态标识,来确定关联模块的当前处理状态,从而可以依据当前处理状态对关联模型进行进一步的处理,节省了引用计数过程中发生故障中断需要根据日志恢复中断前处理状态的时长消耗,提升了引用计数的处理性能。
上述为本实施例的一种数据处理装置的示意性方案。需要说明的是,该数据处理装置的技术方案与上述的数据处理方法的技术方案属于同一构思,数据处理装置的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
图7示出了根据本说明书一个实施例提供的一种计算设备700的结构框图。该计算设备700的部件包括但不限于存储器710和处理器720。处理器720与存储器710通过总线730相连接,数据库750用于保存数据。
计算设备700还包括接入设备740,接入设备740使得计算设备700能够经由一个或多个网络760通信。这些网络的示例包括公用交换电话网(PSTN,Public SwitchedTelephone Network)、局域网(LAN,Local Area Network)、广域网(WAN,Wide AreaNetwork)、个域网(PAN,Personal Area Network)或诸如因特网的通信网络的组合。接入设备740可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC,networkinterface controller))中的一个或多个,诸如IEEE802.11无线局域网(WLAN,WirelessLocal Area Network)无线接口、全球微波互联接入(Wi-MAX,WorldwideInteroperability for Microwave Access)接口、以太网接口、通用串行总线(USB,Universal Serial Bus)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC,Near FieldCommunication)。
在本说明书的一个实施例中,计算设备700的上述部件以及图7中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图7所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备700可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或个人计算机(PC,Personal Computer)的静止计算设备。计算设备700还可以是移动式或静止式的服务器。
其中,处理器720用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据处理方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据处理方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述数据处理方法的步骤。
上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的数据处理方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据专利实践的要求进行适当的增减,例如在某些地区,根据专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

Claims (17)

1.一种数据处理方法,其特征在于,包括:
接收针对关联模块的引用计数请求,其中,所述引用计数请求中携带计数类型,所述关联模块包含被引用对象和引用对象;
获取所述被引用对象的第一状态标识和所述引用对象对应的第二状态标识;
根据所述第一状态标识、所述第二状态标识和所述计数类型确定所述关联模块的当前处理状态;
确定所述当前处理状态对应的关联模块处理规则,并基于所述关联模块处理规则处理所述关联模块。
2.如权利要求1所述的方法,其特征在于,获取所述被引用对象的第一状态标识和所述引用对象对应的第二状态标识,包括:
获取所述被引用对象对应的第一对象标识和第一计数标识;
获取所述引用对象对应的第二对象标识和第二计数标识。
3.如权利要求2所述的方法,其特征在于,根据所述第一状态标识、所述第二状态标识和所述计数类型确定所述关联模块的当前处理状态,包括:
根据所述第一对象标识、所述第二计数标识和所述计数类型确定所述关联模块的当前处理状态。
4.如权利要求3所述的方法,其特征在于,所述计数类型包括增加计数类型;
根据所述第一对象标识、所述第二计数标识和所述计数类型确定所述关联模块的当前处理状态,包括:
判断所述被引用对象和引用对象之间是否存在引用关系;
若是,则在所述第一对象标识不为引用对象标识的情况下,根据所述第二计数标识确定所述关联模块为第五增加状态或第六增加状态,在所述第一对象标识为引用对象标识的情况下,确定所述关联模块为第四增加状态;
若否,则判断所述第一对象标识是否为引用对象标识;
若否,则根据所述第二计数标识确定所述关联模块为第一增加状态或第二增加状态;
若是,则确定所述关联模块为第三增加状态。
5.如权利要求4所述的方法,其特征在于,根据所述第二计数标识确定所述关联模块为第一增加状态或第二增加状态,包括:
在所述第二计数标识为初始计数标识的情况下,确定所述关联模块为第一增加状态;
在所述第二计数标识为当前计数标识的情况下,确定所述关联模块为第二增加状态。
6.如权利要求4所述的方法,其特征在于,根据所述第二计数标识确定所述关联模块为第五增加状态或第六增加状态,包括:
在所述第二计数标识为初始计数标识的情况下,确定所述关联模块为第六增加状态;
在所述第二计数标识为当前计数标识的情况下,确定所述关联模块为第五增加状态。
7.如权利要求3所述的方法,其特征在于,所述计数类型包括减少计数类型;
根据所述第一对象标识、所述第二计数标识和所述计数类型确定所述关联模块的当前处理状态,包括:
判断所述被引用对象和引用对象之间是否存在引用关系;
若否,则根据所述第二计数标识确定所述关联模块为第六减少状态或第七减少状态;
若是,则判断所述第一对象标识是否为引用对象标识;
若否,则根据所述第二计数标识确定所述关联模块为第一减少状态、第二减少状态或第五减少状态;
若是,则根据所述第二计数标识确定所述关联模块为第三减少状态或第四减少状态。
8.如权利要求7所述的方法,其特征在于,根据所述第二计数标识确定所述关联模块为第一减少状态、第二减少状态或第五减少状态,包括:
在所述第二计数标识为初始计数标识的情况下,确定所述关联模块为第一减少状态;
在所述第二计数标识为当前计数标识的情况下,确定所述关联模块为第二减少状态;
在所述第二计数标识为预设计数标识的情况下,确定所述关联模块为第五减少状态。
9.如权利要求7所述的方法,其特征在于,根据所述第二计数标识确定所述关联模块为第三减少状态或第四减少状态,包括:
在所述第二计数标识为当前计数标识的情况下,确定所述关联模块为第三减少状态;
在所述第二计数标识为预设计数标识的情况下,确定所述关联模块为第四减少状态。
10.如权利要求7所述的方法,其特征在于,根据所述第二计数标识确定所述关联模块为第六减少状态或第七减少状态,包括:
在所述第二计数标识为预设计数标识的情况下,确定所述关联模块为第六减少状态;
在所述第二计数标识为初始计数标识的情况下,确定所述关联模块为第七减少状态。
11.如权利要求2所述的方法,其特征在于,确定所述当前处理状态对应的关联模块处理规则,并基于所述关联模块处理规则处理所述关联模块,包括:
根据所述计数类型确定所述关联模块的目标关联模块处理规则,其中,所述目标关联模块处理规则包括各处理状态对应的状态处理规则;
根据所述当前处理状态在所述目标关联模块处理规则中确定当前处理状态对应的目标状态处理规则;
基于所述目标状态处理规则处理所述关联模块。
12.如权利要求11所述的方法,其特征在于,在所述计数类型为增加计数类型的情况下,基于所述目标状态处理规则处理所述关联模块,包括:
在所述当前处理状态为第一增加状态的情况下,通过将所述第二计数标识替换为第一计数标识,转换所述关联模块的第一增加状态至第二增加状态;
在所述当前处理状态为第二增加状态的情况下,通过将所述第一对象标识替换为第二对象标识,并将所述第一计数标识加1,转换所述关联模块的第二增加状态至第三增加状态;
在所述当前处理状态为第三增加状态的情况下,通过建立所述引用对象和所述被引用对象之间的引用关系,转换所述关联模块的第三增加状态至第四增加状态;
在所述当前处理状态为第四增加状态的情况下,通过将所述第一对象标识的引用对象标识恢复为初始对象标识,转换所述关联模块的第四增加状态至第五增加状态;
在所述当前处理状态为第五增加状态的情况下,通过将所述第二计数标识的当前计数标识恢复为初始计数标识,转换所述关联模块的第五增加状态至第六增加状态。
13.如权利要求11所述的方法,其特征在于,在所述计数类型为减少类型的情况下,基于所述目标状态处理规则处理所述关联模块,包括:
在所述当前处理状态为第一减少状态的情况下,通过将所述第二计数标识替换为所述第一计数标识,转换所述关联模块的第一减少状态至第二减少状态;
在所述当前处理状态为第二减少状态的情况下,通过将所述第一对象标识替换为第二对象标识,并将第一计数标识减1,转换所述关联模块的第二减少状态至第三减少状态;
在所述当前处理状态为第三减少状态的情况下,通过将所述第二计数标识修改为预设计数标识,转换所述关联模块的第三减少状态至第四减少状态;
在所述当前处理状态为第四减少状态的情况下,通过将第一对象标识恢复为初始对象标识,转换所述关联模块的第四减少状态至第五减少状态;
在所述当前处理状态为第五减少状态的情况下,通过解除所述引用对象与所述被引用对象的引用关系,转换所述关联模块的第五减少状态至第六减少状态;
在所述当前处理状态为第六减少状态的情况下,通过将第二计数标识恢复为初始计数标识,转换所述关联模块的第六减少状态至第七减少状态。
14.如权利要求4或7所述的方法,其特征在于,在所述第一对象标识非初始对象标识或引用对象标识的情况下,还包括:
继续执行获取所述被引用对象的第一状态标识和所述引用对象对应的第二状态标识的步骤,直至完成所述关联模块对应的引用计数任务。
15.一种数据处理装置,其特征在于,包括:
接收模块,被配置为接收针对关联模块的引用计数请求,其中,所述引用计数请求中携带计数类型,所述关联模块包含被引用对象和引用对象;
获取模块,被配置为获取所述被引用对象的第一状态标识和所述引用对象对应的第二状态标识;
确定模块,被配置为根据所述第一状态标识、所述第二状态标识和所述计数类型确定所述关联模块的当前处理状态;
处理模块,被配置为确定所述当前处理状态对应的关联模块处理规则,并基于所述关联模块处理规则处理所述关联模块。
16.一种计算设备,其特征在于,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至14任意一项所述方法的步骤。
17.一种计算机可读存储介质,其特征在于,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至14任意一项所述方法的步骤。
CN202311362286.3A 2023-10-20 2023-10-20 数据处理方法以及装置 Active CN117093408B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311362286.3A CN117093408B (zh) 2023-10-20 2023-10-20 数据处理方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311362286.3A CN117093408B (zh) 2023-10-20 2023-10-20 数据处理方法以及装置

Publications (2)

Publication Number Publication Date
CN117093408A true CN117093408A (zh) 2023-11-21
CN117093408B CN117093408B (zh) 2024-01-23

Family

ID=88777408

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311362286.3A Active CN117093408B (zh) 2023-10-20 2023-10-20 数据处理方法以及装置

Country Status (1)

Country Link
CN (1) CN117093408B (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6598094B1 (en) * 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US20100235569A1 (en) * 2008-11-24 2010-09-16 Michael Nishimoto Storage Optimization System
US20140317609A1 (en) * 2013-04-22 2014-10-23 Embarcadero Technologies, Inc. Automatic reference counting
CN105205011A (zh) * 2014-06-25 2015-12-30 华为技术有限公司 一种获取文件块引用计数的方法、普通客户端和管理客户端
CN106201749A (zh) * 2016-08-29 2016-12-07 东软集团股份有限公司 一种共享内存的访问控制方法、装置及系统
CN108604191A (zh) * 2016-02-01 2018-09-28 微软技术许可有限责任公司 代理对象系统
CN111708714A (zh) * 2014-03-12 2020-09-25 奥普塔姆软件股份有限公司 用于有效资源回收的延迟损毁
CN112354189A (zh) * 2020-11-23 2021-02-12 腾讯科技(深圳)有限公司 一种游戏数据对象匹配方法、装置、设备及存储介质
CN112579282A (zh) * 2019-09-30 2021-03-30 北京京东尚科信息技术有限公司 数据处理方法、装置、系统、计算机可读存储介质
CN113515317A (zh) * 2020-03-25 2021-10-19 华为技术有限公司 数据恢复的方法、装置
CN114661248A (zh) * 2022-05-25 2022-06-24 恒生电子股份有限公司 数据处理方法及装置
CN114995993A (zh) * 2022-04-22 2022-09-02 阿里巴巴(中国)有限公司 内存回收方法以及装置
CN115328403A (zh) * 2022-08-19 2022-11-11 济南浪潮数据技术有限公司 一种数据重删方法、装置、设备及存储介质

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6598094B1 (en) * 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US20100235569A1 (en) * 2008-11-24 2010-09-16 Michael Nishimoto Storage Optimization System
US20140317609A1 (en) * 2013-04-22 2014-10-23 Embarcadero Technologies, Inc. Automatic reference counting
CN111708714A (zh) * 2014-03-12 2020-09-25 奥普塔姆软件股份有限公司 用于有效资源回收的延迟损毁
CN105205011A (zh) * 2014-06-25 2015-12-30 华为技术有限公司 一种获取文件块引用计数的方法、普通客户端和管理客户端
CN108604191A (zh) * 2016-02-01 2018-09-28 微软技术许可有限责任公司 代理对象系统
CN106201749A (zh) * 2016-08-29 2016-12-07 东软集团股份有限公司 一种共享内存的访问控制方法、装置及系统
CN112579282A (zh) * 2019-09-30 2021-03-30 北京京东尚科信息技术有限公司 数据处理方法、装置、系统、计算机可读存储介质
CN113515317A (zh) * 2020-03-25 2021-10-19 华为技术有限公司 数据恢复的方法、装置
CN112354189A (zh) * 2020-11-23 2021-02-12 腾讯科技(深圳)有限公司 一种游戏数据对象匹配方法、装置、设备及存储介质
CN114995993A (zh) * 2022-04-22 2022-09-02 阿里巴巴(中国)有限公司 内存回收方法以及装置
CN114661248A (zh) * 2022-05-25 2022-06-24 恒生电子股份有限公司 数据处理方法及装置
CN115328403A (zh) * 2022-08-19 2022-11-11 济南浪潮数据技术有限公司 一种数据重删方法、装置、设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SEBASTIAN ULLRICH 等: "Counting immutable beans: reference counting optimized for purely functional programming", PROCEEDINGS OF THE 31ST SYMPOSIUM ON IMPLEMENTATION AND APPLICATION OF FUNCTIONAL LANGUAGES *
卢萍;翟超;: "Ext3日志文件系统孤节点处理方法分析与改进", 软件导刊, no. 10 *

Also Published As

Publication number Publication date
CN117093408B (zh) 2024-01-23

Similar Documents

Publication Publication Date Title
CN109739935B (zh) 数据读取方法、装置、电子设备以及存储介质
Lindström et al. IBM solidDB: In-Memory Database Optimized for Extreme Speed and Availability.
CN108363806B (zh) 数据库的多版本并发控制方法、装置、服务器及存储介质
EP0578406B1 (en) Distributed transaction processing using two-phase commit protocol with presumed-commit without log force
US7996363B2 (en) Real-time apply mechanism in standby database environments
CN111078667B (zh) 一种数据迁移的方法以及相关装置
CN111813760B (zh) 数据迁移方法以及装置
CN109542682B (zh) 一种数据备份方法、装置、设备和存储介质
US20190278770A1 (en) Time Series Data Management Method, Device, And Apparatus
JP2022013854A (ja) 2フェーズコミット分散トランザクションを使用することによってデータベースを更新するための方法および装置
CN111414362B (zh) 数据读取方法、装置、设备及存储介质
CN109783578B (zh) 数据读取方法、装置、电子设备以及存储介质
EP3480705B1 (en) Database data modification request processing method and apparatus
CN106446044B (zh) 存储空间回收方法及装置
CN112039970B (zh) 一种分布式业务锁服务方法、服务端、系统及存储介质
US9720819B2 (en) Concurrent, moving, garbage collector
CN108459913B (zh) 数据并行处理方法、装置及服务器
US9330153B2 (en) System, method, and computer readable medium that coordinates between devices using exchange of log files
CN115145697A (zh) 数据库事务的处理方法、装置及电子设备
CN114721594A (zh) 一种分布式存储方法、装置、设备及机器可读存储介质
CN117093408B (zh) 数据处理方法以及装置
CN113761059A (zh) 数据处理方法及装置
WO2023241528A1 (zh) 数据处理方法以及装置
CN112559496A (zh) 一种分布式数据库事务原子性实现方法及装置
US20100174734A1 (en) Asynchronous database updates between collaborative applications and search utilities

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