PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

UUID oder SEQUENCE für Primärschlüssel?

Eine sequence in PostgreSQL macht genau dasselbe wie AUTOINCREMENT bei MySQL. Eine sequence ist effizienter als eine uuid weil es 8 Bytes statt 16 für die uuid sind . Sie können eine uuid verwenden als Primärschlüssel, genau wie die meisten anderen Datentypen.

Ich sehe jedoch nicht, wie dies mit der Maskierung einer Benutzer-ID zusammenhängt. Wenn Sie die ID eines bestimmten Benutzers vor anderen Benutzern maskieren möchten, sollten Sie die Tabellenberechtigungen sorgfältig verwalten und/oder die ID hashen, indem Sie beispielsweise md5() verwenden .

Wenn Sie eine Tabelle mit Benutzerdaten vor schnüffelnden Hackern schützen möchten, die versuchen, andere IDs zu erraten, dann ist die uuid Art ist eine ausgezeichnete Wahl. Paket uuid-ossp hat mehrere Geschmacksrichtungen. Die Version 4 ist dann die beste Wahl, da sie 122 zufällige Bits hat (die anderen 6 werden zur Identifizierung der Version verwendet). Sie können einen Primärschlüssel wie folgt erstellen:

id uuid PRIMARY KEY DEFAULT uuid_generate_v4()

und dann müssen Sie sich nie mehr darum kümmern.

PostgreSQL 13+

Sie können jetzt die eingebaute Funktion gen_random_uuid() verwenden um eine zufällige UUID der Version 4 zu erhalten.