Hallo,
ich habe ein Problem mit auto_increment Werten.
Es sind 2 Server aufgebaut, der Hauptserver im internen Netzwerk gut abgesichert,
und ein Webserver für Onlinetätigkeiten.
Nun werden beim Hauptserver laufende Nummern vergeben, welche sich nicht mit
den laufenden Nummern auf dem Webserver überschneiden dürfen.
Eine Replikation vom Haupt- auf den Webserver kommt aus Datenschutzgründen
nicht in Frage (Personendaten).
Nun bin ich auf die Idee gekommen, dem Webserver einzelne Bereiche für die laufende
Nummer zuzuweisen. Dazu bekommt der Webserver exclusiven Zugriff auf eine definierte
Schnittstelle über die Firewall, über welche er eine Anfrage an den internen Server
stellen kann.
Der interne Server lockt daraufhin die entsprechende Tabelle zum schreiben und
setzt den auto_increment Wert per ALTER TABLE um 1000 Nummern nach oben.
Danach antwortet er dem Webserver in der Art "Bereich 1001-2000 ist für dich".
Nun die Fragen ...
- Kann man dies per "LOCK TABLE xy WRITE" überhaupt machen?
- Bei Mysql.com steht was davon das LOCK nur auf den aktuellen Thread wirkt,
bei mir laufen aber mehrere MySQL Prozesse wenn die Leute arbeiten. Können die
anderen Threads totzdem Werte einfügen, wodurch Überschneidungen entstehen?
- Gibs andere oder bessere Möglichkeiten sowas zu realisieren?
ich habe ein Problem mit auto_increment Werten.
Es sind 2 Server aufgebaut, der Hauptserver im internen Netzwerk gut abgesichert,
und ein Webserver für Onlinetätigkeiten.
Nun werden beim Hauptserver laufende Nummern vergeben, welche sich nicht mit
den laufenden Nummern auf dem Webserver überschneiden dürfen.
Eine Replikation vom Haupt- auf den Webserver kommt aus Datenschutzgründen
nicht in Frage (Personendaten).
Nun bin ich auf die Idee gekommen, dem Webserver einzelne Bereiche für die laufende
Nummer zuzuweisen. Dazu bekommt der Webserver exclusiven Zugriff auf eine definierte
Schnittstelle über die Firewall, über welche er eine Anfrage an den internen Server
stellen kann.
Der interne Server lockt daraufhin die entsprechende Tabelle zum schreiben und
setzt den auto_increment Wert per ALTER TABLE um 1000 Nummern nach oben.
Danach antwortet er dem Webserver in der Art "Bereich 1001-2000 ist für dich".
Nun die Fragen ...
- Kann man dies per "LOCK TABLE xy WRITE" überhaupt machen?
- Bei Mysql.com steht was davon das LOCK nur auf den aktuellen Thread wirkt,
bei mir laufen aber mehrere MySQL Prozesse wenn die Leute arbeiten. Können die
anderen Threads totzdem Werte einfügen, wodurch Überschneidungen entstehen?
- Gibs andere oder bessere Möglichkeiten sowas zu realisieren?
Kommentar