AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken MSSQL GUID oder Windows GUID
Thema durchsuchen
Ansicht
Themen-Optionen

MSSQL GUID oder Windows GUID

Ein Thema von Captnemo · begonnen am 16. Okt 2012 · letzter Beitrag vom 17. Okt 2012
Antwort Antwort
Seite 2 von 2     12   
Furtbichler
(Gast)

n/a Beiträge
 
#11

AW: MSSQL GUID oder Windows GUID

  Alt 17. Okt 2012, 16:26
Ich bin mir bewusst, das man eine eine Wahrscheinlichkeit (von Duplizität) von 1:3.4* 10^1038 ungleich 0 ist, aber die GUID wurde nun mal dafür entwickelt, das man sich nicht darum kümmern muss.

Theoretisch kann ich natürlich zwei identische GUID erzeugen, entweder mit Absicht (das soll uns aber hier nicht interessieren), oder, weil der GUID-Generierungsalgorithmus fehlerhaft, d.h. nicht dem Standard entspricht.

Wenn ich also eine GUID verwende, dann kann ich mich darauf verlassen, das sie eindeutig ist. Aber da jeder schon Pferde vor der Apotheke hat kotzen sehen, kann man das noch abfangen, wenn man denn nichts besseres zu tun hat. Aber -wie schon erwähnt-, Programmierer machen das eigentlich nicht.

Natürlich kann ich so programmieren, das z.B. vor jedem Dateizugriff geprüft wird, ob die Festplatte nicht zwischenzeitlich von Außerirdischen entwendet wurde, aber ich halte es da lieber so, das ich das System gegen die Wand fahren lasse (aka auf Exception reagieren). Ich bin nämlich der Ansicht, das die Wahrscheinlichkeit, das eine HD von Außerirdischen weggebeamt wird, in der o.g. Größenordnung liegt.

Bei einer Datenbank, für die die GUID ihrem Namen gerecht werden soll, wäre das ein unique Index auf der Spalte. Das aber nicht dafür, das ich wirklich die Hostenträger an den Gürtel tackere, sondern um deklarativ darauf hinzuweisen, das diese Spalte erstens zum Suchen geeignet und zweitens per definitionem eindeutig ist. Das mir das RDBMS nebenbei eine (hier eigentlich überflüssige) Prüfung einbaut, ist nett und nicht(!) performancefressend, da die Prüfung en passant beim Einfügen passiert. Also nehme ich das mit.

Allerdings ist die Verwendung einer GUID ein PK performancetechnisch nicht gerade erste Wahl. Ein PK wird i.A. als Clustered Index angelegt. Neue Einträge werden also nicht ans Ende des Index geschrieben, sondern irgendwo in die Mitte, was zu ziemlichen Umkopieroperationen (B-Bäume) führt. Aber darum geht es hier ja nicht.

Wenn das dann einen Programmfehler verursacht, der Schaden verursacht,
kann man auch nicht sagen "Das war ja sowas von unwahrscheinlich, deshalb habe ich keine Fehlerbehandlung eingebaut".
Doch, denn Du kannst eh nicht alles abfangen, und viel (sehr! viel!) wahrscheinlicher sind doch andere Faux-Pas.

Da RAM-Fehler weitaus häufiger vorkommen, als doppelte GUID, müsstest Du mit deiner Logik dann ja prüfen, ob nach einer Zuweisung wirklich alles kopiert wurde? Halte ich für ziemlich anstrengend.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz