What are UUIDs and why are they useful
Универзално јединствени идентификатор (УУИД) је јединствени облик идентификатора који се може безбедно сматрати јединственим за већину практичних сврха. Шансе да два исправно генерисана УУИД-а буду иста су скоро занемарљиве, чак и ако су их креирале различите стране у два различита окружења. Због тога се каже да су УУИД-ови универзално јединствени.
У овом чланку ћемо погледати карактеристике УУИД-ова, како функционише њихова јединственост и сценарије у којима они могу да поједноставе идентификацију ресурса. Иако посматрамо УУИД-ове са опште тачке гледишта софтвера који је у интеракцији са записима базе података, они су широко применљиви на сваки случај употребе где је потребно децентрализовано генерисање јединственог ИД-а.
Шта је УУИД?
УУИД је само вредност коју безбедно можете сматрати јединственом. Ризик од судара је толико низак да можете изабрати да га потпуно игноришете. Можете се позивати на УУИД-ове користећи различите термине (ГУИД, или глобално јединствени идентификатор, је Мицрософтова преферирана семантика), али значење и ефекат остају исти.
Прави УУИД је јединствени идентификатор који се генерише и представља у стандардизованом формату. Важеће УУИД-ове дефинише РФЦ 4122; Ова спецификација описује алгоритме који се могу користити за генерисање УУИД-ова који чувају јединственост између имплементација без централног ауторитета за издавање.
РФЦ укључује пет различитих алгоритама од којих сваки користи другачији механизам за генерисање вредности. Ево кратког резимеа доступних „верзија“:
Иако се РФЦ односи на алгоритме као на верзије, то не значи да увек треба да користите верзију 5 јер је очигледно најновија. Коју да одаберете зависи од вашег случаја употребе; У многим сценаријима в4 се бира због његове насумичне природе. То га чини идеалним кандидатом за једноставне сценарије „дај ми нову пријаву“.
Алгоритам генерисања емитује 128-битни цели број без предзнака. Међутим, УУИД-ови се често третирају као хексадецимални стрингови и могу се чувати и као бинарни низ од 16 знакова. Ево примера УУИД стринга:
Вредности су представљене са пет група алфанумеричких знакова раздвојених цртицама. Цртице нису неопходна компонента стринга; Њихов изглед је последица историјског описа УУИД спецификације. Они чине идентификатор много лакшим за разумевање људског ока.
Случајеви употребе УУИД
-а Главни случај употребе УУИД-а је децентрализовано генерисање јединствених идентификатора. Можете генерисати УУИД било где и безбедно га третирати као јединствен, без обзира да ли долази из вашег позадинског кода, клијентског уређаја или вашег механизма базе података.
УУИД олакшава одређивање и одржавање идентитета објеката у неповезаном окружењу. Историјски гледано, већина апликација је користила ауто-инкрементовано целобројно поље као примарни кључ. Када креирате нови објекат, не можете знати његов ИД док се не убаци у базу података. УУИД вам омогућава да одредите идентитет веома рано у вашој апликацији.
Ево основне ПХП демонстрације која показује разлику. Хајде да прво погледамо систем заснован на целим бројевима:
Морамо да иницијализујемо својство $Ид са нулл јер не можемо знати његов прави ИД све док се не постави у базу података. Ово није идеално – $Ид заиста не би требало да буде нулл и омогућава да инстанце БлогПост постоје у некомплетном стању.
ИД-ови постова сада могу да се генеришу у апликацији без ризика од дуплирања вредности. Ово осигурава да инстанце објекта увек представљају важеће стање и да бескорисна својства нултог ИД-а нису потребна. Модел такође олакшава управљање трансакционом логиком; Подређени записи који захтевају референцу на свог родитеља (као што је наша асоцијација аутора поста) могу се одмах уметнути, без потребе да се враћате у базу података да бисте преузели ИД који је додељен родитељу.
У будућности, ваша блог апликација може пренети више логике клијенту. Можда фронтенд подржава прављење потпуних офлајн нацрта, чиме се креирају инстанце блогпоста које се привремено чувају на уређају корисника. Сада клијент може да генерише УУИД поста и да га проследи серверу када се мрежна веза поново успостави. Ако клијент накнадно добије копију нацрта са сервера, она би могла да одговара било ком преосталом локалном стању јер би УУИД већ био познат.
УУИД вам такође помаже да комбинујете податке из различитих извора. Спајање табела базе података и кеша помоћу целобројних кључева може бити заморно и подложно грешкама. УУИД-ови пружају јединственост не само унутар табела, већ и широм универзума. Ово их чини бољим кандидатима за структуре репликације и податке који се често преносе између различитих система складиштења.