GUIDs part 1: What the GUID?
•Posts in this series
- GUIDs part 1: What the GUID? (This post)
- GUIDs part 2: GUID as gold
- GUIDs Part 3: GUID one
Most developers have seen a GUID or two. A GUID (Globally Unique Identifier) is used extensively in computing to uniquely identify all sorts of things. You might also see them referred to as UUIDs - don’t worry they’re the same thing.
This specification defines a Uniform Resource Name namespace for
UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally
Unique IDentifier).
– RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace
But why are they so pervasive? What about auto-incrementing numbers? Why do they look so ugly?? I asked myself the same questions and ended up learning a lot about the humble GUID - they really are quite cool.
A GUID introduction
I have a dog, his name is Snowy. Sometimes I take my dog to doggy daycare. When I pick up my dog I ask for Snowy. But what if someone else’s dog is also called Snowy? The name was supposed to uniquely identify my dog - how do they identify which dog is mine?
Although not a major issue the problem of unique identification in dogs is already solved through micro-chipping. The local council maintains a registry to ensure uniqueness - if there really was confusion you could always scan the dog - look up its unique identifier and discover the owner.
At first glance this type of system seems like it does the job, why do we need GUIDs?
Well, what if I wanted to make my own dog-chips? Nothing in the specification ensures global uniqueness if everyone started creating their own chips. The chip number consists of a country code, 38 ID bits and a few other things. How do I make sure I don’t choose the same country code and 38 bits as someone else? Well I can’t the central repository (national dog database) ensures uniqueness, not the standard.
GUIDs don’t have this problem, uniqueness is baked into the standard. There is no requirement for a central authority to ensure uniqueness; GUIDs are 128-bit numbers generated in a particular way that allows you to create an identifier which you can be certain that no one else in the world will ever generate (assuming they also follow the standard - it doesn’t prevent someone maliciously generating a duplicate GUID just to mess with you).
Amazing right? Am I right? Over the next few installments in this series we’ll take a look at how GUIDs ensure uniqueness without a central repository.