Ergebnis 1 bis 8 von 8

Thema: GUID oder GUID-Funktion

  1. #1
    lollo ist offline Neuer Benutzer
    Registriert seit
    11.10.2008
    Beiträge
    8

    Standard GUID oder GUID-Funktion

    Hallo NG,
    bei der Suche nach "GUID" erscheinen hier nur eine handvoll Beiträge - allerdings kann ichs mir nicht ganz erklären - naja dann also meine Frage:

    GUIDs sind mir mittlerweile die liebste Art, PRIMARY KEYs zu erstellen.
    Bei SERIAL kann es leicht passieren, dass beim Importieren von Daten ein Datensatz einen INT-Wert besitzt, der bereits in der Tabelle vorhanden ist - bei GUID ist das (theoretisch) unmöglich.

    Von Haus aus unterstützt PostGreSQL keine GUIDs - oder?!
    Gibts dafür ne Erweiterung/Funktion - oder spricht was gegen GUIDs?

    Lollo

  2. #2
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Google hat auf der ersten Seite genügend Treffer ausgespuckt, die sich weiter zu betrachten lohnen.

    Wenn du sowieso weißt, dass du Kollisionen bei einem Integer haben könntest dann macht ein SERIAL keinen Sinn. So ganz einfach ist die Sache jedoch nicht: immerhin vervierfacht sich der Platzverbrauch für den Primary Key, außerdem vergrößert sich die I/O-Last und die Vergleiche dauern auch etwas länger. Kostet also Performance. Außerdem sind entsprechende Funktionen nicht auf jedem System vorhanden und müssen ggf. nachinstalliert werden.

    Wenn du also einen Primary Key brauchst und Datensätze importierst - warum schaust du nicht das du das Setup des PKey passend in deine Daten integrierst.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  3. #3
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von lollo Beitrag anzeigen
    Hallo NG,
    bei der Suche nach "GUID" erscheinen hier nur eine handvoll Beiträge - allerdings kann ichs mir nicht ganz erklären - naja dann also meine Frage:

    GUIDs sind mir mittlerweile die liebste Art, PRIMARY KEYs zu erstellen.
    Bei SERIAL kann es leicht passieren, dass beim Importieren von Daten ein Datensatz einen INT-Wert besitzt, der bereits in der Tabelle vorhanden ist - bei GUID ist das (theoretisch) unmöglich.
    Kommt drauf an. Keiner zwingt Dich doch, die ID mit zu importieren.

    Code:
    test=# create table foo (id serial, t text);
    NOTICE:  CREATE TABLE will create implicit sequence "foo_id_seq" for serial column "foo.id"
    CREATE TABLE
    Time: 164,741 ms
    test=*# copy foo (t) from stdin;
    Enter data to be copied followed by a newline.
    End with a backslash and a period on a line by itself.
    >> bla
    >> fasel
    >> foo
    >> \.
    Time: 6945,386 ms
    test=*# select * from foo;
     id |   t
    ----+-------
      1 | bla
      2 | fasel
      3 | foo
    (3 rows)

    Von Haus aus unterstützt PostGreSQL keine GUIDs - oder?!
    Gibts dafür ne Erweiterung/Funktion - oder spricht was gegen GUIDs?

    Lollo
    Siehe ads.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  4. #4
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    Zitat Zitat von lollo Beitrag anzeigen
    spricht was gegen GUIDs?

    Lollo
    GUIDs sind vergleichsweise aufwendig zu generieren ..

    nicht nur - wie ads schrieb - mehr IO last und rechenaufwand fuer Vgl. zu erwarten sind .. allein der Aufwand zum generieren der GUIDs ist haeufig ein KO-Kriterium ..

    man sollte schon genau wissen, warum man die nutzen will - "weils huebsch waere" reicht nicht, dein Import-Problem ist auch kein Grund - weils eigentlich kein Problem ist!

  5. #5
    lollo ist offline Neuer Benutzer
    Registriert seit
    11.10.2008
    Beiträge
    8

    Frage

    Der Einsatz von GUIDs erklärt sich auch eigentlich mehr über den Einsatz von Objekten, die abseits (also offline) der DB erstellt werden. Hier ist die Vergabe einer "Unique ID" (offline der DB) in Form einer GUID schon sehr hilfreich.

    Denn wie ist es, wenn man ein Vater-Objekt hat und man die Kinder-Objekte speichern möchte? Man erstellt in der Vater-Tabelle den neuen Eintrag und muss dann erstmal die vom DBMS erstellte, fortlaufende ID für das Vaterobjekt ermitteln. Erst danach kann man die Kinder-Objekte in der Kinder-Tabelle speichern, um jedesmal die Vater-ID mit anzugeben.

    Wenn man ein Vater-Objekt identifizieren will, muss man ohne GUID aus weiteren Eigenschaften aussuchen, die den Datensatz eindeutig identifizieren. Die GUID vereinfacht das und ist zudem performanter.

    Fazit: GUID() erstellt eine "Unique ID" auch abseits/offline der DB, mit der man komplexe Datenstrukturen sehr einfach ordnen kann, mit der absoluten Sicherheit, dass die ID "unique" ist.

  6. #6
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von lollo Beitrag anzeigen
    Der Einsatz von GUIDs erklärt sich auch eigentlich mehr über den Einsatz von Objekten, die abseits (also offline) der DB erstellt werden. Hier ist die Vergabe einer "Unique ID" (offline der DB) in Form einer GUID schon sehr hilfreich.

    Denn wie ist es, wenn man ein Vater-Objekt hat und man die Kinder-Objekte speichern möchte? Man erstellt in der Vater-Tabelle den neuen Eintrag und muss dann erstmal die vom DBMS erstellte, fortlaufende ID für das Vaterobjekt ermitteln. Erst danach kann man die Kinder-Objekte in der Kinder-Tabelle speichern, um jedesmal die Vater-ID mit anzugeben.

    Wenn man ein Vater-Objekt identifizieren will, muss man ohne GUID aus weiteren Eigenschaften aussuchen, die den Datensatz eindeutig identifizieren. Die GUID vereinfacht das und ist zudem performanter.

    Fazit: GUID() erstellt eine "Unique ID" auch abseits/offline der DB, mit der man komplexe Datenstrukturen sehr einfach ordnen kann, mit der absoluten Sicherheit, dass die ID "unique" ist.
    Das hast Du zwar schön erklärt, erklärt aber noch immer nicht, warum Du bisher PostgreSQL: Documentation: Manuals: PostgreSQL 8.3: UUID Type übersehen hast.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  7. #7
    lollo ist offline Neuer Benutzer
    Registriert seit
    11.10.2008
    Beiträge
    8

    Standard

    Hey super !!!
    (komisch, dass ich das übersehen habe)
    Danke für den Hinweis!

    Dieser Link (für Interessierte) handelt von Funktionen zum Erstellen von UUIDs / GUIDs: http://www.postgresql.org/docs/8.3/i...uuid-ossp.html
    Geändert von lollo (01.11.2008 um 19:45 Uhr)

  8. #8
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von lollo Beitrag anzeigen
    Hey super !!!
    (komisch, dass ich das übersehen habe)
    Danke für den Hinweis!
    Tja. Ads sagte am 19.10. schon: Google, erster Treffer. In der Tat, wenn man nach 'postgresql uuid' sucht. Wonach hast Du denn gegoogelt?

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

Ähnliche Themen

  1. Frage Wie kann ein Array mittels Domain oder Funktion validiert werden?
    Von jazzhunter im Forum Trigger und Funktionen
    Antworten: 5
    Letzter Beitrag: 26.07.2011, 17:48
  2. Antworten: 0
    Letzter Beitrag: 10.01.2011, 10:26
  3. Funktion oder Rule
    Von demarc im Forum Trigger und Funktionen
    Antworten: 3
    Letzter Beitrag: 05.01.2011, 17:27
  4. Problem Trigger und Funktion oder Regel?
    Von mc-bain im Forum Trigger und Funktionen
    Antworten: 4
    Letzter Beitrag: 02.02.2010, 13:53
  5. Frage View oder Funktion
    Von GraySoft im Forum Allgemeines
    Antworten: 2
    Letzter Beitrag: 08.05.2009, 14:49

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum