MySQL UUID hogyan?

Fórumok

Szeretnék elsődleges kulcsnak használni a táblában UUID-t. Van egy-két dolog amivel kapcsolatban nem teljesen tiszta nekem a használata, vagy használhatósága.
Az adatbázis kezelő MySQL vagy MariaDB.
Az már egyértelmű, hogy egy INT-hez képest rosszabb elérési / keresési időt hozhat. A legrosszabb, ha VARCHAR-ként van tárolva, jobb, ha BINARY-ban van.
(Jelen alkalmazásban, az INT és VARCHAR közötti különbséget sem érezném meg.)

Az alábbi dolgok viszont nem világosak:
- Biztosan mindig egyedi lesz? Tehát több párhuzamosan indított tranzakció esetén is?
- Lehet jobban randomizált megoldást használni? pl. UUID v4-et?
- Íráskor INSERT / UPDATE lehet ütközés, lehet már meglévő? Kezelni kell ezt, vagy kezeli a MySQL?

Valami egyéb dolog amire érdemes figyelni? 

BLOB-ból kép lekérdezése lenne a cél, megcsinálhatnám INT-el is, de tanulva a "BKK-hack"-ből szeretnék kicsit randomizáltabb és egyedibb nem követhető azonosítókat.

Hozzászólások

BLOB-ból kép lekérdezése lenne a cél, megcsinálhatnám INT-el is, de tanulva a "BKK-hack"-ből szeretnék kicsit randomizáltabb és egyedibb nem követhető azonosítókat.

Használj id-té egy hash-t amit csak te tudsz kiszámolni, így nem porgetheto végig az összes is. Hibás keres esetén bejegyzés majd ip2ban.

- Biztosan mindig egyedi lesz? 
Ha olyan az algoritmus (általában az), akkor igen.

- Lehet jobban randomizált megoldást használni? pl. UUID v4-et?
Ha tudsz generálni :D
SO tele van hozzá kóddal. 

- Íráskor INSERT / UPDATE lehet ütközés, lehet már meglévő? Kezelni kell ezt, vagy kezeli a MySQL?
Ha szar az algoritmus, akkor lesz constraint violation-öd. Ha van minimum unique indexed rajta.

 

De a másik ötlet, hogy a primary key-ed hash-eled valamivel és azt használod is nagyon tetszik.

Ha jól olvastam, van egy növekményes rész is az UUID-ben, elvileg ez biztosítja hogy azonos időpontban készültek is különbözzenek. 
Ránézésre viszont az UUID v1 egymás után lekérve eléggé hasonló. UUID v4 mindig különböző.
Láttam rá tárolt eljárás kódot, hogy UUID v4-et vagy hasonlót generáljon az ember.

A hash megoldás sem elvetendő. Ugyanúgy megírható hozzá.

Az egyediség, ütközés és UUID v4 kérdése leginkább MySQL irányban lenne kérdés, hogy valahogy tudja-e, vagy kell hegeszteni hozzá valamit.