Version 1 UUIDs only use a random number (16 bits) in the case of an 
uninitialized clock sequence (a case which, ideally, should only occur the 
first time a device generates a UUID). Version 1 UUIDs especially avoid using 
random numbers; they are also not a shortening of longer input. 

In short, version 1 UUIDs are not a PRNG scheme, nor are they the same as hash 
functions. 

I'm not a mathematician, and it's been a while since I've read the relevant 
RFC, but I believe collisions in a proper, strict implementation of V1 UUIDs 
are impossible by design until either a) the 60-bit timestamp overflows, or b) 
the MAC address namespace is exhausted. It's not a matter of probability, and 
it's only "a certainty" after the end of their design lifetime. 

Of course, UUIDs being of finite size, they will eventually be exhausted, and a 
single machine may only generate 65536 identifiers in a 100-nanosecond span of 
time. They will not, however, collide. 

On November 24, 2017 8:58:02 PM EST, Jean-Christophe Deschamps 
<j...@antichoc.net> wrote:
>
>At 23:49 24/11/2017, you wrote:
>
>>On 11/24/17 5:26 PM, Jean-Christophe Deschamps wrote:
>>
>>>At 22:38 24/11/2017, you wrote:
>>>>One proof of the falsehood of your assertion is that we CAN fill a 
>>>>database with some data using UIDs, and we will almost certainly not
>
>>>>get a collision, while you assertion we will.
>>
>>>This is an attempt at "proof by example". Keith is perfectly right 
>>>--mathematically speaking-- and your "proof" doesn't hold water, I 
>>>mean as a formal proof.  The best proof that your "proof" isn't a 
>>>proof is that you feel obliged  to add "almost certainly".
>>
>>DISproof by example is a perfectly valid method. If someone makes a 
>>claim that something is ALWAYS true, ONE counter example IS a 
>>disproof. I said almost certainly as the chance of a collision isn't 0
>
>>(to be able to say with certainty) but is most defintely less than the
>
>>100% claimed.
>
>You're confusing one mathematical theorem and one practical statement. 
>The first is the _mathematical_ fact that any PRNG (using any fixed 
>number of random bits, which is what xUIDs are) will provide an 
>infinite number of collisions with probability 1. This is definitely 
>true. Of course here, the number of samples is implicitely infinite.
>
>Your practical statement is that you can "most certainly" ignore the 
>possibility of collision when feeding 2^N xUIDs into a unique column 
>without loosing sleep. That's good enough in practice. The issue with 
>your "demonstration" is that 2^N is bounded, whatever finite N you 
>choose. Hence you don't contradict what Keith said, you just say 
>something different applying to restricted cases. You're speaking about
>
>practice, while Keith told about math. You're both right, each from his
>
>own point of view. But you can't claim to disproof a trivially true 
>theorem this way, by changing its premices.
>
>An event with probability 10^-100000...000 (any finite number of 
>zeroes) will occur at least once, provided you run enough tries. It'll 
>occur an infinite number of times if you run an infinite number of 
>tries. Else its probability would be zero.
>Your "disproof" amounts to say that 10^-100000...000 = 0
>
>And neither Keith nor I ever said that an xUID collision will occur 
>with probability 1 after 2^64 samples. That would be false and that's 
>why people feel free to use xUIDs _AND_ sleep quietly.
>
>JcD
>
>_______________________________________________
>sqlite-users mailing list
>sqlite-users@mailinglists.sqlite.org
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to