Jaki jest algorytm generowaniu wartosci GUUID ?
Sowiecki Agent - 25-09-2007 00:10
Jaki jest algorytm generowaniu wartosci GUUID ?
WItam! Jaki jest algorytm generowania wartosci guuid? Czy jest zalezny od aktualnego czasu ( z sekundami) ? Chodzi mi konkretnie o MS sql server. Chcialbym zrobic export pewnej czesci rekordow i wlasnie z tymi wartosciami (ze wzgledu na liczne powiazania) a mam pewne obawy co do tego czy na dwoch roznych komputerach z mssql server nie wsytapia te same wartosci. Jak rozumiem server nie sprawdza przed wygeneroaniem nowego 'numeru' czy taki juz istnieje w jakimklwiek rekordzie? (za dlugo by to chyba trwalo).
Pozdrawiam
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Szymon - 25-09-2007 00:10
Sowiecki Agent pisze: > WItam! > Jaki jest algorytm generowania wartosci guuid? Czy jest zalezny od > aktualnego czasu ( z sekundami) ? Chodzi mi konkretnie o MS sql server. > Chcialbym zrobic export pewnej czesci rekordow i wlasnie z tymi wartosciami > (ze wzgledu na liczne powiazania) a mam pewne obawy co do tego czy na dwoch > roznych komputerach z mssql server nie wsytapia te same wartosci. > Jak rozumiem server nie sprawdza przed wygeneroaniem nowego 'numeru' czy taki > juz istnieje w jakimklwiek rekordzie? (za dlugo by to chyba trwalo). > > Pozdrawiam >
GUUID jest takim pseudolosowym ciągiem, który może się powtarzać. Jest sobie RFC 4122 w którym opisano UUID, z tego co pamiętam to GUID jest tylko innym sposobem na to samo, tylko lepszym, bo opracowanym przez M$ :). Teoretycznie możesz mieć sytuację w której powtórzy Ci się ten sam GUID/UUID na różnych maszynach, więc weź to pod uwagę jak będziesz to używać, bo wcale nie jest tak jak większość uważa, że UUID jest unikalny.
wloochacz - 25-09-2007 00:10
> WItam! > Jaki jest algorytm generowania wartosci guuid? Czy jest zalezny od > aktualnego czasu ( z sekundami) ? Tak; http://pl.wikipedia.org/wiki/GUID
> Chodzi mi konkretnie o MS sql server. > Chcialbym zrobic export pewnej czesci rekordow i wlasnie z tymi wartosciami > (ze wzgledu na liczne powiazania) a mam pewne obawy co do tego czy na dwoch > roznych komputerach z mssql server nie wsytapia te same wartosci. > Jak rozumiem server nie sprawdza przed wygeneroaniem nowego 'numeru' czy taki > juz istnieje w jakimklwiek rekordzie? (za dlugo by to chyba trwalo). Sprawdzenie to sobie sam musisz zrobić, ale te wartości "raczej" na pewno nie powinny się powtórzyć. Przynajmniej ja się z czymś takim nie spotkałem.
-- wloochacz
Szymon - 25-09-2007 00:10
wloochacz pisze: >> WItam! >> Jaki jest algorytm generowania wartosci guuid? Czy jest zalezny od >> aktualnego czasu ( z sekundami) ? > Tak; > http://pl.wikipedia.org/wiki/GUID > >> Chodzi mi konkretnie o MS sql server. >> Chcialbym zrobic export pewnej czesci rekordow i wlasnie z tymi >> wartosciami >> (ze wzgledu na liczne powiazania) a mam pewne obawy co do tego czy na >> dwoch >> roznych komputerach z mssql server nie wsytapia te same wartosci. >> Jak rozumiem server nie sprawdza przed wygeneroaniem nowego 'numeru' >> czy taki >> juz istnieje w jakimklwiek rekordzie? (za dlugo by to chyba trwalo). > Sprawdzenie to sobie sam musisz zrobić, ale te wartości "raczej" na > pewno nie powinny się powtórzyć. Przynajmniej ja się z czymś takim nie > spotkałem. >
Mnie najbardziej rozwala jak np. w systemie bankowym potrafili zrobić UUIDy jako indentyfikatory obiektów, bo to przecież "raczej" się nie powtórzy. Równie dobrze mogli robić md5(aktualny czas) i też "raczej" się nie powtórzy. Gorzej jak się powtórzy, a zarówno md5 jak i UUID mogą się powtórzyć, nawet muszą, bo jest tam ograniczona liczba bajtów, poza tym sam sposób generowania UUIDa wcale nie zabezpiecza przed takimi powtórkami.
=?ISO-8859-2?Q?Artur_Muszy=F1ski?= - 25-09-2007 00:10
Szymon pisze: > Mnie najbardziej rozwala jak np. w systemie bankowym potrafili zrobić > UUIDy jako indentyfikatory obiektów, bo to przecież "raczej" się nie > powtórzy. Równie dobrze mogli robić md5(aktualny czas) i też "raczej" > się nie powtórzy. Gorzej jak się powtórzy, a zarówno md5 jak i UUID mogą > się powtórzyć, nawet muszą, bo jest tam ograniczona liczba bajtów, poza > tym sam sposób generowania UUIDa wcale nie zabezpiecza przed takimi > powtórkami.
Mieszasz. Nazwa wskazuje, że ten identyfikator ma być globalnie niepowtarzalny i algorytm powinien robić wszystko, żeby to było prawdą. Statystycznie rzecz biorąc tak właśnie jest. Znacznie bardziej prawdopodobne jest, że na ten twój bank spadnie meteoryt rozwalając wszystkie serwery niż to, że doświadczysz kiedykolwiek tego problemu. Nt MD5 się nie wypowiadam, bo ten algorytm ma służyć zupełnie innym celom.
artur
wloochacz - 25-09-2007 00:10
[ciach] > Mnie najbardziej rozwala jak np. w systemie bankowym potrafili zrobić > UUIDy jako indentyfikatory obiektów, bo to przecież "raczej" się nie > powtórzy. Równie dobrze mogli robić md5(aktualny czas) i też "raczej" > się nie powtórzy. Nie; GUID/UUID ma "trochę" bardziej wysublimowany algorytm generowania jak MDpiątka z daty_i_czasu....
> Gorzej jak się powtórzy, a zarówno md5 jak i UUID mogą > się powtórzyć, nawet muszą, bo jest tam ograniczona liczba bajtów, poza > tym sam sposób generowania UUIDa wcale nie zabezpiecza przed takimi > powtórkami. Teoretycznie, może się powtórzyć. Teoretycznie szóstka w totka też jest możliwa, a nawet niektórym się udało trafić. Mi niestety się nie udało trafić szóstki ani powtórzyć GUID'a ;-)
-- wloochacz
Szymon - 25-09-2007 00:10
Artur Muszyński pisze: > Szymon pisze: >> Mnie najbardziej rozwala jak np. w systemie bankowym potrafili zrobić >> UUIDy jako indentyfikatory obiektów, bo to przecież "raczej" się nie >> powtórzy. Równie dobrze mogli robić md5(aktualny czas) i też "raczej" >> się nie powtórzy. Gorzej jak się powtórzy, a zarówno md5 jak i UUID mogą >> się powtórzyć, nawet muszą, bo jest tam ograniczona liczba bajtów, poza >> tym sam sposób generowania UUIDa wcale nie zabezpiecza przed takimi >> powtórkami. > > Mieszasz. Nazwa wskazuje, że ten identyfikator ma być globalnie > niepowtarzalny i algorytm powinien robić wszystko, żeby to było prawdą. > Statystycznie rzecz biorąc tak właśnie jest. Znacznie bardziej > prawdopodobne jest, że na ten twój bank spadnie meteoryt rozwalając > wszystkie serwery niż to, że doświadczysz kiedykolwiek tego problemu.
Niezupełnie tak jest. Algorytm przewiduje, że nie potrzebuje centralnego systemu przydzielania numerów a mimo to będzie generował unikalne numery, a to jest g*** prawda. Poczytaj to RFC to się przekonasz. Algorytm bazuje na generowaniu numeru na podstawie czasu, kilku losowych pierdół i adresu MAC, który można zmienić, albo komputer może go nie mieć. Jak go nie ma, to RFC zaleca zakupienie sobie puli adresów za $50. Czyli masz centralny system przydzielania guidów/uuidów, więc to, że on będzie unikalny przy jednoczesnym generowaniu na wielu komputerach można sobie między bajki wsadzić. Mi się kiedyś zdarzyło, że firma w której pracowałem kupiła jakieś biblioteki w postaci obiektów COM, które mają swoje GUIDy. Te obiekty się zarejestrowały, a potem mój interfejs przypadkiem dostał taki sam numer GUID jak jeden z tych obiektów i było wesoło. Powtarzalność tych numerów to nie jest problem. Problemem jest oprogramowanie i programiści, którym się wydaje, że te numery nigdy się nie powtórzą, bo nie i już i nie przewidują takiej możliwości w swoim oprogramowaniu, a gdy te numery się powtórzą to wtedy zaczyna się robić problem. Adresy MAC też nie powinny się powtarzać, a widziałem karty sieciowe z takimi samymi adresami i bez możliwości ich zmiany i sieć miała problemy. Takie same problemy może mieć każdy system informatyczny w którym bezgranicznie wierzy się w to, że numery uuid się nie powtarzają i są unikalne.
=?ISO-8859-2?Q?Artur_Muszy=F1ski?= - 26-09-2007 00:05
Szymon pisze: > Mi się kiedyś zdarzyło, że firma w której pracowałem kupiła jakieś > biblioteki w postaci obiektów COM, które mają swoje GUIDy. Te obiekty > się zarejestrowały, a potem mój interfejs przypadkiem dostał taki sam > numer GUID jak jeden z tych obiektów i było wesoło.
Access konwertował INT na GUID po najmniejszej linii oporu uzupełniając zerami. GUID'y przydzielane dla COM też nie zawsze są zupełnie przypadkowe. Algortymy (nie ma jednego, każda implementacja robi to ciut inaczej) też pozostawiają wątpliwości. Nie mniej GUID w przypadku opisanym przez pytającego należy traktować jako wartość unikalną i najwyżej (ze znikomo małym prawdopodobieństwem) import spowoduje naruszenie więzów integralności i wtedy będzie się martwił, co dalej robić.
artur
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
=?iso-8859-2?Q?W_jaki_spos=F3b_utworzy=E6_plik_accessa_nie_po siadaj=B1c_M?==?iso-8859-2?Q?S_Accessa=3F?=
Prezentacja =?ISO-8859-2?Q?zdj=EA=E6_z_w=B3=B1czeniem/wy=B3a?==?ISO-8859-2?Q?czeniem_-_jaki_program_polecacie_do_tego_?=
MySQL + UTF8 + PL znaki - jest =?ISO-8859-2?Q?jaki=B6_logiczny?==?ISO-8859-2?Q?_spos=F3b_=3F?=
[MySQL] Jaki typ pola aby =?ISO-8859-2?Q?trzyma=E6_liczby_od?==?ISO-8859-2?Q?dzielone_przecinkiem_=3F?=
jaki =?ISO-8859-2?Q?sprz=EAt_do_Sony_Vegas_i_DVD_Arc?==?ISO-8859-2?Q?hitect=3F?=
[Oracle] W jaki sposób skopiować całą zawartość schemy jednego użytkownika do nowo utworzonego użytkownika?
Zwracanie wartości, z funkcji, w funkcji [Js, Ajax]
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
Insert do tabeli z danych innej tabeli plus dodatkowa wartośćpola (Firebird)
Najlepszy klient (windows) do ręcznego podgladania baz danychwykonywania query itp - jaki
zanotowane.pldoc.pisz.plpdf.pisz.plautwywalczyl.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|