CN110618899A - 一种数据存储方法及装置 - Google Patents
一种数据存储方法及装置 Download PDFInfo
- Publication number
- CN110618899A CN110618899A CN201910910901.7A CN201910910901A CN110618899A CN 110618899 A CN110618899 A CN 110618899A CN 201910910901 A CN201910910901 A CN 201910910901A CN 110618899 A CN110618899 A CN 110618899A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- storage
- target database
- database
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据存储方法及装置,在N个硬盘中都部署一个目标数据库镜像,每个硬盘对应一个存储线程,通过引用计数表示当前正在对目标数据库执行数据存储操作的存储线程的数量,使目标数据库最多只能同时被N‑1个存储线程并行执行数据存储操作,进而使目标数据库在任一时刻至少有一个完好目标数据库镜像未被执行数据存储操作,提高了目标数据库的安全性。
Description
技术领域
本发明涉及数据库技术领域,更具体的,涉及一种数据存储方法及装置。
背景技术
数据库的完整性是保证系统正常运行的关键,数据库损坏会造成十分严重的后果。引发数据库损坏的主要原因有数据库写入时断电或硬盘本身产生坏道。
目前保障数据库安全的方法有,通过加装UPS(Uninterruptible Power System/Uninterruptible Power Supply,不间断电源)来延缓断电时间;通过引入RAID(RedundantArrays of Independent Drives,磁盘阵列)来防止硬盘坏道引起的数据库损坏;当数据库损坏时,通过数据库修复工具对数据库进行修复。
但是,加装UPS成本较高,且UPS本身仍有损坏的概率;RAID只能防止硬盘坏道,不能防止数据库写入时非原子操作引起的索引损坏等情况;数据库修复工具有一定概率修复失败,且修复时间很长,不能立即恢复到可使用的状态。
可见,目前保障数据库安全的方法不能完全防止数据库损坏,且故障恢复慢,不能满足数据库安全性需求。
发明内容
有鉴于此,本发明提供了一种数据存储方法及装置,提高数据库安全性。
为了实现上述发明目的,本发明提供的具体技术方案如下:
一种数据存储方法,包括:
获取目标存储线程的待存储数据,所述目标存储线程为N个存储线程中的任意一个存储线程,N为大于1的整数,每个存储线程分别对应一个硬盘;
判断目标数据库的引用计数是否小于N-1,所述目标数据库的引用计数表示当前正在对所述目标数据库执行数据存储操作的存储线程的数量;
若所述目标数据库的引用计数小于N-1,则将所述目标数据库的引用计数加1,并控制所述目标存储线程将所述待存储数据存储到相应硬盘的目标数据库镜像中,其中,所述目标数据库在每个硬盘上都存在一个目标数据库镜像;
若所述目标数据库的引用计数不小于N-1,则所述目标存储线程不执行对所述目标数据库的数据存储操作。
可选的,所述方法还包括:
当数据源产生目标数据时,将所述目标数据插入数据缓存队列中,并为所述目标数据设置N位存储标志,存储标志的每一位分别对应一个硬盘,所述目标数据的存储标志表示所述目标数据是否已经被存储到N个硬盘中。
可选的,所述获取目标存储线程的待存储数据,包括:
根据所述数据缓存队列中每个数据的存储标志,从所述数据缓存队列中获取所述目标存储线程的待存储数据。
可选的,在所述控制所述目标存储线程将所述待存储数据存储到相应硬盘的目标数据库镜像中之后,所述方法还包括:
将所述待存储数据的存储标志中与所述目标存储线程相对应的存储标志位的值设置为1,其中,1表示所述待存储数据已经存储在相应的硬盘中。
可选的,所述方法还包括:
当所述待存储数据的存储标志中所有存储标志位的值都为1时,将所述待存储数据从所述数据缓存队列中移除。
可选的,当所述目标数据库数量为1个以上时,每个所述目标数据库分别对应一个所述数据缓存队列。
可选的,所述将所述目标数据插入数据缓存队列中,包括:
确定所述目标数据的目的目标数据库,并将所述目标数据插入所述目的目标数据库对应的所述数据缓存队列中。
可选的,所述方法还包括:
当所述目标数据库损坏时,依据系统负载确定数据恢复时间和数据恢复速度;
在所述数据恢复时间,以所述数据恢复速度,将完好的目标数据库镜像中的数据同步到损坏的目标数据库镜像中。
可选的,当所述目标数据库的损坏类型为硬盘坏道时,在所述将完好的目标数据库镜像中的数据同步到损坏的目标数据库镜像中之前,所述方法还包括:
调用硬盘修复软件修复硬盘坏道。
一种数据存储装置,包括:
数据获取单元,用于获取目标存储线程的待存储数据,所述目标存储线程为N个存储线程中的任意一个存储线程,N为大于1的整数,每个存储线程分别对应一个硬盘;
判断单元,用于判断目标数据库的引用计数是否小于N-1,所述目标数据库的引用计数表示当前正在对所述目标数据库执行数据存储操作的存储线程的数量,若所述目标数据库的引用计数不小于N-1,所述目标存储线程不执行对所述目标数据库的数据存储操作,若所述目标数据库的引用计数小于N-1,则触发数据存储单元;
所述数据存储单元,用于将所述目标数据库的引用计数加1,并控制所述目标存储线程将所述待存储数据存储到相应硬盘的目标数据库镜像中,其中,所述目标数据库在每个硬盘上都存在一个目标数据库镜像。
可选的,所述装置还包括:
数据插入单元,用于当数据源产生目标数据时,将所述目标数据插入数据缓存队列中,并为所述目标数据设置N位存储标志,存储标志的每一位分别对应一个硬盘,所述目标数据的存储标志表示所述目标数据是否已经被存储到N个硬盘中。
可选的,所述数据获取单元,具体用于根据所述数据缓存队列中每个数据的存储标志,从所述数据缓存队列中获取所述目标存储线程的待存储数据。
可选的,所述装置还包括:
存储标志更新单元,用于在控制所述目标存储线程将所述待存储数据存储到相应硬盘的目标数据库镜像中之后,将所述待存储数据的存储标志中与所述目标存储线程相对应的存储标志位的值设置为1,其中,1表示所述待存储数据已经存储在相应的硬盘中。
可选的,所述装置还包括:
数据移除单元,用于当所述待存储数据的存储标志中所有存储标志位的值都为1时,将所述待存储数据从所述数据缓存队列中移除。
可选的,当所述目标数据库数量为1个以上时,每个所述目标数据库分别对应一个所述数据缓存队列。
在此基础上,所述数据插入单元,具体用于确定所述目标数据的目的目标数据库,并将所述目标数据插入所述目的目标数据库对应的所述数据缓存队列中。
可选的,所述装置还包括:
数据恢复单元,用于当所述目标数据库损坏时,依据系统负载确定数据恢复时间和数据恢复速度;在所述数据恢复时间,以所述数据恢复速度,将完好的目标数据库镜像中的数据同步到损坏的目标数据库镜像中。
可选的,所述数据恢复单元,还用于当所述目标数据库的损坏类型为硬盘坏道时,在将完好的目标数据库镜像中的数据同步到损坏的目标数据库镜像中之前,调用硬盘修复软件修复硬盘坏道。
相对于现有技术,本发明的有益效果如下:
本发明公开了一种数据存储方法,在N个硬盘中都部署一个目标数据库镜像,每个硬盘对应一个存储线程,通过引用计数表示当前正在对目标数据库执行数据存储操作的存储线程的数量,使目标数据库最多只能同时被N-1个存储线程并行执行数据存储操作,进而使目标数据库在任一时刻至少有一个完好目标数据库镜像未被执行数据存储操作,提高了目标数据库的安全性。
在数据存储过程中,多个存储线程并行执行数据存储操作,数据存储效率高。
本发明并不涉及数据库内部逻辑,适用于所有数据库。
当数据库损坏时,可以将完好的目标数据库镜像中的数据同步到损坏的目标数据库镜像中,故障恢复快。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的目标数据库与硬盘的对应关系示意图;
图2为本发明实施例公开的一种数据存储方法的流程示意图;
图3为本发明实施例公开的又一种数据存储方法的流程示意图;
图4为本发明实施例公开的另一种数据存储方法的流程示意图;
图5为本发明实施例公开的一种数据存储装置的结构示意图;
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种数据存储方法,在系统中为目标数据库设置N个独立的硬盘,N为大于1的整数,目标数据库在每个硬盘中都部署着一个目标数据库镜像。其中,目标数据库的数量可以为1个或1个以上,当目标数据库的数量为1个以上时,每个目标数据库在每个硬盘上都部署着一个目标数据库镜像,同一个目标数据库在N个硬盘上的目标数据库镜像相同。
请参阅图1,以目标数据库包括数据库A、数据库B和数据库C,硬盘的数量为2为例,在硬盘1上部署着数据库A-镜像1、数据库B-镜像1和数据库C-镜像1,在硬盘2上部署着数据库A-镜像2、数据库B-镜像2和数据库C-镜像2,其中,数据库A-镜像1和数据库A-镜像2相同,数据库B-镜像1和数据库B镜像2相同,数据库C-镜像1和数据库C-镜像2相同。
具体的,请参阅图2,本实施例公开的数据存储方法包括以下步骤:
S101:获取目标存储线程的待存储数据;
每个硬盘分别对应一个存储线程,预先为目标数据库设置N个硬盘,因此,存储线程的数量也为N,存储线程用于将待存储数据存储在相应硬盘中的目标数据库镜像中。
其中,目标存储线程为N个存储线程中的任意一个存储线程。
S102:判断目标数据库的引用计数是否小于N-1;
目标数据库的引用计数表示当前正在对目标数据库执行数据存储操作的存储线程的数量,如目标数据库的引用计数为3,则表示当前有3个存储线程在并行执行对目标数据库的数据存储操作。
若所述目标数据库的引用计数小于N-1,执行S103:将所述目标数据库的引用计数加1,并控制所述目标存储线程将所述待存储数据存储到相应硬盘的目标数据库镜像中。
若目标数据库的引用计数小于N-1,控制目标存储线程将待存储数据存储到相应硬盘的目标数据库镜像中的过程中,目标数据库的引用计数加1,此时,目标数据库的引用计数最大为N-1,目标数据库至少有一个完好的目标数据库镜像未被执行数据存储操作,即保证在任何时刻目标数据库都至少有一个目标数据库镜像可用,提高了目标数据库的安全性。
若所述目标数据库的引用计数不小于N-1,即目标数据库的引用计数为N-1,说明此时只有目标存储线程未执行数据存储操作,目标数据库只有目标存储线程对应的硬盘中的目标数据库镜像未被执行数据存储操作,此时若控制目标存储线程执行数据存储操作将不能保证目标数据库安全,因此,此时目标存储线程不执行对目标数据库的数据存储操作,直到目标数据库的引用计数小于N-1。
需要说明的是,当任意一个存储线程完成对目标数据库的数据存储操作时,目标数据库的引用计数减1。
本实施例公开的数据存储方法,在保证目标数据库的引用计数不大于N-1的基础上,多个存储线程可以并行执行对目标数据库的数据存储操作。由于数据存储操作并行执行,可以将系统的存储性能的损失最小化,即使为目标数据库设置多个硬盘,即需要将待存储数据存储在每个硬盘的目标数据库镜像中,也不会大幅度降低系统的存储性能。
本实施例的数据存储方法,在硬件上只需加装一个或多个硬盘,相对于现有技术中加装UPS,在硬件成本上更加低廉。
本实施的数据存储方法对数据存储逻辑进行了改进,不涉及数据库内部执行逻辑的改变,适用于所有数据库,通用性较强。
优选的,当数据源产生目标数据时,将目标数据插入数据缓存队列中,目标数据为需要存储到目标数据库的数据。本实施例公开的数据存储方法为目标数据设置N位存储标志,存储标志的每一位分别对应一个硬盘,目标数据的存储标志表示目标数据是否已经被存储到N个硬盘中。
假设有3个硬盘,所有硬盘上的目标数据库镜像均未被存储目标数据,则目标数据的存储标志为000;假如第1个硬盘上的目标数据库镜像完成了对目标数据的存储,那么目标数据的存储标志变为001;再假如第3个硬盘上的目标数据库镜像完成了对目标数据的存储,那么目标数据的存储标志变为101;再假如第2个硬盘上的目标数据库镜像完成了对目标数据的存储,那么目标数据的存储标志变为111,此时目标数据在目标数据库的存储全部完成。
在此基础上,请参阅图3,本实施例公开了另一种数据存储方法,具体包括以下步骤:
S201:根据数据缓存队列中每个数据的存储标志,从数据缓存队列中获取目标存储线程的待存储数据;
以目标存储线程对应硬盘2为例,只需判断数据缓存队列中每个数据的存储标志中与硬盘2相对应的存储标志位是否为1,若为1,则表示该数据已经存储在硬盘2上的目标数据库镜像中,该数据不是目标存储线程的待存储数据;若为0,则表示该数据未存储在硬盘2上的目标数据库镜像中,该数据为目标存储线程的待存储数据。
S202:判断目标数据库的引用计数是否小于N-1;
若所述目标数据库的引用计数小于N-1,执行S203:将所述目标数据库的引用计数加1,并控制所述目标存储线程将所述待存储数据存储到相应硬盘的目标数据库镜像中;
S204:将所述待存储数据的存储标志中与所述目标存储线程相对应的存储标志位的值设置为1。
其中,1表示所述待存储数据已经存储在相应的硬盘中。
在目标存储线程将待存储数据存储到相应硬盘的目标数据库镜像中,立即将待存储数据的存储标志中雨目标存储线程相对应的存储标志位的值设置为1,避免目标存储线程对待存储数据的重复存储。
需要说明的是,当待存储数据的存储标志中所有存储标志位的值都为1时,说明待存储数据已经被所有硬盘中的目标数据库镜像所存储,对待存储数据的存储操作全部完成,将待存储数据从数据缓存队列中移除,避免占用数据缓存队列的存储空间。
还需要说明的是,目标数据库的数量可以为1个或1个以上,当目标数据库数量为1个以上时,每个目标数据库分别对应一个数据缓存队列,如数据库A对应数据缓存队列A,数据缓存队列A中仅为需要存储在数据库A中的数据;数据库B对应数据缓存队列B,数据缓存队列B中仅为需要存储在数据库B中的数据;数据库C对应数据缓存队列C,数据缓存队列C仅为需要存储在数据库C中的数据。
当数据源产生目标数据时,首先需要确定目标数据的目的目标数据库,即需要将目标数据存储在其目标数据库镜像中的目标数据库,然后将目标数据插入目的目标数据库对应的数据缓存队列中,如目标数据需要存储在数据库A镜像中,则数据库A为目标数据的目的目标数据库,将目标数据插入数据缓存队列A中。
存储线程则可以根据目标数据库与数据缓存队列的对应关系,将某个数据缓存队列中的待存储数据存储在其相应的硬盘中的相应目标数据库镜像中。如存储线程2从数据缓存队列B中获取待存储数据,显然,待存储数据需要存储在数据库B镜像中,存储线程2根据数据库B与数据缓存队列B之间的对应关系,将待存储数据存储在硬盘2上的数据库B-镜像2中。
请参阅图4,本实施例公开了另一种数据存储方法,当目标数据库损坏时,将完好的目标数据库镜像中的数据同步到损坏的目标数据库镜像中,请参阅图4,该数据存储方法包括以下步骤:
S301:获取目标存储线程的待存储数据;
每个硬盘分别对应一个存储线程,预先为目标数据库设置N个硬盘,因此,存储线程的数量也为N,存储线程用于将待存储数据存储在相应硬盘中的目标数据库镜像中。
其中,目标存储线程为N个存储线程中的任意一个存储线程。
S302:判断目标数据库的引用计数是否小于N-1;
目标数据库的引用计数表示当前正在对目标数据库执行数据存储操作的存储线程的数量,如目标数据库的引用计数为3,则表示当前有3个存储线程在并行执行对目标数据库的数据存储操作。
若所述目标数据库的引用计数小于N-1,执行S303:将所述目标数据库的引用计数加1,并控制所述目标存储线程将所述待存储数据存储到相应硬盘的目标数据库镜像中。
S304:当所述目标数据库损坏时,依据系统负载确定数据恢复时间和数据恢复速度;
系统负载可以通过CPU使用率、内存使用率、磁盘使用率、数据库队列长度等各个维度进行综合衡量,如对各个维度指标值进行加权求和计算系统负载值。
预先设定系统负载值区间与数据恢复时间的对应关系,以及系统负载值区间与数据恢复速度的对应关系,可以依据系统负载确定数据恢复时间和数据恢复速度。
S305:在所述数据恢复时间,以所述数据恢复速度,将完好的目标数据库镜像中的数据同步到损坏的目标数据库镜像中。
需要说明的是,当目标数据库的损坏类型为硬盘坏道时,在将完好的目标数据库镜像中的数据同步到损坏的目标数据库镜像之前,调用硬盘修复软件修复硬盘坏道,然后再执行恢复过程,以避免数据落在坏道上再次被损坏。
基于上述实施例公开的一种数据存储方法,本实施例对应公开了一种数据存储装置,请参阅图5,该装置包括:
数据获取单元501,用于获取目标存储线程的待存储数据,所述目标存储线程为N个存储线程中的任意一个存储线程,N为大于1的整数,每个存储线程分别对应一个硬盘;
判断单元502,用于判断目标数据库的引用计数是否小于N-1,所述目标数据库的引用计数表示当前正在对所述目标数据库执行数据存储操作的存储线程的数量,若所述目标数据库的引用计数不小于N-1,所述目标存储线程不执行对所述目标数据库的数据存储操作,若所述目标数据库的引用计数小于N-1,则触发数据存储单元;
所述数据存储单元503,用于将所述目标数据库的引用计数加1,并控制所述目标存储线程将所述待存储数据存储到相应硬盘的目标数据库镜像中,其中,所述目标数据库在每个硬盘上都存在一个目标数据库镜像。
可选的,所述装置还包括:
数据插入单元,用于当数据源产生目标数据时,将所述目标数据插入数据缓存队列中,并为所述目标数据设置N位存储标志,存储标志的每一位分别对应一个硬盘,所述目标数据的存储标志表示所述目标数据是否已经被存储到N个硬盘中。
可选的,所述数据获取单元501,具体用于根据所述数据缓存队列中每个数据的存储标志,从所述数据缓存队列中获取所述目标存储线程的待存储数据。
可选的,所述装置还包括:
存储标志更新单元,用于在控制所述目标存储线程将所述待存储数据存储到相应硬盘的目标数据库镜像中之后,将所述待存储数据的存储标志中与所述目标存储线程相对应的存储标志位的值设置为1,其中,1表示所述待存储数据已经存储在相应的硬盘中。
可选的,所述装置还包括:
数据移除单元,用于当所述待存储数据的存储标志中所有存储标志位的值都为1时,将所述待存储数据从所述数据缓存队列中移除。
可选的,当所述目标数据库数量为1个以上时,每个所述目标数据库分别对应一个所述数据缓存队列。
在此基础上,所述数据插入单元,具体用于确定所述目标数据的目的目标数据库,并将所述目标数据插入所述目的目标数据库对应的所述数据缓存队列中。
可选的,所述装置还包括:
数据恢复单元,用于当所述目标数据库损坏时,依据系统负载确定数据恢复时间和数据恢复速度;在所述数据恢复时间,以所述数据恢复速度,将完好的目标数据库镜像中的数据同步到损坏的目标数据库镜像中。
可选的,所述数据恢复单元,还用于当所述目标数据库的损坏类型为硬盘坏道时,在将完好的目标数据库镜像中的数据同步到损坏的目标数据库镜像中之前,调用硬盘修复软件修复硬盘坏道。
本实施例公开了一种数据存储装置,在N个硬盘中都部署一个目标数据库镜像,每个硬盘对应一个存储线程,通过引用计数表示当前正在对目标数据库执行数据存储操作的存储线程的数量,使目标数据库最多只能同时被N-1个存储线程并行执行数据存储操作,进而使目标数据库在任一时刻至少有一个完好目标数据库镜像未被执行数据存储操作,提高了目标数据库的安全性。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据存储方法,其特征在于,包括:
获取目标存储线程的待存储数据,所述目标存储线程为N个存储线程中的任意一个存储线程,N为大于1的整数,每个存储线程分别对应一个硬盘;
判断目标数据库的引用计数是否小于N-1,所述目标数据库的引用计数表示当前正在对所述目标数据库执行数据存储操作的存储线程的数量;
若所述目标数据库的引用计数小于N-1,则将所述目标数据库的引用计数加1,并控制所述目标存储线程将所述待存储数据存储到相应硬盘的目标数据库镜像中,其中,所述目标数据库在每个硬盘上都存在一个目标数据库镜像;
若所述目标数据库的引用计数不小于N-1,则所述目标存储线程不执行对所述目标数据库的数据存储操作。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当数据源产生目标数据时,将所述目标数据插入数据缓存队列中,并为所述目标数据设置N位存储标志,存储标志的每一位分别对应一个硬盘,所述目标数据的存储标志表示所述目标数据是否已经被存储到N个硬盘中。
3.根据权利要求2所述的方法,其特征在于,所述获取目标存储线程的待存储数据,包括:
根据所述数据缓存队列中每个数据的存储标志,从所述数据缓存队列中获取所述目标存储线程的待存储数据。
4.根据权利要求2所述的方法,其特征在于,在所述控制所述目标存储线程将所述待存储数据存储到相应硬盘的目标数据库镜像中之后,所述方法还包括:
将所述待存储数据的存储标志中与所述目标存储线程相对应的存储标志位的值设置为1,其中,1表示所述待存储数据已经存储在相应的硬盘中。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当所述待存储数据的存储标志中所有存储标志位的值都为1时,将所述待存储数据从所述数据缓存队列中移除。
6.根据权利要求1所述的方法,其特征在于,当所述目标数据库数量为1个以上时,每个所述目标数据库分别对应一个所述数据缓存队列。
7.根据权利要求2和6所述的方法,其特征在于,所述将所述目标数据插入数据缓存队列中,包括:
确定所述目标数据的目的目标数据库,并将所述目标数据插入所述目的目标数据库对应的所述数据缓存队列中。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述目标数据库损坏时,依据系统负载确定数据恢复时间和数据恢复速度;
在所述数据恢复时间,以所述数据恢复速度,将完好的目标数据库镜像中的数据同步到损坏的目标数据库镜像中。
9.根据权利要求8所述的方法,其特征在于,当所述目标数据库的损坏类型为硬盘坏道时,在所述将完好的目标数据库镜像中的数据同步到损坏的目标数据库镜像中之前,所述方法还包括:
调用硬盘修复软件修复硬盘坏道。
10.一种数据存储装置,其特征在于,包括:
数据获取单元,用于获取目标存储线程的待存储数据,所述目标存储线程为N个存储线程中的任意一个存储线程,N为大于1的整数,每个存储线程分别对应一个硬盘;
判断单元,用于判断目标数据库的引用计数是否小于N-1,所述目标数据库的引用计数表示当前正在对所述目标数据库执行数据存储操作的存储线程的数量,若所述目标数据库的引用计数不小于N-1,所述目标存储线程不执行对所述目标数据库的数据存储操作,若所述目标数据库的引用计数小于N-1,则触发数据存储单元;
所述数据存储单元,用于将所述目标数据库的引用计数加1,并控制所述目标存储线程将所述待存储数据存储到相应硬盘的目标数据库镜像中,其中,所述目标数据库在每个硬盘上都存在一个目标数据库镜像。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910910901.7A CN110618899B (zh) | 2019-09-25 | 2019-09-25 | 一种数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910910901.7A CN110618899B (zh) | 2019-09-25 | 2019-09-25 | 一种数据存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110618899A true CN110618899A (zh) | 2019-12-27 |
CN110618899B CN110618899B (zh) | 2022-02-22 |
Family
ID=68924048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910910901.7A Active CN110618899B (zh) | 2019-09-25 | 2019-09-25 | 一种数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110618899B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030115168A1 (en) * | 2001-12-17 | 2003-06-19 | Terry Robison | Methods and apparatus for database transaction queuing |
CN107025225A (zh) * | 2016-01-30 | 2017-08-08 | 华为技术有限公司 | 一种终端数据库的并行执行方法和装置 |
CN107862042A (zh) * | 2017-11-06 | 2018-03-30 | 中国银行股份有限公司 | 一种数据库并行度的控制方法及装置 |
CN108696554A (zh) * | 2017-04-10 | 2018-10-23 | 北京京东尚科信息技术有限公司 | 负载均衡方法和装置 |
-
2019
- 2019-09-25 CN CN201910910901.7A patent/CN110618899B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030115168A1 (en) * | 2001-12-17 | 2003-06-19 | Terry Robison | Methods and apparatus for database transaction queuing |
CN107025225A (zh) * | 2016-01-30 | 2017-08-08 | 华为技术有限公司 | 一种终端数据库的并行执行方法和装置 |
CN108696554A (zh) * | 2017-04-10 | 2018-10-23 | 北京京东尚科信息技术有限公司 | 负载均衡方法和装置 |
CN107862042A (zh) * | 2017-11-06 | 2018-03-30 | 中国银行股份有限公司 | 一种数据库并行度的控制方法及装置 |
Non-Patent Citations (2)
Title |
---|
RAMOT LUBIS: "Multi-thread performance on a single thread in-memory database", 《2015 7TH INTERNATIONAL CONFERENCE ON INFORMATION TECHNOLOGY AND ELECTRICAL ENGINEERING》 * |
吴涛: "虚拟化存储技术研究", 《中国优秀博硕士学位论文全文数据库(博士)信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN110618899B (zh) | 2022-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106201338B (zh) | 数据存储方法及装置 | |
US7639537B2 (en) | Method for writing data in a non volatile memory unit | |
US9785438B1 (en) | Media cache cleaning based on workload | |
CN111383031B (zh) | 一种区块链中的智能合约执行方法、系统和电子设备 | |
JP2009230628A5 (zh) | ||
US20080148130A1 (en) | Method and apparatus of cache assisted error detection and correction in memory | |
US20150186211A1 (en) | Method, device and operating system for processing and using burn data of nand flash | |
JP4712102B2 (ja) | 記憶装置、データ処理方法およびデータ処理プログラム | |
CN106910528A (zh) | 一种固态硬盘数据巡检的优化方法及装置 | |
US9639441B2 (en) | Solid-state storage system, apparatus and method of writing data | |
CN104735107A (zh) | 分布式存储系统中数据副本恢复方法及装置 | |
CN112506710B (zh) | 分布式文件系统数据修复方法、装置、设备及存储介质 | |
TWI470432B (zh) | 電子系統及其快閃記憶體管理方法 | |
CN107992268B (zh) | 一种坏块标记的方法及相关装置 | |
US10489244B2 (en) | Systems and methods for detecting and correcting memory corruptions in software | |
CN111752482A (zh) | 一种全闪存分布式存储系统中写数据的方法及系统 | |
US9329926B1 (en) | Overlapping data integrity for semiconductor devices | |
CN110618899B (zh) | 一种数据存储方法及装置 | |
CN115509466B (zh) | 一种数据管理方法、装置及电子设备和存储介质 | |
CN115309591B (zh) | 一种全闪存储系统的恢复方法及相关装置 | |
CN110348245B (zh) | 基于nvm的数据完整性保护方法、系统、装置及存储介质 | |
US20100169572A1 (en) | Data storage method, apparatus and system for interrupted write recovery | |
US9286936B1 (en) | Zone based band mapping | |
CN114038493A (zh) | 用于防止校验位频繁擦写导致eeprom损坏的方法、装置、存储器及其存储介质 | |
US20220374310A1 (en) | Write request completion notification in response to partial hardening of write data |
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 |