一种基于事务表处理制造技术

技术编号:39574995 阅读:5 留言:0更新日期:2023-12-03 19:26
本发明专利技术公开了一种基于事务表处理

【技术实现步骤摘要】
一种基于事务表处理ElasticSearch与MySQL分布式事务问题的方法


[0001]本专利技术涉及一种基于事务表处理
ES

MySQL
分布式事务问题的方法,属于分布式事务问题处理



技术介绍

[0002]现有的对于分布式事务问题的解决方案只能被应用于不同
MySQL
数据库中,例如专利号为:
CN202010947573.0
的一种分布式事务处理方法装置及系统,通过
TM
事务管理器控制
Mysql
分片数据库中客户端能够查询的分布式事务的版本号,
TM
事务管理器接收
Mysql
分片数据库发送的分布式事务的子事务的版本号,并在接收到预设的触发指令的情况下,将已完成的分布式事务的各个子事务的版本号发送给预设的缓存数据库,以供缓存数据库更新版本号

当接收到客户端发送的查询指令的情况下,
TM
事务管理器将查询指令和缓存数据库中的查询指令指向的目标版本号发送给
Mysql
分片数据库,这样可以使得
Mysql
分片数据库反馈的分布式事务的子事务的执行结果不超过目标版本号指示的范围,保障了分布式事务的隔离性

目前,针对
ElasticSearch(
简称为
ES)

MySQL
分布式事务问题没有一个较好的解决方案,现有技术必须要求开发者手动书写补偿方案


技术实现思路

[0003]本专利技术所要解决的技术问题是:提供一种基于事务表处理
ES

MySQL
分布式事务问题的方法,克服了现有技术的不足

[0004]本专利技术为解决上述技术问题采用以下技术方案:
[0005]一种基于事务表处理
ES

MySQL
分布式事务问题的方法,包括如下步骤:
[0006]步骤1,创建本次事务唯一
ID

[0007]步骤2,查询需要进行
ElasticSearch
操作的
ES
数据的索引名

文档
ID
和改变的字段,将需要进行
ElasticSearch
操作的
ES
数据的前像转为
json
格式;
[0008]步骤3,将进行
ElasticSearch
操作后得到的数据记为后像,同时将后像转为
json
格式,将索引名

文档
ID、
改变的字段

前像
json
格式和后像
json
格式作为
ES
事务表的一条记录,插入数据库中;
[0009]步骤4,若插入失败,则将本次事务进行回滚,若插入成功,则进行
ElasticSearch
操作;
[0010]步骤5,若
ElasticSearch
操作失败,则将本次事务进行回滚,若
ElasticSearch
操作成功,则进入步骤6;
[0011]步骤6,查询需要进行
MySQL
操作的
MySQL
数据的表名

主键名和主键值,将需要进行
MySQL
操作的
MySQL
数据的前像转为
json
格式;
[0012]步骤7,将进行
MySQL
操作后得到的数据记为后像,同时将后像转为
json
格式,将表名

主键名

主键值

前像
json
格式和后像
json
格式作为
MySQL
事务表的一条记录,插入数据
库中;
[0013]步骤8,若插入失败,则将本次事务进行回滚,若插入成功,则进行
MySQL
操作;
[0014]步骤9,若
MySQL
操作失败,则将本次事务进行回滚,若
MySQL
操作成功,则删除
ES
事务表与
MySQL
事务表中与本次事务有关的记录

[0015]作为本专利技术的一种优选方案,所述回滚的具体步骤如下:
[0016]步骤
A
,查询步骤1创建的本次事务
ID
的所有
ES
事务数据,按步骤
C

步骤
G
对所有
ES
事务数据进行遍历;
[0017]步骤
B
,判断遍历是否结束,若结束则进入步骤
H
,否则进入步骤
C

[0018]步骤
C
,根据步骤2查询到的索引名

