UUID (Entifikuesit universalisht unikë të ID -së) janë vlera 128-bit që përdoren në bazat e të dhënave, ndër të tjera, për të identifikuar në mënyrë unike hyrjet e tabelës. Ato përfaqësohen si një varg heksadecimal i ndarë në pesë grupe të ndara me vizë (Shembull: 09fe49b3-4d2b-471c-ac04-36c9e706b85f
). ka të shumta Diskutimet në lidhje me avantazhet dhe disavantazhet e UUID-ve në bazat e të dhënave - ato janë të domosdoshme në sistemet e shpërndara.
Në mikroshërbimet dhe aplikacionet me shumë qira, prandaj ia vlen të merret parasysh prezantimi i UUID-ve. Kalimi nga lloji i të dhënave BigInteger në UUID (një variant i klasifikueshëm i versionit 4 UUID nga specifikimi RFC 4122 ) në kuadrin PHP Laravel bëhet shpejt: Së pari, ne krijojmë një tipar të ri:
2aa7136d977617159be1834eaf40e871
Më pas shtojmë të gjitha modelet tona:
2aa7136d977617159be1834eaf40e871
Në Laravel 9⁺ kjo është edhe më e lehtë: këtu tashmë kemi veçorinë HasUuids gati për t'u përdorur. Përndryshe, korniza ofron gjithashtu mbështetje për llojin e të dhënave të lidhur, por ende mjaft të panjohur ULID , i cili mund të jetë interesant për shkak të lexueshmërisë dhe renditshmërisë më të mirë.
Pjesa e vështirë është migrimi i të dhënave ekzistuese. Përafërsisht mund të veprohet si më poshtë:
- Shtoni kolona të reja UUID me vlera boshe në të gjitha tabelat
(secila bazuar në të gjitha kolonat kryesore dhe të huaja të çelësit) - Shkruani vlerat UUID në kolonat e reja
(me çelësat kryesorë në rritje plus çelësat e huaj të përditësuar) - Fshi kolonat origjinale
- Riemërtoni kolonat e reja
Këtu ka disa sfida: Procesi i migrimit kërkon një kohë të gjatë dhe kolona të reja shtohen në fund të tabelës (zgjidhja e mundshme: kolonat turistike ). Një mënyrë shumë më e drejtpërdrejtë është transformimi i kolonave drejtpërdrejt.
Nëse e vendosni atë PostgreSQL një, ju mund (pas një kopje rezervë të mëparshme, natyrisht) të ekzekutoni pyetjen e mëposhtme, për shembull (para kësaj mund të fshini të gjitha tabelat që përjashtoni në Z. 19
/31
zëvendësojë, si dhe rregullat e veta të veçanta në Z. 37
/39
add) dhe kopjon të gjitha pyetjet e krijuara prej tij:
2aa7136d977617159be1834eaf40e871
Nëse tani i drejtoni pyetjet e krijuara së bashku, ju keni migruar bazën e të dhënave brenda një kohe të shkurtër. Ndërsa UUID-të e krijuara në këtë mënyrë nuk përputhen me specifikimin v4, ato janë leksigrafisht në të njëjtin rend si hyrjet e mëparshme, nuk përplasen me UUID-të e reja (në grupin e 3-të në v4 ka gjithmonë një 4
, gjithmonë një në variantin e migruar 0
), që do të thotë gjithashtu se UUID-të e reja janë gjithmonë më të mëdha se UUID-të e migruara.
Pas kësaj, rekomandohet të fshini të gjitha cache Laravel (php artisan cache:clear && php artisan route:clear && php artisan config:clear && php artisan view:clear && composer dump-autoload && rm -rf bootstrap/cache/*/*
) dhe sesionet e drejtimit (rm -f storage/framework/sessions/*
) për të zbrazur. Sigurisht, e gjithë kjo mund të zbatohet edhe brenda një migrimi Laravel:
2aa7136d977617159be1834eaf40e871
Pas konvertimit përdoret në migrimet e ardhshme bigIncrements
ose. bigInteger
pastaj uuid
:
2aa7136d977617159be1834eaf40e871