Einzelnen Beitrag anzeigen

Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#18

Re: firebird Trigger

  Alt 4. Dez 2008, 19:53
Zitat von mkinzler:
...Amateure brauchen das gar nicht zu wissen
Yes indead, so isset. Aber ganz unwichtig ist es nicht. Weil es im Thema um Trigger ging und nicht um Generatoren, wollte ich hier auch nicht weiter darauf eingehen, aber was solls :

Warum pro Table einen eigenen Generator ?
Das weiß der Kuckuck. Kommt wohl lediglich daher, dass immer von einem Generator/Trigger "Gespann" gesprochen wird. Das alleine schon suggeriert x Tabellen = x Generatoren. Ein theoretisches Argument wäre die Anzahl der Generatorenwerte.

Zitat von Firebird-Doku:
Generatoren speichern und liefern 64-bit Integerwerte in allen Firebird-Versionen. Dies ergibt einen Wertebereich von:

-263 .. 263-1 oder -9,223,372,036,854,775,808 .. 9,223,372,036,854,775,807

Würde man also einen Generator mit Startwert 0 benutzen, um damit eine NUMERIC(18) oder BIGINT-Spalte zu befüllen, und man würde 1000 neue Datensätze pro Sekunde anlegen, dann würde es etwa 300 Millionen Jahre (!) dauern bevor der Generator überläuft. Da es eher unwahrscheinlich ist, dass die Menschheit dann noch auf diesem Planeten herumläuft (und immer noch Firebird-Datenbanken einsetzt), braucht man sich darüber also nicht wirklich Gedanken machen.
Reicht das als Info ? Hat noch einer ein Argument für ein solches Vorgehen, dann soll er es sagen. Mir fallen jetzt nur die Telekom-Verbindungsdaten ein (in Betracht kommen eigentlich nur maschinelle Inserts und keine manuellen), die eventuell mit einem Generator, der eine integer-ID bestückt Ärger kriegen könnten. Für die gäbe es dann eben Bigint.

Warum pro Table keinen eigenen Generator, sondern nur einen ?

Es geht um die bestmögliche referentielle Integrität der DB und zwar darum, diese auch langfristig zu sichern.

Bleiben wir mal bei der Telekom : angenommen die speichern die Verbindungsdaten in 10 Rechenzentren und in regelmäßigen Abständen sollen die Daten zentral gespeichert werden. Die dürfen sich natürlich nicht ins Gehege kommen. Die Rechenzentren haben jeweils einen Generator-Startwert von 0 dann 1.000.000.000.000.000 bis 9.000.000.000.000.000. Dürfte reichen und es ist sogar noch mehr Platz. Und jetzt ? Selbst wenn unterschiedliche Rechenzentren die Daten von ein und demselben Kunden erfassen und diese dann zusammengewürfelt werden, dann ist noch immer alles in Ordnung.

Würde man das anders machen, dann wären die IDs nicht mehr eindeutig zuzuordnen. Es wäre nicht mal ein permanenter Datenabgleich nötig. Und der Fragesteller braucht sich nur einmal den Namen des Generators zu merken.

P.S. wg. roter Kasten : die "Nummernkreise" sind da schon indirekt drin. Sollte es bei den 10 Rechenzentren gleiche Rechn.Nummern etc. geben und die Daten müssten erst später zusammengeführt werden, dann ist es ein leichtes einmalig eine 0..9 davorzuhängen und fertig. Die IDs müssen aber bleiben wie sie sind.
Gruß
Hansa
  Mit Zitat antworten Zitat