Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zastąpić funkcję UUID w wersji 1 MySQL?

Twoja obawa, że ​​„większość identyfikatorów UUID jest bezużyteczna i marnuje miejsce” jest nieodłącznie związana z rozmiarem typu danych. Nigdy nie będziesz w stanie mieć tylu wpisów w swojej bazie danych, na ile pozwala teoretyczny limit 16 bajtów.

W rzeczywistości UUID V1 jest bardziej odpowiedni niż V4, jeśli używasz go jako identyfikatora tabeli - ponieważ używa adresu MAC i znacznika czasu, aby zapobiec kolizjom. W V4 nie ma takiego mechanizmu, chociaż praktycznie nie musisz się zbytnio martwić o starcia :) Powinieneś użyć V4 UUID zamiast V1, jeśli chcesz, aby Twój UUID był nieprzewidywalny.

Należy również pamiętać, że komponowanie na przykład 4x4 bajtowych wartości losowych może nie być tym samym, co tworzenie 16-bajtowej wartości losowej. Jak zawsze w przypadku krypto i losowości:odradzałbym implementację własnej procedury UUID::V4.

Jeśli jest zainstalowany na twoim komputerze, możesz skorzystać z php-uuid pakiet.

Przykładowy kod (który może być użyty w Twojej aplikacji w takiej postaci, w jakiej jest) można znaleźć tutaj:http://rommelsantor.com/clog/2012/02/23/generate-uuid-in-php/

Użyj go w ten sposób:

$uuid = uuid_create(1);

Użytkownicy, którzy są w stanie instalować pakiety na swoim serwerze internetowym, mogą zainstalować wymagany pakiet, taki jak:(tutaj dla ubuntu)

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wybrać podobne wiersze w dwóch różnych tabelach w MySQL (czy to możliwe?)

  2. Wywoływanie procedury składowanej w procedurze składowanej w MySQL

  3. Najlepszy sposób na przechowywanie godzin pracy i efektywne wyszukiwanie

  4. Wstawianie danych z CSV do bazy danych MySQL jest bardzo powolne

  5. Ustaw PDO, aby domyślnie zgłaszało wyjątki