( persicsb | 2020. 10. 15., cs – 14:20 )

Az első pont a biztonság. Ha neked autoincrement azonosítóid vannak, akkor egy azonosító megszerzése után nagyon könnyen tudok következtetni más, valid azonosítókra és azokra lekérdezéseket futtatni stb. Ha kiadok több ilyen azonosítót valahova, akkor abból lehet következtetni sok mindenre. Akár még ipari kémkedésre is adhat információt az, hogy egy adott időszakban X volt az autoinrement mező értéke, másik időszakban meg Y.

Gondolj bele, mi lenne, ha a session azonosítók autoincrement mezők lennének valamilyen opaque azonosító helyett. Ha valaki megszerez egy élő session-azonosítót, akkor utána próbálkozás alapon a közeli azonosítókat végigpróbálva egy csomó érvényes session-be bele tudna nézni.

Ha UUID-et használsz, akkor hiába tud meg valaki egy érvényes azonosítót, nem tud következtetni arra, hogy mik a más érvényes azonosítók.

 

A második pont a megoszthatóság: egy UUID által azonosított adattáblát bármikor particionálhatsz több fizikai szerverre, az adattáblák a többi partícióval való kommunikáció nélkül is értelmesen frissíthetők.

Az UUID-ek ugyanis globális azonostók. Ha több, egymástól fizikailag elkülönülő szervezet (pl. egy multicég több üzeme sok országban - mondjuk a Tesco üzemek) azonosítani akarnak globálisan pl. a megrendeléseket, akkor a magyar, angol, lengyel, francia stb. adatbázisok sorai között sem lesz ID-ütközés, annak ellenére, hogy ezek az adatbázisok egymástól függetlenül frissülnek. Azaz egy azonosító globálisan csak egyszer fog szerepelni egy adattáblában, ahelyett, hogy ki kéne találni, hogy a 21324 ID az az angol, francia vagy magyar eladási adatbázisban van benne.

A harmadik pont a skálázhatóság: UUID által azonosított táblák esetén általában a beszúráskor a kliens határozza meg az új azonosítót, és nem a szerver. A kliensre van bízva, hogy generáljon egy érvényes UUID-et, ezáltal nem a szerver erőforrásait foglaljuk, amikor a sok-sok konkurrens tranzakciónál megpróbálja kitalálni, hogy melyik tranzakcióban beküldött adatsornak mi lesz az ID-ja. A kliensek meg tudják ezt anélkül tenni párhuzamosan, hogy ütköznének az UUID-ek.

Nyilván, előfordulhat ütközés - de ennek a valószínűsége kisebb, mint annak, hogy jön egy földönkívüli hadsereg és elpusztítja az adatbázist.