[mysql] synchroon houden van databases

Pagina: 1
Acties:

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 22:53

HenkS

Da_king alias HenkS

Topicstarter
ola,

zo heb een vraag:

we hebben een site waar we auto's verkopen voor heel limburg....

dit gaat aardig... nu gaan we dit ook doen voor heel nederland...

MAAR-> als een auto ingevoerd wordt op de limburgse site, moet hij ook automatisch op de nederlandse site komen

dit zijn 2 aparte db's, en ik wil NIET in de code gaan rotzooien, om ook nu in de andere db die auto te gaan toevoegen...

dus stel: in de limburgdb wordt een auto toegevoegd/ gewijzigd/ verwijderd... dan moet dit ook in de nederlanddb gebeuren (niet andersom...) is dit mogelijk dmv een db synchroscript ofzo??

probleem is wel: als iets op in de nederlandmobieldb wordt ingevoerd via die site... moet het NIET in de limburgmobieldb komen, dus zo synchroon is het dan niet...

iemand een idee voor deze volgens mij vage uitleg?

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 09-09 14:51

thomaske

» » » » » »

[simpele modus]
Maak een periodieke backup van de laatste toegevoegde items, deze insert je dan weer in de andere db.
[/simpele modus]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 23:30
Crontab?

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 22:53

HenkS

Da_king alias HenkS

Topicstarter
ehmm...

hoe bedoel je dat.... een periodieke backup van deze gegevens???

want moet natuurlijk ook bij wijzigen cq verwijderen... kun je dit iets beter uitleggen?

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 09-09 14:51

thomaske

» » » » » »

Op vrijdag 26 april 2002 11:26 schreef HenkS het volgende:
ehmm...

hoe bedoel je dat.... een periodieke backup van deze gegevens???
Dat je elk uur een dump maakt van de records die het afgelopen uur zijn gewijzigd, die dump insert je weer in je andere db.
want moet natuurlijk ook bij wijzigen cq verwijderen... kun je dit iets beter uitleggen?
Hmm, nu wordt het wat moeilijker. Je zou ook een log bij kunnen houden van al je queries die je uitvoert. Deze queries vuur je dan vervolgens af op je andere database.. ofzo ;)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 22:53

HenkS

Da_king alias HenkS

Topicstarter
tja dat wordt wel heel lastig volgens mij!!

mmmm klote probleem i think :(

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 22:53

HenkS

Da_king alias HenkS

Topicstarter
*henks heeft ff verder gedacht*

misschien zo'n gek idee niet al die querys opslaan:

als je bv een insert query hebt:

$insert_query (hier staat de query dus in)

dan doe ik die query dmv een functie inserten in een aparte tabel, met de timestamp erbij...

en dan 1x per uur, al die querys geordend op timestamp (zodat je geen verkeerde volgordes krijgt) loslaten op de andere db...)

*henks denkt ff verder en ontdekt een HEEL groot probleem:*

updates kunnen zowat onmogelijk plaats vinden, omdat bij de nederlanddb auto_ids anders zijn omdat daar meer auto's opstaan...

Verwijderd

via commandline lynx (browser) een http: page met insert request op de andere db laten doen.

dus hier bij twekaers bv:

lynx http://sitenaa/webpage?text=nieuwe auto&nrbord=blaat

ect.

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 22:53

HenkS

Da_king alias HenkS

Topicstarter
ja dat inserten is het probleem niet..

maar dmv insert (en autoincrement) krijgen die autos een id toegewezen, en omdat op de limburgsite minder auto's zullen staan krijgen ze daar een ander id dan op de nederland site..


dus bij wijzigen en verwijderen weet je niet naar welk id je moet verwijzen!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:58

Janoz

Moderator Devschuur®

!litemod

Persoonlijk denk ik dat je het jezelf onnodig moeilijk maakt. Ik denk dat het makkelijker is om voor beide sites dezelfde DB te gebruiken, en eventueel een extra kolom toevoegen waarin wordt aangegeven of de auto bij limburg (of een andere provincie als je nog verder gaat uitbreiden) of niet.

Gedistribueerde databases zijn erg lastig, en maak je niet zomaar ff in asp/php/whatever..

enkele problemen:
Zoals je zelf al aangeeft is het bepalen van unieke ID's erg lastig. Je kunt het per db doen, maar dan krijg je problemen als je wilt gaan synchronizeren, je kunt ook een univorme unieke id gebruiken, maar dan krijg je problemen met het bepalen van die id.

Waneer tijdens het synchronizeren twee van elkaar verschillende records gevonden worden, welke is dan de juiste en welke is verouderd? (erg lastig als op beide sites de gegevens aangepast worden)

Het kan voorkomen dat op beide sites de auto wordt verkocht tussen twee synchronizatie stappen. Op dat moment is de auto dus 2x verkocht, maar wie krijgt hem dan?

Ik denk dat je beter een gehele redesign kunt overwegen waarbij gerbuik wordt gemaakt van 1 db. Dit zal je uiteindelijk een hoop werk schelen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • sjoerdb2
  • Registratie: Juli 2001
  • Laatst online: 09-05-2025
Ik weet niet om hoeveel auto's het gaat, maar ik gebruik ook zo'n systeem
ik gebruik een update scriptje dat ik om de zoveel tijd start dat alles verwijdert en opnieuw insert:

sorry voor de ranzigheid
PHP:
1
<?$select1 = @mysql_query("SELECT * FROM pagina",$extern);@mysql_query("DELETE FROM pagina",$local);while ($row = @mysql_fetch_object($select1))     {@mysql_query("INSERT INTO pagina (id, dag, aktief, uur, minuut, jaar, maand, text1, text2, naam, back, laatzien, category, temp, xx1) VALUES ('$row->id', '$row->dag', '$row->aktief', '$row->uur', '$row->minuut', '$row->jaar', '$row->maand', '$row->text1', '$row->text2', '$row->naam', '$row->back', '$row->laatzien', '$row->category', '$row->temp', '$row->xx1')",$local);}?>

$local en $extern zijn dus de dbase connecties
Pagina: 1