Some information about data synchronization that was collected on the previous network
A publish/subscribe approach for synchronization
Publish/subscribe is a mechanism of database backup which is brought by SQL Server, which can quickly realize the synchronization of data backup without writing any code.
This kind of data is synchronized in a way that has some of the following problems:
- The table structure cannot be changed, the table structure of both sides of the synchronization must be the same, and the database snapshot needs to be rebuilt once the table structure changes.
- There is no reliable guarantee for the synchronization of large data volumes.
- Synchronization is not guaranteed in the case of network instability.
In general, this kind of data backup synchronization method, in the table structure consistent, the amount of data is not particularly large case is a very efficient synchronization.
Two data synchronization by SQL job mode
The basic principle of implementing synchronization through SQL job timed jobs is through the connection of the destination server and the source server, and then by writing SQL statements, reading the data from the source server, and then updating to the target server.
Three data synchronization via SQL Server Service Broker Message Queuing
Http://www.cnblogs.com/downmoon/archive/2011/04/05/2005900.html
Four SQL Server AlwaysOn Read and write separations implement a master multiple slave
Disadvantages, can not realize multi-master multi-Slave
Five ORM-based implementations
This is the way your company is used, implemented within the program, using an ORM framework.
5.1 If there is data generated through the manipulation of the interface, it must be saved unless the ORM invokes the Save method
5.2 Increase the listener event at the save point. Save the trigger by adding, deleting, and changing the SQL
5.3 Using another synchronous data service, the SQL data is synchronized to achieve the purpose of synchronizing data
5.4 Using Nhinberate. Methods in File SessionImpl.cs
public override void Aftertransactioncompletion (bool success, ITransaction TX) {using (New Sessionidlo Ggingcontext (base. SessionId)) {log. Debug ("Transaction completion"); if (base. Factory.Statistics.IsStatisticsEnabled) {base. Factory.StatisticsImplementor.EndTransaction (Success); } this.connectionManager.AfterTransaction (); This.persistenceContext.AfterTransactionCompletion (); This.actionQueue.AfterTransactionCompletion (Success); if (this.rootsession = = null) {try {This.int Erceptor. Aftertransactioncompletion (TX); } catch (Exception Exception) {log. Error ("Exception in Interceptor Aftertransactioncompletion ()", exception); } } if (tx! = NULL) && success)//Important added code {Iaftertransactioncompletioneven t[] Transactioneventlisteners = this.listeners.TransactionEventListeners; The event interface defines for itself the addition of if (Transactioneventlisteners.length > 0) { Dbchangeaction[] Dbchangeaction = this. Connectionmanager.getdbchangeaction (); for (int i = 0; i < transactioneventlisteners.length; i = (int) (i + 1)) { Transactioneventlisteners[i]. Ontransactioncompletion (dbchangeaction, this); } } }} }
5.5 in their own programs to implement the interface how to handle the synchronization of data can be
public class Datachangelistener:iaftertransactioncompletionevent { private static DataTable cacheddatatasktable = null; public void Ontransactioncompletion (nhibernate.action.dbchangeaction[] actions, NHibernate.Engine.ISessionImplementor session) { //self-determined to process }/* var lstn = new Datachangelistener () ; Eventlisteners.transactioneventlisteners = New nhibernate.event.iaftertransactioncompletionevent[] {lstn};*/
Six uses Moebius for SQL Server Database components, but this component requires a fee
Summary: At present, the best is the fifth or sixth way. There is one other way that I think about the third, and the fifth one. is to create a trigger that increases, deletes, and changes on each table. The changed data is then converted into XML to be automatically stored in another table (this table does not contain a trigger for pruning, using the SQL statement of mode three).
It then uses the program to convert the corresponding XML statements into SQL statements.
Then synchronize the SQL statements to achieve the purpose of synchronizing the data.
Several implementations of data synchronization fifth software-based applications for synchronization (the first four based on the database level, the fourth to do cluster one master multi-slave. )