Why use UUID instead of id as a primary key?

Why use UUID instead of id as a primary key

In any database, the id field is used to uniquely identify each record. The default behavior for most databases is to automatically generate a numeric id, starting at 1 and incrementing by 1 for each new record. However, there are other options for id fields, including using a UUID (universally unique identifier).

What is a UUID?

A UUID, or Universally Unique Identifier, is a 128-bit number used to uniquely identify items. Unlike an id, which can be repeated, a UUID is guaranteed to be unique. This makes it an ideal choice for a primary key.

To know more, why would you want to use a UUID as your primary key instead of a numeric id? Here are a few reasons:


1. Security:

If your database is publicly accessible, then using a numeric id makes it easy for someone to guess the ids of other records in the database. This could lead to someone being able to access sensitive information that they shouldn’t have access to. However, with a UUID, it is much more difficult (if not impossible) to guess the ids of other records.

2. Scalability:

If you are using a numeric id and your database becomes very large, then at some point, you will run out of ids to use. However, with a UUID, approximately 3.4 x 10^38 (or 340 undecillion) different values can be generated, so it is very unlikely that you will ever run out of ids.

3. Clustering:

If you are using a database that is spread across multiple servers (i.e. a clustered database), then using a numeric id can lead to problems. This is because each server will have its own range of ids, and if you try to insert a record from one server into another server, there is a risk of the id already existing on the second server. However, with a UUID, each server can generate its own random values, so there is no risk of duplication.

4. Portability:

If you need to migrate your database from one platform to another (e.g. from MySQL to PostgreSQL), then using a numeric id can cause problems. This is because the id values may not be compatible between the two platforms (e.g. MySQL uses signed integers while PostgreSQL uses bigints). However, since UUIDs are stored as strings, they will be portable between any platform.

5. Mergeability:

If you ever need to merge two databases together (for example, if you are combining two companies), then using numeric ids can lead to problems. This is because there is a risk of records with the same id from each database being merged together. However, with UUIDs, there is no risk of this happening because the chances of two records having the same UUID are very low.

There are a few drawbacks to using UUIDs as well:

1. Increased storage requirements:

UUIDs are typically longer than numeric ids, so they take up more space in the database. This can be a problem if you have a large number of records or if you are limited in storage space.

2. Increased processing requirements:

UUIDs are usually generated by algorithms, which can take some time to run. This can be a problem if you need to generate a large number of UUIDs in a short amount of time.

3. Generation:

In order to generate UUID, you need a source of randomness. This can be an issue if you are generating UUIDs on a server that doesn’t have a good source of randomness (e.g. /dev/random on Linux).


Overall, using a UUID as your primary key has more benefits than drawbacks. If you are looking for a more secure, scalable, and portable solution, then using a UUID is the way to go.

To Top

Pin It on Pinterest

Share This