Zastąp funkcję UUID wersji 1 MySQL?

Kontekst

Aplikacja internetowa, PHP 5, MySQL 5.0.91

Problem

Niedawno przełączyłem się z automatycznej inkrementacji liczby całkowitej na UUID jako klucz podstawowy dla niektórych moich tabel. Podczas generowania identyfikatorów UUID za pośrednictwem MySQLUUID() funkcja, są bardzo podobne do siebie:

| uuid                                 |
----------------------------------------
| 1e5988da-afec-11e1-9877-5464f7aa6d24 |
| 408092aa-afad-11e1-9877-5464f7aa6d24 |
  ^------^   ^^
  1      8   11-12

Jak widać, tylko 8 pierwszych postaci i 11 i 12 są różne. Rozumiem, że UUID wersja 1 używa znacznika czasu i sprzętowego adresu MAC do wygenerowania identyfikatora UUID. Waham się jednak w używaniu wersji 1 z powodu tych podobieństw (i faktu, że w moim przypadku adres MAC nigdy się nie zmieni). Ponadto, jeśli adres MAC nigdy się nie zmieni, większość UUID jest bezużyteczna i marnuje przestrzeń.

Moja niestandardowa funkcja UUID

Jako eksperyment napisałem niestandardowy generator UUID w PHP:

public static function GenerateUUID()
{
    return
    substr(sha1(Account::GetUsername() . Account::GetUserID()), 18, 8) . "-" .
    substr(md5(time()), rand() % 28, 4) . "-" . 
    substr(md5(date("Y")), rand() % 28, 4) . "-" . 
    substr(sha1(rand()), 20, 4) . "-" . 
    substr(sha1(rand() % PHP_INT_MAX), 17, 12);
}

Próbka wyników:

| uuid                                 |
----------------------------------------
| 574d18c2-5080-bac9-5597-45435f363ea1 |
| 574d18c2-30d4-8b5b-4ffd-001744d3d287 |

Tutaj pierwszych 8 znaków jest identycznych dla tego samego użytkownika. To było zamierzone, ale nie potrzebne.

Pytanie

Czy istnieje preferowany / zalecany sposób generowania UUID w wersji 4 lub wersji 5. \ tw ramach zapytania MySQL?

Jeśli nie, czy dopuszczalne jest wygenerowanie niestandardowego identyfikatora UUID w PHP (jak powyżej), który nie jest zgodny ze specyfikacją?

Ograniczenia

Korzystam z udostępnionego planu hostingu z dostępem z linii poleceń, ale nie mogę modyfikować istniejącej instalacji MySQL.Wolałbym unikać pakietów / bibliotek innych firm.

Uwagi

Nie wykonuję scalania, synchronizacji ani innych operacji wymagających identyfikatora GUID zawierającego adres MAC. Tu nie ma problemu.

questionAnswers(2)

yourAnswerToTheQuestion