CN110795421A - 一种防止脏数据产生的方法 - Google Patents
一种防止脏数据产生的方法 Download PDFInfo
- Publication number
- CN110795421A CN110795421A CN201911050748.1A CN201911050748A CN110795421A CN 110795421 A CN110795421 A CN 110795421A CN 201911050748 A CN201911050748 A CN 201911050748A CN 110795421 A CN110795421 A CN 110795421A
- Authority
- CN
- China
- Prior art keywords
- data
- version number
- cache
- change
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
Abstract
本发明公开的防止脏数据产生的方法,涉及数据库技术领域,在缓存和数据库配合读写的过程中,通过为待读取的数据设置版本号及变更标识,解决了数据读写交叉过程中及并发变更数据时可能会产生脏数据的问题,提高了缓存的利用率。
Description
技术领域
本发明涉及数据库技术领域,具体涉及一种防止脏数据产生的方法。
背景技术
目前的防止脏数据产生的方法主要有以下几种方案:
(1)仅将一些不是很重要的数据放到缓存中,即使出现脏读影响也不大,对一些关键性的数据强制从数据库进行读写,降低了缓存的利用率。
(2)在数据库中的数据变更前/后,删除缓存中的数据,下一次再读取的时候就又重新从数据库中加载。在这种情况下,不管缓存中的数据是在数据库中的数据变更前还是变更后,还是前后都删除,都有可能出现数据不一致,导致存在读取的数据为脏数据的可能,其根本原因是在并发进行数据的读和写时,无法保证顺序。例如:在写入缓存前,数据存在变更。
(3)所有对数据的变更均通过数据库,通过订阅数据库的变更日志,异步自动变更缓存中的数据。由于该方案数据为异步变更,那么在数据库已经变更,但缓存中还没来得及变更时,该期间读取到的都是脏数据。另外,由于异步处理,变更到缓存中的操作顺序也不能完全保证与数据库中的操作顺序是绝对一致的,存在产生脏数据的风险,导致存在读取的数据为脏数据的可能。
发明内容
为解决现有技术的不足,本发明实施例提供了一种防止脏数据产生的方法,该方法包括以下步骤:
为待读取的数据设置第一版本号;
判断缓存中是否存在数据,若不存在,则从数据库中读取数据并获取所述数据的版本号,得到所述数据的第二版本号;
判断所述第一版本号与所述第二版本号是否一致,若一致,则将所述数据写入缓存。
优选地,从数据库中读取数据并获取数据的版本号,得到数据的第二版本号包括:
当所述数据存在变更且缓存存在数据时,删除所述缓存中的数据,根据预设的规则,更改所述第一版本号,得到得二版本号。
优选地,所述方法还包括:
为所述数据设置第一变更标识,当所述数据存在变更且缓存存在数据时,删除所述缓存的内容,根据预设的规则,更改所述第一变更标识,得到第二变更标识。
优选地,所述方法还包括:
当所述数据变更完成时,根据预设的规则,更改所述第二变更标识,得到第三变更标识。
优选地,在得到第三变更标识之后,所述方法还包括:
判断所述第三变更标识与所述第三变更标识是否一致,若不一致,则从数据库中读取数据。
本发明实施例提供的防止脏数据产生的方法具有以下有益效果:
(1)在缓存和数据库配合读写的过程中,通过为待读取的数据设置版本号,解决了数据读写交叉过程中可能会脏数据的问题,提高了缓存的利用率。
(2)在缓存和数据库配合读写的过程中,通过为待读取的数据设置变更标志,解决了并发变更数据时可能会产生脏数据的问题,提高了缓存的利用率。
具体实施方式
以下结合具体实施例对本发明作具体的介绍。
本发明实施例提供的防止脏数据产生的方法包括以下步骤:
S101,为待读取的数据设置第一版本号。
S102,判断缓存中是否存在数据,若不存在,则从数据库中读取数据并获取数据的版本号,得到数据的第二版本号。
S103,判断第一版本号与第二版本号是否一致,若一致,则将数据写入缓存。
作为一个具体的实施例,当数据的第一版本号为1、第二版本号为2时,则说明该数据在读写过程中存在变更,则放弃此次读写操作,避免了脏数据的产生。
可选地,从数据库中读取数据并获取数据的版本号,得到数据的第二版本号包括:
当数据存在变更且缓存存在数据时,删除缓存中的数据,根据预设的规则,更改第一版本号,得到得二版本号。
作为一个具体的实施例,第一版本号即为数据的初始版本号,预设的规则为在第一版本号的基础上加1。
可选地,该方法还包括:
为数据设置第一变更标识,当数据存在变更且缓存存在数据时,删除缓存中的数据,根据预设的规则,更改第一变更标识,得到第二变更标识。
其中,通过计数器知行更改数据的变更标识的规则,第一变更标识即为数据的默认变更标识,该默认变更标识为0,预设的规则为在默认变更标识的基础上加1。
可选地,该方法还包括:
当数据变更完成时,根据预设的规则,更改第二变更标识,得到第三变更标识。
作为一个具体的实施例,预设的规则为在第二变更标识的基础上减1。
可选地,在得到第三变更标识之后,该方法还包括:
判断第三变更标识与第三变更标识是否一致,若不一致,则从数据库中读取数据。
其中,在进行数据读取操作时,获取第三变更标识,如果第三变更标识不是默认变更标识,说明数据变更的操作在进行,则直接从数据库中读取数据,从而避免了从缓存中读取到脏数据的风险。
另外,如果出现缓存清除失败的情况,对应的计数器也不会执行设定的规则的操作,计数器的值就不是默认变更标识的数值,说明此时缓存中的数据存在不准确的可能,所以直接从数据库中读取的数据是最准确的数据。
特别说明,也可以通过为待读取的数据设置时间戳,解决数据读写交叉过程中可能会产生的脏数据的问题。
本发明实施例提供的防止脏数据产生的方法,在缓存和数据库配合读写的过程中,通过为待读取的数据设置版本号及变更标识,解决了数据读写交叉过程中及并发变更数据时可能会产生脏数据的问题,提高了缓存的利用率。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
此外,存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (6)
1.一种防止脏数据产生的方法,其特征在于,包括以下步骤:
为待读取的数据设置第一版本号;
判断缓存中是否存在数据,若不存在,则从数据库中读取数据并获取所述数据的版本号,得到所述数据的第二版本号;
判断所述第一版本号与所述第二版本号是否一致,若一致,则将所述数据写入缓存。
2.根据权利要求1所述的防止脏数据产生的方法,其特征在于,从数据库中读取数据并获取数据的版本号,得到数据的第二版本号包括:
当所述数据存在变更且缓存存在数据时,删除所述缓存中的数据,根据预设的规则,更改所述第一版本号,得到得二版本号。
3.根据权利要求2所述的防止脏数据产生的方法,其特征在于,所述方法还包括:
为所述数据设置第一变更标识,当所述数据存在变更且缓存存在数据时,删除所述缓存中的数据,根据预设的规则,更改所述第一变更标识,得到第二变更标识。
4.根据权利要求3所述的防止脏数据产生的方法,其特征在于,所述方法还包括:
当所述数据变更完成时,根据预设的规则,更改所述第二变更标识,得到第三变更标识。
5.根据权利要求1-4任一项所述的防止脏数据产生的方法,其特征在于,在得到第三变更标识之后,所述方法还包括:
判断所述第三变更标识与所述第三变更标识是否一致,若不一致,则从数据库中读取数据。
6.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-5所述的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911050748.1A CN110795421A (zh) | 2019-10-31 | 2019-10-31 | 一种防止脏数据产生的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911050748.1A CN110795421A (zh) | 2019-10-31 | 2019-10-31 | 一种防止脏数据产生的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110795421A true CN110795421A (zh) | 2020-02-14 |
Family
ID=69442334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911050748.1A Pending CN110795421A (zh) | 2019-10-31 | 2019-10-31 | 一种防止脏数据产生的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110795421A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114253988A (zh) * | 2022-03-01 | 2022-03-29 | 维塔科技(北京)有限公司 | 基于版本的数据更新方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020166118A1 (en) * | 2000-11-30 | 2002-11-07 | International Business Machines Corporation | System and method for detecting dirty data fields |
CN108959341A (zh) * | 2018-04-04 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 一种数据同步的方法、装置及设备 |
CN110012064A (zh) * | 2019-02-22 | 2019-07-12 | 视联动力信息技术股份有限公司 | 一种数据同步的方法和系统 |
-
2019
- 2019-10-31 CN CN201911050748.1A patent/CN110795421A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020166118A1 (en) * | 2000-11-30 | 2002-11-07 | International Business Machines Corporation | System and method for detecting dirty data fields |
CN108959341A (zh) * | 2018-04-04 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 一种数据同步的方法、装置及设备 |
CN110012064A (zh) * | 2019-02-22 | 2019-07-12 | 视联动力信息技术股份有限公司 | 一种数据同步的方法和系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114253988A (zh) * | 2022-03-01 | 2022-03-29 | 维塔科技(北京)有限公司 | 基于版本的数据更新方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106933823B (zh) | 数据同步方法及装置 | |
CN106557486A (zh) | 一种数据的存储方法和装置 | |
CN108959510B (zh) | 一种分布式数据库的分区级连接方法和装置 | |
US9384202B1 (en) | Gateway module to access different types of databases | |
CN106897342B (zh) | 一种数据校验方法和设备 | |
CN109033365B (zh) | 一种数据处理方法及相关设备 | |
CN112181902A (zh) | 数据库的存储方法、装置及电子设备 | |
CN107609011B (zh) | 一种数据库记录的维护方法和装置 | |
CN108073595B (zh) | 一种在olap数据库实现数据更新和快照的方法及装置 | |
CN110795421A (zh) | 一种防止脏数据产生的方法 | |
CN108062323B (zh) | 一种日志读取方法及装置 | |
CN112597151A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN109977317B (zh) | 数据查询方法及装置 | |
CN111459408A (zh) | 一种提升dram中数据查找速率的方法及系统 | |
CN110989933A (zh) | 一种消息队列RocketMq平滑迁移方法 | |
CN114817209A (zh) | 监控规则的处理方法和装置、处理器及电子设备 | |
CN112860912A (zh) | 一种更新知识图谱的方法及装置 | |
CN114138745A (zh) | 数据的集成方法、装置、存储介质及处理器 | |
CN111475167A (zh) | 一种基于HQL语句的Shell脚本依赖关系抽取方法 | |
CN110019507B (zh) | 数据同步的方法及装置 | |
CN112445600A (zh) | 一种离线数据处理任务发布方法及系统 | |
CN111159777A (zh) | 基于区块链的供应商认证方法及设备、介质 | |
CN109582938B (zh) | 报表生成方法和装置 | |
CN111126624A (zh) | 一种判定模型预测结果有效性的方法 | |
CN112580915A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200214 |
|
RJ01 | Rejection of invention patent application after publication |