RE: Re: UUID vs. Sequential ID as Primary

  • From: "Clay Jackson" <dmarc-noreply@xxxxxxxxxxxxx> ("Clay.Jackson")
  • To: "ahmed.fikri@xxxxxxxxxxx" <ahmed.fikri@xxxxxxxxxxx>, "peter.m.gram@xxxxxxxxx" <peter.m.gram@xxxxxxxxx>
  • Date: Thu, 11 Apr 2024 17:18:42 +0000

I think MWF hit most of the high points, ESPECIALLY, “it depends” and  
“trusting” the generator of the UUIDs.

I’ve actually seen cases where “We THOUGHT the UUID was unique”; but data can 
persist for a LONG time, in many cases longer than whatever code or application 
generates the UUID.

Peter makes some good points about minimizing database round trips (SQL*NET 
Wait for Client, anyone?).  I would assert that the “best of both worlds” could 
be had by using a DATABASE sequence as the primary key; then storing the UUID 
as a separate, uniquely indexed field.   Storage and CPU are relatively 
inexpensive.

Clay Jackson
Database Solutions Sales Engineer
[cid:image001.jpg@01DA8BF9.9F3F8A30]<https://www.quest.com/solutions/database-performance-monitoring/>
clay.jackson@xxxxxxxxx<mailto:clay.jackson@xxxxxxxxx>
office  949-754-1203  mobile 425-802-9603

From: oracle-l-bounce@xxxxxxxxxxxxx <oracle-l-bounce@xxxxxxxxxxxxx> On Behalf 
Of ahmed.fikri@xxxxxxxxxxx
Sent: Thursday, April 11, 2024 7:35 AM
To: peter.m.gram@xxxxxxxxx
Cc: list, oracle <oracle-l@xxxxxxxxxxxxx>
Subject: AW: Re: UUID vs. Sequential ID as Primary

CAUTION: This email originated from outside of the organization. Do not follow 
guidance, click links, or open attachments unless you recognize the sender and 
know the content is safe.

Thanks for the hint, you’re right, one can use that. The problem is that when 
working with hibernate (or any other client lib) one doesn’t want to go to the 
database to fetch the IDs when creating an entry on the client side. While one 
does want to create the ID uniquely, it should be done with minimum visiting 
the database (using sequences has now been optimally solved e.g. hilo 
algorithm, not just for Oracle, but almost all other databases).

I’m interested in our experts have to say about this: is the trend of using 
UUID legitimate, or is using numbers better?

Gesendet mit der Telekom Mail 
App<http://www.t-online.de/service/redir/emailmobilapp_ios_smartphone_footerlink.htm>

-----Original-Nachricht-----
Von: Peter Gram <peter.m.gram@xxxxxxxxx<mailto:peter.m.gram@xxxxxxxxx>>
Betreff: Re: UUID vs. Sequential ID as Primary
Datum: 11.04.2024, 16:10 Uhr
An: <ahmed.fikri@xxxxxxxxxxx<mailto:ahmed.fikri@xxxxxxxxxxx>>
CC: list, oracle <oracle-l@xxxxxxxxxxxxx<mailto:oracle-l@xxxxxxxxxxxxx>>
Hi

If you use the returning clause on the first statement you don’t get a extra 
round trip to the database to get the sequence.

Med venlig hilsen

Peter Gram
Sæbyholmsvej 18
2500 Valby
Mobile: (+45) 5374 7107
Email: peter.m.gram@xxxxxxxxx<mailto:peter.m.gram@xxxxxxxxx>



On Wed, 10 Apr 2024 at 23.38, 
ahmed.fikri@xxxxxxxxxxx<mailto:ahmed.fikri@xxxxxxxxxxx> < 
ahmed.fikri@xxxxxxxxxxx<mailto:ahmed.fikri@xxxxxxxxxxx>> wrote:

Hi there,



Once more, a question about fundamentals:



In several Hibernate projects, I've observed developers leaning towards using 
UUIDs as primary keys instead of numerical values. This preference likely stems 
from the avoidance of sequences for numerical primary keys, which necessitate 
round trips to the database after each insertion. Additionally, there's a 
concern about potential contention with sequences, and some developers may 
prefer to avoid predictability in the next generated value. Personally, I 
remain skeptical about the widespread use of UUIDs due to their larger storage 
footprint (both in tables and indexes) compared to numerical IDs. Numeric IDs 
also offer benefits in issue analysis. However, it's worth noting that 
Hibernate employs algorithms to minimize round trips to the database, 
effectively reducing their impact. Could you please share your experience and 
preference? What choice would you make?



Regards

Ahmed


JPEG image

Other related posts: