Oracle FAQ Your Portal to the Oracle Knowledge Grid

Home -> Community -> Usenet -> c.d.o.server -> Re: Article about supposed "murky" future for Oracle

Re: Article about supposed "murky" future for Oracle

From: Noons <>
Date: Wed, 31 Mar 2004 22:00:57 +1000
Message-ID: <406ab360$0$15064$>

"Serge Rielau" <> wrote in message news:c4cso4$hqu$

> There is no such thing as a free lunch. The versioning comes at a cost
> too. Pushing a version and managing the rollback segments is not for free.
> Neither is finding the appropriate version for each row.
> The concept works well if the stack is fairly small.

You know Serge, every once in a while you folks at IBM sit down and follow the motto of your company: "think". I'll say no more as Mr. Ellison might beat me around a few times (even though he's got nothing to do with me) if I opened my mouth on this one...

> You can look at it from another angle:
> If I need to look at a row and it is currently being updated. How do I
> gamble? If I presume the update will commit then looking at old data
> will result in a decision being made on stale data. That can be bad.
> On the flip side, I can read uncommited data in most RDBMS and go wrong
> when the transaction on which's success I depend rolls back.
> I wouldn't want to state one isolation level is better than the other.

Serge, Serge, Serge..... Here we go again into marketing mode. You were doing so well, darn it! You folks have to start reading your own materials and prior literature on this problem, its nothing new. But insisting on hiding the thing just because DB2 can't provide the feature is IMHO silly in the extreme.
Read some of the materials about databases and locking that IBM put out ages ago,
in the dinossaur times.

Sorry, all patronising childish crap aside: let's step back into technical reality for a second. The problem has got NOTHING to do with uncomitted data, serialisation, yadda yadda. That is all marketing crap from the rubbish people call modern IT and "OODB"/multi-tier/crap.

The problem is VERY simple, it was stated ages ago and NOTHING has changed in what is fundamentally a queueing theory problem:

You must NOT, EVER!!!!! read uncomitted data ****IF**** you are planning to change it in the same transaction.

In simple words: if you plan to change a set of data, you LOCK it WHEN you read it!

Simple. Common to EVERY single database that purports to have a locking mechanism and concurrent multi-user access. Please: let's not waste time arguing this. It is obvious, has been worked out ages ago and has NOTHING to do with Oracle's versioning, "serialising" or whatever else crap.

Now, ****IF**** you want to CONCURRENTLY (with your updates) read ****CONSISTENT**** sets of data (as in producing reports or running long queries), then you MUST have some mechanism to ensure those sets of data are consistent from the point in time you START reading them, to the point in time you finish reading them. Set at a time.

Otherwise, it is only too easy for another transaction's update to CHANGE data you haven't yet read and all Hell breaks loose.

It's in ALL the classic texts, you should know this already: I hate to have to talk to granny about sucking eggs!

Two ways you can achieve this Holy Grail: with writers blocking readers, or with versioning. It's all about which one is easier to use from the point of view of the poor blighters writing the application code.

I know which one I'd choose. PARTICULARLY when the database locks on blocks (pages) rather than true row locking. But we don't need to go there right now.

> The only truly safe isolation level is serializable (which matches
> Repeatable Read in DB2 I think) any other isolation level has drawbacks
> that the app has to be aware of.

No. Incorrect. And completely ignoring the reality of data processing. Versioning has NOTHING to do with isolation levels and it solves the problem in a TRANSPARENT fashion.

> PS: I always thought WallStreet was/is a Sybase Stronghold obviously
> Banks could live with what Sybase has to offer.

Banks will live with whatever is cheaper. Period.

Nuno Souto
Received on Wed Mar 31 2004 - 06:00:57 CST

Original text of this message