文档
ID
和改变的字段,得到当前
ES
数据;
[0019]步骤
D
,判断当前遍历的
ES
事务数据中是否存在后像数据;若不存在后像数据,则判断当前
ES
数据是否存在;若当前
ES
数据不存在,则创建与当前遍历的
ES
事务数据中的前像相同的文档,并删除当前遍历的
ES
事务数据,返回步骤
B
;若当前
ES
数据存在,则删除当前遍历的
ES
事务数据,返回步骤
B
;若存在后像数据,则判断当前
ES
数据是否存在;
[0020]步骤
E
,若当前
ES
数据不存在,则删除当前遍历的
ES
事务数据,返回步骤
B
;若当前
ES
数据存在,得到当前
ES
数据的
json
格式;
[0021]步骤
F
,判断当前
ES
数据是否与当前遍历的
ES
事务数据中的后像一致,若不一致,则删除当前遍历的
ES
事务数据,返回步骤
B
;若一致,则判断当前遍历的
ES
事务数据中的前像是否有数据;
[0022]步骤
G
,若前像没有数据,则删除当前
ES
数据,同时删除当前遍历的
ES
事务数据,返回步骤
B
;若前像有数据,则更新当前
ES
数据为前像格式,同时删除当前遍本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于事务表处理
ES

MySQL
分布式事务问题的方法,其特征在于,包括如下步骤:步骤1,创建本次事务唯一
ID
;步骤2,查询需要进行
ElasticSearch
操作的
ES
数据的索引名

文档
ID
和改变的字段,将需要进行
ElasticSearch
操作的
ES
数据的前像转为
json
格式;步骤3,将进行
ElasticSearch
操作后得到的数据记为后像,同时将后像转为
json
格式,将索引名

文档
ID、
改变的字段

前像
json
格式和后像
json
格式作为
ES
事务表的一条记录,插入数据库中;步骤4,若插入失败,则将本次事务进行回滚,若插入成功,则进行
ElasticSearch
操作;步骤5,若
ElasticSearch
操作失败,则将本次事务进行回滚,若
ElasticSearch
操作成功,则进入步骤6;步骤6,查询需要进行
MySQL
操作的
MySQL
数据的表名

主键名和主键值,将需要进行
MySQL
操作的
MySQL
数据的前像转为
json
格式;步骤7,将进行
MySQL
操作后得到的数据记为后像,同时将后像转为
json
格式,将表名

主键名

主键值

前像
json
格式和后像
json
格式作为
MySQL
事务表的一条记录,插入数据库中;步骤8,若插入失败,则将本次事务进行回滚,若插入成功,则进行
MySQL
操作;步骤9,若
MySQL
操作失败,则将本次事务进行回滚,若
MySQL
操作成功,则删除
ES
事务表与
MySQL
事务表中与本次事务有关的记录
。2.
根据权利要求1所述的基于事务表处理
ES

MySQL
分布式事务问题的方法,其特征在于,所述回滚的具体步骤如下:步骤
A
,查询步骤1创建的本次事务
ID
的所有
ES
事务数据,按步骤
C

步骤
G
对所有
ES
事务数据进行遍历;步骤
B
,判断遍历是否结束,若结束则进入步骤
H
,否则进入步骤
C
;步骤
C
,根据步骤2查询到的索引名

文档
ID
和改变的字段,得到当前
ES
数据;步骤
D
,判断当前遍历的
ES
事务数据中是否存在后像数据;若不存在后像数据,则判断当前
ES
数据是否存在;若当前
ES
数据不存在,则创建与当前遍历的
ES
事务数据中的前像相同的文档,并删除当前遍历的
ES
事务数据,返回步骤
B
;若当前
ES
数据存在,则删除当前遍历的
ES
事务数据,返回步骤
B
;若存在后像数据,则判断当前
ES
数据是否存在;步骤
E
,若当前
ES
...

【专利技术属性】
技术研发人员:孙志明李玉好刘黄骁烈
申请(专利权)人:南京汇智互娱网络科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1