当前位置:网站首页>Talk about the SQL server version of DTM sub transaction barrier function
Talk about the SQL server version of DTM sub transaction barrier function
2022-07-04 05:22:00 【catcherwong】
background
I wrote two articles on how to use it C# be based on DTM Make it easy SAGA and TCC Of distributed transactions , There is a sub transaction barrier function , Good handling of null compensation 、 Hang 、 Repeated requests and other abnormal problems .
But the previous examples are based on mysql Of , It was asked if other databases were supported .
Obviously this is supported , Relational databases , except mysql, And support pgsql and sql server .
Some existing systems , There must be a lot more based on sql server Developed , If this batch of systems want to access DTM, There is no need to move the database first and then access .
So next , Lao Huang will take you through the experience based on sql server Version of DTM Sub transaction barrier function .
The example will be based on the previous SAGA Examples of transformation .
Sub transaction barrier table
Use the sub transaction barrier first , It is essential to prepare a sub transaction barrier table , So this sub transaction barrier table should be placed under the database of that instance ?
All you need to do here is make sure , The business data to be operated and the sub transaction barrier can be in the same local transaction .
The following is for SQL Server Table of SQL.
IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N’[dbo].[barrier]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
BEGIN
DROP TABLE [dbo].[barrier]
END
GO
CREATE TABLE [dbo].[barrier]
(
[id] bigint NOT NULL IDENTITY(1,1) PRIMARY KEY,
[trans_type] varchar(45) NOT NULL DEFAULT(''),
[gid] varchar(128) NOT NULL DEFAULT(''),
[branch_id] varchar(128) NOT NULL DEFAULT(''),
[op] varchar(45) NOT NULL DEFAULT(''),
[barrier_id] varchar(45) NOT NULL DEFAULT(''),
[reason] varchar(45) NOT NULL DEFAULT(''),
[create_time] datetime NOT NULL DEFAULT(getdate()) ,
[update_time] datetime NOT NULL DEFAULT(getdate())
)
GO
CREATE UNIQUE INDEX[ix_uniq_barrier] ON[dbo].[barrier]
([gid] ASC, [branch_id] ASC, [op] ASC, [barrier_id] ASC)
WITH(IGNORE_DUP_KEY = ON)
GO
Copy code The key here is the unique index , There is one IGNORE_DUP_KEY = ON. This is actually for equivalence mysql Of insert ignore.
In fact, the preparatory work has already been completed here .
Here is an example after the transformation , Not much to do , Just switch some configurations .
Switch configuration
To be in InApi Which specifies the sub transaction barrier Database type and Custom table name .
Perform the following configuration before startup
// Appoint Sub transaction barrier The database type is sql server
Dtmcli.DtmImp.DbSpecialDelegate.Instance.SetCurrentDBType("sqlserver");
// Appoint Table name of the sub transaction barrier table
Dtmcli.BranchBarrier.SetBarrierTableName("[test].[dbo].[barrier]");
Copy code For the table name , Lao Huang suggested adding the name of the library .
PS: This setting should be put into the configuration file later , At this stage, it is basically to maintain and go The version is written in a similar way .
Last but not least is to change the connection string and SqlConnection 了 .
public class Db
{
private static readonly string _conn = "Data Source=127.0.0.1, 1433;Initial Catalog=test;user id=dev;password=123456;TrustServerCertificate=True;";
public static DbConnection GeConn() => new Microsoft.Data.SqlClient.SqlConnection(_conn);
}
Copy code Come here , All the transformation has been completed . Let's take a look at the specific example demonstration .
Example demonstration
Here's a demonstration of Talk about how to use it C# Easily complete a SAGA Distributed transactions There are two problems: null compensation and idempotence .
Let's look at the short compensation .
Let's look at idempotent
The log output and behavior effect are basically consistent .
Finally, look at the data in the database
At the end
In this article , Describes how to use in the sub transaction barrier SQL Server As underlying storage . I hope it will be helpful for you to study distributed transactions .
Sample code of this article : DtmMsSqlSample
Reference material
Follow my public number 「 No, Lao Huang 」, I will share what Lao Huang has seen and heard with you for the first time .
边栏推荐
- Programming example of stm32f1 and stm32subeide -74hc595 drives 4-bit 7-segment nixie tube
- RSA加密应用常见缺陷的原理与实践
- JS string splicing
- Simulated small root pile
- Signification des lettres du module optique et abréviation des paramètres Daquan
- 练习-冒泡排序
- Public inputs in appliedzkp zkevm (13)
- Flutter calls Gaode map app to realize location search, route planning and reverse geocoding
- Notepad++ -- display related configurations
- Customize a pager needed in your project
猜你喜欢

KMP匹配字符串

Sécurité du réseau dans les écoles professionnelles secondaires - preuve de mémoire

Customize a pager needed in your project

Void convolution, deformable convolution, deformable ROI pooling

Solar insect killing system based on single chip microcomputer

Signification des lettres du module optique et abréviation des paramètres Daquan

Public inputs in appliedzkp zkevm (13)

2022 t elevator repair operation certificate examination question bank and simulation examination

Analysis of classical pointer and array written test questions in C language

KMP match string
随机推荐
June 2022 summary
Etcd database source code analysis - initialization overview
中科磐云—数据分析与取证数据包flag
补某视频网站的js,进行视频解密
[matlab] matlab simulation modulation system - DSB system
Error response from daemon: You cannot remove a running container 8d6f0d2850250627cd6c2acb2497002fc3
Character types of C language
Zhongke Panyun - module a infrastructure setting and safety reinforcement scoring standard
十二. golang其他
Ping port artifact psping
LM small programmable controller software (based on CoDeSys) note XXI: error 3703
ping端口神器psping
【QT】定时器
IP时代来临,电竞酒店如何借好游戏的“东风”?
National vocational college skills competition (secondary vocational group) network security competition questions - Analysis
力扣(LeetCode)184. 部门工资最高的员工(2022.07.03)
ETCD数据库源码分析——初始化总览
Automated testing selenium foundation -- webdriverapi
Just do it with your hands 7 - * project construction details 2 - hook configuration
VB.net GIF(制作、拆解——优化代码,类库——5)