cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gentry, Michael \(Contractor\)" <michael_gen...@fanniemae.com>
Subject RE: Generating primary key locally without extra tables
Date Wed, 21 Jun 2006 13:09:39 GMT
I actually looked into making a PK generator that required no DB access, but when I looked
into it, Java didn't support everything I wanted without resorting to JNI and C code.  Of
course, I was more ambitious in what I was thinking.  I wanted it to be similar to what I
could do in EOF (hundreds of keys/sec).

Does anyone here know if Java 1.5 supports obtaining the process ID natively?  I think that
was my stumbling point before.  I was trying to make a key that contained server IP, process
ID, timestamp, and counter.  Maybe it is time to consider this again.  If I could produce
a unique string all the time like that, it would make a nice PK generator and your PKs would
have some meaning (that is me with my production support hat on).

As to your questions ...

A) My gut feeling tells me that wouldn't be a good idea.
B) You could do that, but it seems pretty problematic to me.

Maybe some others will have a few good ideas ...

/dev/mrg



-----Original Message-----
From: oyvindharboe@gmail.com [mailto:oyvindharboe@gmail.com] On Behalf Of Øyvind Harboe
Sent: Wednesday, June 21, 2006 2:18 AM
To: cayenne-user@incubator.apache.org
Subject: Generating primary key locally without extra tables


Problem:

I'm using Cayenne for projects where I can't modify the database
schema on the server.

These databases use server generated primary keys. MSAccess, MS SQL
Server and Oracle.

The number of new records created are very small(max 1/minute), so I'm
rather insensitive to performance of record creation.

Q: Does a strategy for generating keys locally exist?

This strategy should work across databases where Cayenne does not
support server generated primary keys.

Getting a primary key by e.g.:

SELECT MAX(ID)+1 FROM FOO

This would a) be slow b) risk a collision when inserting.

Qs:

a) can I always override a server generated key?
b) would it be sufficient to use exception handling and retry e.g. N times?



-- 
Øyvind Harboe
http://www.zylin.com

Mime
View raw message