sql >> Databasteknik >  >> RDS >> Mysql

Ersätta MySQL:s UUID version 1-funktion?

Din oro för att "det mesta av UUID är oanvändbart och slösar med utrymme" är inneboende i storleken på datatypen. Du kommer aldrig att kunna ha så många poster i din databas som den teoretiska gränsen på 16 byte tillåter.

Faktum är att V1 UUID passar bättre än V4 om du använder UUID bara som ett tabell-ID - eftersom det använder MAC-adress och tidsstämpel för att förhindra sammandrabbningar. I V4 finns det ingen sådan mekanism, även om du praktiskt taget inte behöver oroa dig så mycket för sammandrabbningar heller :)Du bör använda V4 UUID istället för V1 om du behöver att ditt UUID ska vara oförutsägbart.

Observera också att att komponera slumpmässiga värden på 4x4 byte kanske inte är detsamma som att skapa ett slumpmässigt värde på 16 bytes. Som alltid med krypto och slumpmässighet:Jag skulle avråda från att implementera din egen UUID::V4-rutin.

Om den är installerad på din maskin kan du använda php-uuid paket.

En exempelkod (som kan användas i din applikation som den är) finns här:http://rommelsantor.com/clog/2012/02/23/generate-uuid-in-php/

Använd det så här:

$uuid = uuid_create(1);

Användare som kan installera paket på sin webbserver kan installera det nödvändiga paketet, som:(här för ubuntu)

apt-get install php5-dev uuid-dev
pecl install uuid


  1. TypORM-underfrågor

  2. TSQL DateDiff för att returnera antal dagar med 2 decimaler

  3. Hur låser jag på en InnoDB-rad som inte finns ännu?

  4. Det gick inte att ladda sql-moduler till databasklustret under PostgreSQL-installationen