sql >> Database teknologi >  >> RDS >> Mysql

Erstatning for MySQL's UUID version 1-funktion?

Din bekymring om, at "det meste af UUID'en er ubrugelig og spilder plads" er iboende til størrelsen af ​​datatypen. Du vil aldrig være i stand til at have så mange indgange i din database, som den teoretiske grænse på 16 bytes tillader.

Faktisk er V1 UUID mere egnet end V4, hvis du bruger UUID kun som et tabel-ID - fordi det bruger MAC-adresse og tidsstempel for at forhindre sammenstød. I V4 er der ingen sådan mekanisme, selvom du praktisk talt heller ikke behøver at bekymre dig for meget om sammenstød :)Du bør bruge V4 UUID i stedet for V1, hvis du har brug for, at dit UUID er uforudsigeligt.

Bemærk også, at sammensætning af f.eks. 4x4 byte tilfældige værdier måske ikke er det samme som at oprette en 16 byte tilfældig værdi. Som altid med krypto og tilfældighed:Jeg vil fraråde at implementere din egen UUID::V4 rutine.

Hvis det er installeret på din maskine, kan du gøre brug af php-uuid pakke.

En eksempelkode (som kan bruges i din ansøgning som den er) kan findes her:http://rommelsantor.com/clog/2012/02/23/generate-uuid-in-php/

Brug det sådan her:

$uuid = uuid_create(1);

Brugere, der er i stand til at installere pakker på deres webserver, kan installere den nødvendige pakke, som:(her for ubuntu)

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


  1. 4 nøgledatabaseovervågningsaktiviteter, som enhver DBA bør kende

  2. Migrer database fra Postgres til MySQL

  3. Returner månedens start i SQLite

  4. Fejlfinding af SQL Server Always On Availability Groups