当前位置:网站首页>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 .
边栏推荐
- Just do it with your hands 7 - * project construction details 2 - hook configuration
- Li Kou's 300th weekly match
- Unity2d -- character moves and turns
- 小程序毕业设计---美食、菜谱小程序
- Appearance of LabVIEW error dialog box
- [MySQL practice of massive data with high concurrency, high performance and high availability -8] - transaction isolation mechanism of InnoDB
- Topological sorting and graphical display of critical path
- Encryption and decryption
- 中科磐云—模块A 基础设施设置与安全加固 评分标准
- [matlab] matlab simulation modulation system - DSB system
猜你喜欢
2022 t elevator repair operation certificate examination question bank and simulation examination
Signification des lettres du module optique et abréviation des paramètres Daquan
C语言简易学生管理系统(含源码)
Evolution of system architecture: differences and connections between SOA and microservice architecture
Zhongke panyun-d module analysis and scoring standard
光模块字母含义及参数简称大全
Capturing and sorting out external Fiddler -- Conversation bar and filter
Public inputs in appliedzkp zkevm (13)
Write a complete answer applet (including single choice questions, judgment questions and multiple topics) (III) single choice questions, judgment questions, and the first question display
全国职业院校技能大赛(中职组)网络安全竞赛试题—解析
随机推荐
c语言经典指针和数组笔试题解析
[high concurrency, high performance and high availability of massive data MySQL practice-7] - memory data drop disk
Two sides of the evening: tell me about the bloom filter and cuckoo filter? Application scenario? I'm confused..
[matlab] communication signal modulation general function - low pass filter
Flink1.13 SQL basic syntax (I) DDL, DML
光模块字母含义及参数简称大全
Letter meaning and parameter abbreviation of optical module Daquan
Trie数-字典树
Notepad++ -- display related configurations
Flask
Signification des lettres du module optique et abréviation des paramètres Daquan
C语言简易学生管理系统(含源码)
[matlab] matlab simulates digital bandpass transmission system ask, PSK, FSK system
Simulink与Arduino串口通信
[matlab] matlab simulation modulation system - VSB system
National vocational college skills competition (secondary vocational group) network security competition questions - Analysis
LabVIEW错误对话框的出现
中科磐云—2022广西逆向解析思路
光模塊字母含義及參數簡稱大全
Flink1.13 basic SQL syntax (II) join operation