Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

Synchroniseren tussen 2 databases

Pagina: 1
Acties:

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Ik ben bezig met een simpele applicatie die data uit 1 database haalt en het in een 2e moet zetten. En andersom.

Er kan dus gewerkt worden in beide databases en deze moet elke x minuten gesynct worden.

DB1 is de interne database van de outlook contacts, en DB2 is mysql.

Maar hoe verwezen ik het syncen nu het beste?
Ik dacht eerst aan, ik kijk door DB1, bij elk record kijk ik in DB2 of deze bestaat met een simpele query.

Nu komt het probleem. Als een record dus niet bestaat, hoe weet ik of deze verwijderd is of nieuw is toegevoegd?

Ik kan natuurlijk een flag zetten, maar het probleem is dat DB2 of meerdere clients moet worden gesynct.

Wat zou de beste manier zijn om dit aan te pakken?

  • Spiral
  • Registratie: December 2005
  • Niet online
Je zou gebruik kunnen maken van het Microsoft Sync Framework Stom ga uit van .NET

óf

Je geeft elk record een kolom bestaande uit een GUID en een timestamp wanneer de rij voor het laatst gewijzigd is. Deze twee samen maakt je sleutel om te zoeken.

Zoek op GUID in destination database. Wordt de GUID niet gevonden dan is het een nieuw record. Wordt hij wel gevonden dan kijken naar timestamp welke van de twee laatst gewijzigd is. Dit werkt prima voor aanmaken en gewijzigd. Voor een verwijderde rij zou ik na het verwijderen van een rij de GUID bv in een removedItems tabel plaatsen. En in deze tabel ook naar de GUID zoeken. Wordt de rij gevonden dan verwijderen uit Source database.

[ Voor 1% gewijzigd door Spiral op 27-09-2008 18:01 . Reden: Welke taal? ]

To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles


  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Of je voegt alleen een kolom in met de sync-staat bijv:

- New: 1
- Unchanged: 2
- Modified: 3
- Deleted: 4

na het syncen verander je deze staat gewoon (of delete je het record in geval van een Delete)

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Ja maar als ik 2 clients heb.

Er wordt in de MySQL een record bijgemaakt, dan moet deze naar 2 clients gesynct worden. Als ik deze dan flag met New, dan zal 1 van de 2 deze op normaal zetten, en dan weet de andere client niet wat hij er mee moet.

Het verhaal van Spiral ziet er inderdaad goed uit, alleen moet ik even kijken welk veld ik kan gebruiken als timestamp voor de Outlook database. Maar er zitten een aantal User fields bij dus dat zou moeten kunnen.