Michael Schröpl: Schnittstelle lokal und Internet-Server

Beitrag lesen

Hi Andreas,

Ich hab noch nie sowas gemacht und kann nur PHP und das
auch nur sehr begrenzt, aber ich könnte nicht mal eben
auf PERL/C/VB... ausweichen! Bei mir ist PHP so zu sagen
eine Restriktion! Und wenn irgendwein Feature damit nicht
realisierbar ist(was ich nicht glaube) muß darauf erstmal
verzichten.

wenn irgend ein Feature mit _keiner_ Sprache realisierbar ist,
dann ist das eine viel schlimmere Restriktion.

Da die "Endlösung" (kpl. Synchronisation, d.h. ein paar mal
am Tag per Knopfdruck alle Tabellen der Datenbank
miteinander abgleichen, genaueres später!)

Trotz alledem: Damit solltest Du anfangen.

Werden beide Datenbanken unabhängig voneinander geändert? Auch derselbe Datensatz? Wenn ja, wie willst Du die Änderungen in diesem Falle zusammenführen?
Das sind alles immer noch Themen, die von einer Programmiersprache völlig unabhängig sind.

Im Detail soeht das so aus, das der DB-Server im Internet
neue Einträge über das Internet erhält, aber keine
Änderungen erfolgen, die neuen Datensätze sollen auf die
Lokale DB übertragen werden, wo dafür alle Datensätze
verändert werden können, und die geänderten sollen
aktualisiert werden.

Und dann? Während Du lokal alles änderst, können im Internet auch schon wieder Änderungen erfolgt sein. Wie willst Du diese zusammenführen? Soll alles verloren gehen, was während der lokalen Änderungsphase im Internet geschehen ist?

Zur zeit behelfe ich mir damit, das ich in jeder Tabelle
einen timestamp habe, und sowohl auf Server und Client den
letzte Synchronisationszeitpunkt in einer Tabelle logge,
und bei der nächsten Synchronisation alle Datensätze, die
nach der letzten Synchronisation laut Timestamp verändert -
je nachdem - per Update oder Insert entsprechend einfüge.

Kannst Du Deine "lokale" Änderung denn nicht direkt in der produktiven Datenbank vornehmen?
Wenn Du sie dort als Transaktion abwickelst, sparst Du Dir sämtliche Synchronisationen.

Also zusammengefaßt: Im Internet kommen neue Datensätze,
die auf dem lokalen Recvhner eingefügt werden sollen, und
auf diesem rechner führe ich änderungen durch,  die ins
Internet sollen.

Warum? Das ist die entscheidende Frage im Moment. Macht Deine Vorgehensweise so überhaupt Sinn? Wäre es nicht viel geschickter, alles in einer einzigen Datenbank abzuwickeln?

Der Internetserver ist wie gesagt ein gehosteter Webserver,
habe also begrenzte Rechte

Aber offenbar hast Du das Recht, per Programm darauf zuzugreifen - und das sollte für Deinen Fall ausreichen.

Was kannst Du bei Deinen lokalen Änderungen tun, was auf der "Produktions-Datenbank" im Internet nicht geht?

Sind die Felder, die lokal bzw. im WWW geändert werden, disjunkt? (Wenn ja: Lassen sich diese in zwei getrennte Tabellen aufteilen, um überlappende Updates zu vermeiden? Wenn nein: Wie erkennst bzw. behandelst Du Kollisionen?)

Viele Grüße
      Michael