Wpis z mikrobloga

#programowanie #java

Co myślicie o UUID? Wiem, że to pseudolosowa wartość, ale czy realna jest kolizja tych identyfikatorów? Brać w ogóle taki przypadek pod uwagę przy np 1 mln rekordów?

Ewentualnie co byście polecili do generowania unikalnych identyfikatorów? Chodzi o architekturę server - wielu klientów, którzy generują obiekty offline.
  • 10
  • Odpowiedz
@siemanko:
https://en.wikipedia.org/wiki/Universally_unique_identifier#Random_UUID_probability_of_duplicates

To put these numbers into perspective, the annual risk of a given person being hit by a meteorite is estimated to be one chance in 17 billion,[5] which means the probability is about 0.00000000006 (6 × 10−11), equivalent to the odds of creating a few tens of trillions of UUIDs in a year and having one duplicate. In other words, only after generating 1 billion UUIDs every second for
  • Odpowiedz
@siemanko: Korzystamy przy skali 30M+ dziennie. Mamy opisany przypadek kolizji i monitorujemy - nigdy nie wystąpił. Jedyne co robimy to klasyfikacja każdego klucza pod względem shardowania dziennego, dzięki czemu zwiększamy pule.
  • Odpowiedz
@siemanko: Tak swoją drogą, kolizja z szansą na to 1 do dużo, może się zdarzyć nawet jutro ;) tylko na to jest małe prawdopodobieństwo.

Ogólnie nie powinieneś się tym przejmować, chyba, że
koszt potencjalnych strat w przypadku kolizji * prawdopodobieńśtwo > koszt pilnowania i zaimplementowania kolizji
Patrząc na prawdopodobieństwo, najpewniej, ta nierówność ta nigdy nie zostanie spełniona ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@siemanko: Dodajemy do klucza identyfikator na którym serwerze znajdują się jego dane oraz w której strukturze. Poczytaj sobie docksy cassandry, sporo ciekawych informacji o shardowaniu kluczy pomiędzy elementami klastra jest opisanych.
  • Odpowiedz