CN103942259A - 一种数据库同步中实现数据缓存的方法 - Google Patents
一种数据库同步中实现数据缓存的方法 Download PDFInfo
- Publication number
- CN103942259A CN103942259A CN201410108047.XA CN201410108047A CN103942259A CN 103942259 A CN103942259 A CN 103942259A CN 201410108047 A CN201410108047 A CN 201410108047A CN 103942259 A CN103942259 A CN 103942259A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- consumption
- memory
- memory headroom
- 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
- 238000000034 method Methods 0.000 title claims abstract description 36
- 230000008569 process Effects 0.000 title claims abstract description 15
- 230000015654 memory Effects 0.000 claims abstract description 59
- 230000001360 synchronised effect Effects 0.000 claims abstract description 18
- 239000000872 buffer Substances 0.000 claims description 12
- 238000012544 monitoring process Methods 0.000 claims description 9
- 239000000654 additive Substances 0.000 claims description 3
- 230000000996 additive effect Effects 0.000 claims description 3
- 238000011084 recovery Methods 0.000 claims description 3
- 239000007853 buffer solution Substances 0.000 claims description 2
- 238000003780 insertion Methods 0.000 abstract description 3
- 230000037431 insertion Effects 0.000 abstract description 3
- 238000005516 engineering process Methods 0.000 description 5
- 238000013523 data management Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008713 feedback mechanism Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库同步中实现数据缓存的方法,包括插入步骤和消费步骤;插入步骤包括:11)在内存中开辟一个固定长度内存空间,用于存储监测到的源数据库同步数据;12)在数据库中新建一个表,用于存储监测到的源数据库同步数据和同步数据的新加属性;消费步骤包括:13)当一个数据消费请求到来时,首先从内存空间中读取,如果读取失败则从数据库表中检索,在读取的过程中,如果发现内存空间中不存在数据,此时从数据库表将数据拷贝到内存中,然后从内存中进行读取,利用数据库记录同步记录和缓解了内存空间的压力,避免了由于同步数据瞬时急剧增加导致的系统崩溃问题;实现了系统重启动后同步数据可恢复。
Description
技术领域
本发明涉及数据库数据同步领域,主要是一种构建同步系统中同步数据缓存的一种方法,尤其涉及一种数据库同步中实现数据缓存的方法。
背景技术
数据库数据同步是指在分布式数据存储中实现不同数据库中数据保持完整性和统一性的一种重要技术。随着互联网的发展,网络服务系统的服务范围越来越大,服务负荷越来越重,服务安全要求越来越高,分布式数据库存储系统或主从模式数据库存储系统变成了网络系统的必然选择。在这种模式下,数据库同步技术应运而生,它使得不同数据库之间保持数据的完整性和统一性,并且提高了系统的数据安全性和服务稳定性。
数据库数据同步过程包括源数据库数据获取、数据传输和目的数据库数据消费三个过程。数据库数据同步包含多种模式:一对一单向同步、一对多单向同步、一对一双向同步、一对多双向同步和多种单一模式组合的综合同步模式;在同步过程中,源数据库数据获取速度、网络传输速度和目的数据库数据消费速度的不稳定性和不一致性使得同步数据容易堆积和丢失;正是由于以上原因,数据缓存系统在数据传输过程中应运而生,并且变得越来越重要。
传统的数据同步缓存技术采用独立开辟和管理内存空间的方法,该类方法满足了数据同步的基本需求,但是这种方法存在以下缺陷:1)当系统遇到宕机或断电时,系统重启动后,同步数据不能够恢复;2)不具备衡量数据同步中数据的堆积程度和反馈机制;3)内存空间有限,当缓存数据急剧增加时,系统稳定性急剧下降。4)同步完成后,同步数据不可查看和检索。
发明内容
针对上述技术缺陷,本发明提出一种数据库同步中实现数据缓存的方法。
为了解决上述技术问题,本发明的技术方案如下:
一种数据库同步中实现数据缓存的方法,包括插入步骤和消费步骤;所述插入步骤包括:
11)在内存中开辟一个固定长度内存空间,用于存储监测到的源数据库同步数据;
12)在数据库中新建一个表,用于存储监测到的源数据库同步数据和同步数据的新加属性;
所述消费步骤包括:
13)当一个数据消费请求到来时,首先从内存空间中读取,如果读取失败则从数据库表中检索,在读取的过程中,如果发现内存空间中不存在数据,此时从数据库表将数据拷贝到内存中,然后从内存中进行读取。
进一步的,还包括如下步骤:
23)在系统中新建一个文件,用于存储最后一次被消费的数据。
进一步的,所述步骤11)和步骤12)具体包括如下步骤;
31)内存空间存储采用一个固定长度的队列,该队列设置两个指针:内存数据消费指针和内存数据插入指针,所述内存数据消费指针具有一个属性d0,它指向队列中下一个可能被消费的数据,每消费一个数据d0加1,内存数据消费指针向后移动一个位置;内存数据插入指针指向下一个可以插入数据的位置;
32)当一个需要被同步的数据到达时,缓冲系统为其递增产生一个唯一的id属性,id属性与原数据内容合并为一个新的数据;插入线程查看内存空间是否已满,如果已满则将该数据插入数据库表中,如果还有空间,则将该数据同时插入数据库表和内存空间中,内存数据插入指针向后移动一位。
进一步的,所述步骤13)具体包括如下步骤;
41)当一个数据消费请求到来时,同步比较同步消费数据最大的id属性值和内存数据消费指针的值来判断是否存在未被消费的数据,如果存在未被消费的数据,则尝试从内存空间中读取,如果发现内存空间中不存在数据,则数据库表将数据拷贝到内存中;如果读取失败则从数据库表中检索;当读取到可消费数据后,发送该数据并将内存消费指针向后移动一位并记录消费数据的时间。
进一步的,所述步骤23)具体包括如下步骤;
51)首先判断文件是否存在,如果不存在则创建文件,表示系统第一次启动,数据恢复过程结束;如果文件存在,则读取和解析文件中的内容,如果内容为空,则得到id属性值a和数据内容;利用数据库表中id值大于a的数据初始化内存空间和利用数据库表中最后监测到的数据为系统提供监控起始点反馈。
进一步的,如果发现内存空间中不存在数据,则数据库表中按递增顺序读取id值大于内存数据消费指针d0的数据,将该数据拷贝到内存中。
本发明的有益效果在于:利用数据库记录同步记录和缓解了内存空间的压力,避免了由于同步数据瞬时急剧增加导致的系统崩溃问题;实现了系统重启动后同步数据可恢复;通过id记录,可以评测数据堆积程度并给出反馈。这一点对于发现网络问题、调节监测频率等具有重要意义。
附图说明
图1为三种存储方式;
图2为同步数据插入步骤;
图3为同步数据消费步骤;
图4为数据恢复步骤。
具体实施方式
下面将结合附图和具体实施例对本发明做进一步的说明。
本发明采用了三种存储方式,如图1所示,内存空间存储采用一个固定长度的队列,该队列具有两个指针:内存数据消费指针和内存数据插入指针。内存数据消费指针具有一个属性d0,它指向队列中下一个可能(如果d0==d,则可消费,否则不能被消费)被消费的数据,每消费一个数据d0加1,内存数据消费指针向后移动一个位置;内存数据插入指针指向下一个可以插入数据的位置。内存空间存储即将被消费的数据,这样可以保证消费请求到来时能够做出快速的响应。数据库存储每一个同步数据,当需要同步的数据到达缓存系统时会被存入数据库表中;消费请求到来时,如果内存空间中不存在该数据,那么消费线程可以从数据表中检索得到。数据库存储规避了同步数据急剧增加带来的风险和提供了查看历史同步数据服务。另外,每当一个数据成功被消费,这个数据将被以文件的方式保存在本地文件系统中,当系统重启时,根据该点的记录来恢复同步数据和指导监测程序从何处重新开始监控数据的变化。上述三级缓存的方式,是本发明实现高性能、可恢复和能检索缓存系统的基础。
图2展示了同步数据插入缓存系统的过程。当一个需要被同步的数据到达时,系统为其递增产生一个唯一的id属性,id属性与原数据内容合并为一个新的数据;插入线程查看内存空间是否已满,如果已满则将该数据插入数据库表中,如果还有空间,则将该数据同时插入数据库表和内存空间中,内存数据插入指针向后移动一位。
图3展示了数据消费的具体步骤。当一个数据消费请求到来时,同步比较同步消费数据最大的id属性值和内存数据消费指针的值来判断是否存在未被消费的数据,如果存在未被消费的数据,则尝试从内存空间中读取,如果读取失败则从数据库表中检索,在读取的过程中,可能会发现内存空间中不存在数据,此时数据库表中按递增顺序读取id值大于内存数据消费指针d0的数据,将该数据拷贝到内存中;当读取到可消费数据后,发送该数据并将内存消费指针向后移动一位并记录消费数据的时间,一个消费请求响应过程结束。
图4展示了系统启动时数据恢复的过程。首先判断文件是否存在,如果不存在则创建文件,表示系统第一次启动,数据恢复过程结束;如果文件存在,则读取和解析文件中的内容,如果内容为空,则得到id属性值a和数据内容;最后利用数据库表中id值大于a的数据初始化内存空间和利用数据库表中最后监测到的数据(如果该数据不存在则利用属性值为a的数据项的数据内容)为监测系统提供监控起始点反馈。
本发明的步骤总体如下:
步骤1:在内存中开辟一个固定长度内存空间,用于存储监测到的源数据库同步数据;
步骤2:在数据库中新建一个表,用于存储监测到的源数据库同步数据和同步数据的新加属性;
步骤3:在系统中新建一个文件,名为end。
步骤4:当一个源数据库同步数据到来时,缓存系统给数据分配一个唯一递增的id值,新的id值和原数据内容合并成为一个新的数据,并执行以下过程:
1、将新数据分发给内存数据管理线程和数据库数据管理线程;
2、内存数据管理线程查看内存空间是否有剩余空间,如果有,则将新数据存放在队尾;否则主动扔掉数据;
3、数据库管理线程将新数据插入到记录表中。
步骤5:当要发送一个同步数据时,将应该发送数据的id属性id0与内存空间中内存数据消费指针指向同步数据的id属性id1进行比较。并执行以下过程:
1、如果id1等于id0,发送该数据,发送指针向后移动一位;否则从数据库中读取id等于id0的数据,并发送该数据,发送指针向后移动一位。
2、将发送数据的全部属性和内容写入一个文件end,覆盖原来的内容。
步骤6:当系统启动(或重启)时,读取end文件。并执行以下过程:
1、如果end文件为空,表示系统第一次启动,系统转向步骤3和步骤4;
2、如果end不为空,解析end文件的内容,获取id值和数据内容;然后查询数据库表,利用数据库表初始化内存空间;缓存系统向其它系统反馈最后监测到的数据内容。系统转向步骤3和步骤4;
步骤7:当接收到一个查询请求时,数据库管理线程查询同步记录。
步骤8:系统每隔5秒钟会从数据库表中统计出最近一秒钟新插入到的数据量n1和被消费到的数据量n2;系统产生的最大属id性值为dmax,下一个将被消费的id属性值为dnext。则衡量数据堆积程度的参考值p=(dmax-dnext)*(n1/n2)。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明构思的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明保护范围内。
Claims (6)
1.一种数据库同步中实现数据缓存的方法,其特征在于,包括插入步骤和消费步骤;所述插入步骤包括:
11)在内存中开辟一个固定长度内存空间,用于存储监测到的源数据库同步数据;
12)在数据库中新建一个表,用于存储监测到的源数据库同步数据和同步数据的新加属性;
所述消费步骤包括:
13)当一个数据消费请求到来时,首先从内存空间中读取,如果读取失败则从数据库表中检索,在读取的过程中,如果发现内存空间中不存在数据,此时从数据库表将数据拷贝到内存中,然后从内存中进行读取。
2.根据权利要求1所述的一种数据库同步中实现数据缓存的方法,其特征在于,还包括如下步骤:
23)在系统中新建一个文件,用于存储最后一次被消费的数据。
3.根据权利要求2所述的一种数据库同步中实现数据缓存的方法,其特征在于,所述步骤11)和步骤12)具体包括如下步骤;
31)内存空间存储采用一个固定长度的队列,该队列设置两个指针:内存数据消费指针和内存数据插入指针,所述内存数据消费指针具有一个属性d0,它指向队列中下一个可能被消费的数据,每消费一个数据d0加1,内存数据消费指针向后移动一个位置;内存数据插入指针指向下一个可以插入数据的位置;
32)当一个需要被同步的数据到达时,缓冲系统为其递增产生一个唯一的id属性,id属性与原数据内容合并为一个新的数据;插入线程查看内存空间是否已满,如果已满则将该数据插入数据库表中,如果还有空间,则将该数据同时插入数据库表和内存空间中,内存数据插入指针向后移动一位。
4.根据权利要求3所述的一种数据库同步中实现数据缓存的方法,其特征在于,所述步骤13)具体包括如下步骤;
41)当一个数据消费请求到来时,同步比较同步消费数据最大的id属性值和内存数据消费指针的值来判断是否存在未被消费的数据,如果存在未被消费的数据,则尝试从内存空间中读取,如果发现内存空间中不存在数据,则数据库表将数据拷贝到内存中;如果读取失败则从数据库表中检索;当读取到可消费数据后,发送该数据并将内存消费指针向后移动一位并记录消费数据的时间。
5.根据权利要求4所述的一种数据库同步中实现数据缓存的方法,其特征在于,所述步骤23)具体包括如下步骤;
51)首先判断文件是否存在,如果不存在则创建文件,表示系统第一次启动,数据恢复过程结束;如果文件存在,则读取和解析文件中的内容,如果内容为空,则得到id属性值a和数据内容;利用数据库表中id值大于a的数据初始化内存空间和利用数据库表中最后监测到的数据为系统提供监控起始点反馈。
6.根据根据权利要求4所述的一种数据库同步中实现数据缓存的方法,其特征在于,如果发现内存空间中不存在数据,则数据库表中按递增顺序读取id值大于内存数据消费指针d0的数据,将该数据拷贝到内存中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410108047.XA CN103942259B (zh) | 2014-03-21 | 2014-03-21 | 一种数据库同步中实现数据缓存的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410108047.XA CN103942259B (zh) | 2014-03-21 | 2014-03-21 | 一种数据库同步中实现数据缓存的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103942259A true CN103942259A (zh) | 2014-07-23 |
CN103942259B CN103942259B (zh) | 2017-10-13 |
Family
ID=51189927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410108047.XA Active CN103942259B (zh) | 2014-03-21 | 2014-03-21 | 一种数据库同步中实现数据缓存的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103942259B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104219288A (zh) * | 2014-08-14 | 2014-12-17 | 中国南方电网有限责任公司超高压输电公司 | 基于多线程的分布式数据同步方法及其系统 |
WO2017114199A1 (zh) * | 2015-12-31 | 2017-07-06 | 阿里巴巴集团控股有限公司 | 一种数据同步方法和装置 |
CN107133231A (zh) * | 2016-02-29 | 2017-09-05 | 中移(苏州)软件技术有限公司 | 一种数据获取方法和装置 |
CN107145562A (zh) * | 2017-05-02 | 2017-09-08 | 北京奇艺世纪科技有限公司 | 一种数据同步方法、装置及系统 |
CN108073660A (zh) * | 2016-11-18 | 2018-05-25 | 腾讯科技(深圳)有限公司 | 一种实现缓存数据同步的方法及系统 |
CN110019197A (zh) * | 2017-09-28 | 2019-07-16 | 武汉斗鱼网络科技有限公司 | 一种数据写入的方法、装置、服务器及介质 |
CN110309157A (zh) * | 2018-03-06 | 2019-10-08 | 北京京东尚科信息技术有限公司 | 一种数据同步更新方法和装置 |
CN111552575A (zh) * | 2019-12-31 | 2020-08-18 | 远景智能国际私人投资有限公司 | 基于消息队列的消息消费方法、装置及设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100368998C (zh) * | 2004-07-23 | 2008-02-13 | 中兴通讯股份有限公司 | 一种多数据库数据同步方法 |
CN102023973A (zh) * | 2009-09-14 | 2011-04-20 | 中国移动通信集团公司 | 一种应用缓存服务器与数据库同步的方法、装置和系统 |
-
2014
- 2014-03-21 CN CN201410108047.XA patent/CN103942259B/zh active Active
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104219288A (zh) * | 2014-08-14 | 2014-12-17 | 中国南方电网有限责任公司超高压输电公司 | 基于多线程的分布式数据同步方法及其系统 |
CN104219288B (zh) * | 2014-08-14 | 2018-03-23 | 中国南方电网有限责任公司超高压输电公司 | 基于多线程的分布式数据同步方法及其系统 |
WO2017114199A1 (zh) * | 2015-12-31 | 2017-07-06 | 阿里巴巴集团控股有限公司 | 一种数据同步方法和装置 |
CN106933534A (zh) * | 2015-12-31 | 2017-07-07 | 阿里巴巴集团控股有限公司 | 一种数据同步方法和装置 |
CN107133231A (zh) * | 2016-02-29 | 2017-09-05 | 中移(苏州)软件技术有限公司 | 一种数据获取方法和装置 |
CN107133231B (zh) * | 2016-02-29 | 2020-09-01 | 中移(苏州)软件技术有限公司 | 一种数据获取方法和装置 |
CN108073660A (zh) * | 2016-11-18 | 2018-05-25 | 腾讯科技(深圳)有限公司 | 一种实现缓存数据同步的方法及系统 |
CN108073660B (zh) * | 2016-11-18 | 2021-10-15 | 腾讯科技(深圳)有限公司 | 一种实现缓存数据同步的方法及系统 |
CN107145562B (zh) * | 2017-05-02 | 2020-07-28 | 北京奇艺世纪科技有限公司 | 一种数据同步方法、装置及系统 |
CN107145562A (zh) * | 2017-05-02 | 2017-09-08 | 北京奇艺世纪科技有限公司 | 一种数据同步方法、装置及系统 |
CN110019197A (zh) * | 2017-09-28 | 2019-07-16 | 武汉斗鱼网络科技有限公司 | 一种数据写入的方法、装置、服务器及介质 |
CN110309157A (zh) * | 2018-03-06 | 2019-10-08 | 北京京东尚科信息技术有限公司 | 一种数据同步更新方法和装置 |
CN111552575A (zh) * | 2019-12-31 | 2020-08-18 | 远景智能国际私人投资有限公司 | 基于消息队列的消息消费方法、装置及设备 |
CN111552575B (zh) * | 2019-12-31 | 2023-09-12 | 远景智能国际私人投资有限公司 | 基于消息队列的消息消费方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103942259B (zh) | 2017-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103942259A (zh) | 一种数据库同步中实现数据缓存的方法 | |
CN106598762B (zh) | 一种消息同步方法 | |
US8751444B2 (en) | Synchronization of database changes among multiple devices | |
CN102098342B (zh) | 一种基于事务级的数据同步方法、装置及系统 | |
EP2429134B1 (en) | Method and apparatus for checking and synchronizing data block in distributed file system | |
CN102521269B (zh) | 一种基于索引的计算机连续数据保护方法 | |
CN101453489B (zh) | 一种网络附加存储装置及其数据备份和数据恢复方法 | |
CN101188544A (zh) | 分布式文件服务器基于缓冲区的文件传输方法 | |
CN104965850A (zh) | 一种基于开源技术的数据库高可用实现方法 | |
EP3195126A1 (en) | Data recovery using bitmap data structure | |
CN103258036A (zh) | 一种基于p2p的分布式实时搜索引擎 | |
CN108829787B (zh) | 一种元数据分布式系统 | |
KR20150137884A (ko) | 부분동기화 지원 데이터베이스 관리 시스템 및 데이터베이스 관리 시스템에서 부분동기화 방법 | |
EP4213038A1 (en) | Data processing method and apparatus based on distributed storage, device, and medium | |
CN110377577A (zh) | 数据同步方法、装置、系统和计算机可读存储介质 | |
WO2014135011A1 (zh) | 数据库系统以及数据同步方法 | |
CN104023246A (zh) | 一种视频数据私有云存储系统和视频数据私有云存储方法 | |
CN101232514A (zh) | 网络附加存储节点的元数据同步方法及网络附加存储节点 | |
CN110807039A (zh) | 一种云计算环境下数据一致性维护系统及方法 | |
CN114003657A (zh) | 分布式数据库的数据处理方法、系统、设备和存储介质 | |
US8612390B2 (en) | Lightweight caching of transaction log for sequential access | |
CN104320486A (zh) | 一种基于大数据的智能交通平台数据集成方法 | |
US9870402B2 (en) | Distributed storage device, storage node, data providing method, and medium | |
CN113905054A (zh) | 基于RDMA的Kudu集群数据同步方法、装置、系统 | |
US9003018B2 (en) | System and method for data set synchronization and replication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |