At 01:33 21/05/2015, you wrote: >HUIDs have the birthday problem. How many people do you need to have >in a group before two of them will have the same birthday? HUIDs can >only be called LUID's (Locally Unique Identifiers) if you go to the >trouble of ensuring uniqueness *before* using one. Validating Global >uniqueness is, quite obviously, a very difficult problem. > > > -----Original Message----- > > From: sqlite-users-bounces at mailinglists.sqlite.org > [mailto:sqlite-users- > > bounces at mailinglists.sqlite.org] On Behalf Of Jean-Christophe Deschamps > > Sent: Wednesday, 20 May, 2015 15:38 > > To: General Discussion of SQLite Database > > Subject: Re: [sqlite] AUTOINC vs. UUIDs > > > > At 23:24 20/05/2015, you wrote: > > > > >On Wed, May 20, 2015 at 2:20 PM, Steven M. McNeese > > ><steven.mcneese at freedomparkdfw.com> wrote: > > > > Often times people will use GUIDs as primary keys when different > > > systems need to generate > > > > rows and then merge together. Like an application that works with > > > offline clients that push the > > > > data to a server when the connect. However there are other ways of > > > accomplishing the same thing. > > > > > >For curiosity - Is there a site/blog post somewhere > > >enumerating/listing these other ways ? > > > > I don't know, but let's say your rowids range from -9223372036854775807 > > to 9223372036854775807, that's 18446744073709551614 possible rowids. > > > > Imagine that in 50 years, the total population on Earth will grow to > > (say) 50 billion people (I hope it won't!). > > > > 18 446 744 073 709 551 614 / 50 000 000 000 = 368 934 881.474 191 > 032 28 > > > > That leaves you the possibility to assign a unique identifier to every > > potential client on the planet (and a big one) in nearly 369 million > > servers concurrently without the faintest risk of collision. > > > > At this rate, you may limit rowids to only positive integers ... and > > hire a large army of telemarketers. > >
I didn't advocate for HUIDs, at all! My non-overlapping split range of rowids spread over N devices is provably immune to the birthday issue. This partitionning of rowids' range is equivalent (but simpler) to giving each device a globally unique prefix. And within a few years it's quite possible that the typical int will be _int128, allowing this scheme to market any item over the entire galaxy.