Monday, November 14, 2005

Dark Ages...

Evidence that the dark ages for software development may be ahead.  At first I thought I was reading an April fools page (but unfortunately, it was November 1st, not April 1st).  I kept waiting for the “only kidding” part.  It never came.

Funny thing, the example he used to criticize with – saying “As is obvious from this real-life example, data integrity has absolutely nothing to do with the database” – shows how crucial data integrity in the database actually is (would you be upset if Visa lost some data along the way? I would be).  

Note to the author: when you start a sentence with “as is obvious” that typically means that it is not obvious – else it would be obvious and the need to state it would not exist.

It scares me to think about the number of developers that believe it is all about the application.  Erase my applications – but leave me my data!  Applications come, applications go – the data however persists for a long long time.

I need to stop catching up on blogs – ruined my day…


Anonymous Bob B said....

Yeah, that is a shocking little article. Based on what he's saying, I don't think he's ever used a quality database vendor or, if he has, he hasn't been trained by someone who knows how to use it. At its heart, every database is (trying) to implement exactly what he says his application is implementing. After all, the database is an application at its heart.

As for the point about two rows referencing the same thing but being unique due to a primary key ... that's the application programmer's mistake ... which is PRECISELY why we want to implement as many rules next to the storage of the data as possible.

Mon Nov 14, 01:24:00 PM EST  

Anonymous Mariano said....

Nevermind... seems there's a lot of folks following up and taking care of the drunken author of the blog.

Mon Nov 14, 02:24:00 PM EST  

Anonymous Gabe said....

It is not a lie if you believe it” [Seinfeld]

There is no reason to think AB, under the banner of Ethical Software, is being unethical … though, going through his system of Values (link on the right side), one cannot but wonder if his Greatest Need is, indeed, some Common Sense.

The inability to reason independently, especially when wrapped in all sort of well-groomed personality traits, is what seems to become more and more prevalent this days. “Dark Ages”? … I don’t think so; people were likely quite rational in those days, common sense is what made them survive. “Hollow Ages” is what is looming … no foundations, no reasoning, no content … just faith, [misplaced] trust and pixie dust, the “Never Land”.

I don’t even have a problem with the conclusion his trying to get at (that Data Integrity is a Myth) … OK, maybe he has had different experiences … I’m just looking at his “proof”. The article is just a collection of nonsense after nonsense ("data is like furniture") … and herein lays the actual problem … one cannot even begin to reason with them.

I believe Fabian Pascal is quite right in his analysis of where all this nonsense stems from.

Mon Nov 14, 02:31:00 PM EST  

Blogger Thomas Kyte said....

I used Dark Ages because I just read "Atlas Shrugged"... The dark ages in there were "faith based times".

I believe it to be a dark age though, not hollow. People *survived*. People did not *thrive*. It was a period of stagnation (followed by a nice renaissance).

Mon Nov 14, 02:36:00 PM EST  

Anonymous Mario Cariggi said....

Hi Tom,

So what is ethical software? ... , it may be viewed as being analogous to homeopathy).

Oh my God, I have inserted a specific rule on my firewall so that I will not read that blog even by mistake.

Mario from Rome, Europe

Mon Nov 14, 04:08:00 PM EST  

Anonymous Andrew said....

To me, that post reads somewhere between a rant by a designer who just got smeared up one wall and down the other for a poor (very) database and application design (or model) and that bar scene from Good Will Hunting, IIRC, where some college kid is trying to impress a girl with his economic theory and gets called out on how he is just quoting his latest class text and that he should get some original thoughts of his own.

Absolutely no thought, or evedency, or sound theory, whatsoever behind what he says.

Trouble is, in our world, if you say it long enough and loud enough, people begin to believe it is true.

Mon Nov 14, 04:23:00 PM EST  

Blogger Robert Vollman said....

Where do you find these developers? This reminds me of the nut-job who said you reach the point of mastery after 3 years and all software developers should be under 30.

Mon Nov 14, 07:17:00 PM EST  

Anonymous Anonymous said....

Well, I've been using of object-oriented software for years, and I am a big fan of OO (Smalltalk in particular). I don't get the point of the article. There is aplication logic, and then, there is persistence/data-mapping logic. Neither is trivial, and the techniques must be different. Good RDBMS allows one to isolate and to encapsulate the differences - and, horrors, to get the job done efficiently.

IMHO, the article suggests to replace a holy cow with a one-trick pony (like, my system is SO-OO). What do you think?

Mon Nov 14, 08:46:00 PM EST  

Blogger Thomas Kyte said....

my system is SO-OO

I like that, my system is "so"...

Yes, in discussions, we become polarized - totally to the left or to the right. Neither is 100% correct (or course). The answer is in the middle.

I've started to say "there is DATA logic" and "there is BUSINESS LOGIC (eg: workflow)".

data logic -> server, no if and or butts

business logic (eg: workflow) -> I'd probably like you to keep it out of the database, but up to you.

Mon Nov 14, 09:45:00 PM EST  

Blogger Noons said....

"Where do you find these developers? "

Didn't you know? In ANY shop that follows the ignorant lot that is Scott Ambler and his "amigos".
And the entire bunch of incompetents that pander the "agile" and other moronic "new black" development "theories".

Unfortunately, they STILL have the run of the shop in many places. Including Oracle.

I've been saying it for years now: get rid of this lot, they are TOTAL incompetents. The more I see of them, the more convinced I am of my initial perception.

Tue Nov 15, 12:52:00 AM EST  

Blogger Robert said....

bah worthless post that one - another example of a Net brainfart.

Tue Nov 15, 01:58:00 AM EST  

Blogger Robert said....

heh who knows...maybe by this time next year he'd be hooked on XE. I hope he meets the Guide Horse guy.

Tue Nov 15, 02:11:00 AM EST  

Blogger Howard J. Rogers said....

Yeah, with supporters of Natural Keys like that, I think we don't need enemies!


Tue Nov 15, 03:10:00 AM EST  

Anonymous Anonymous said....

I think opposite. There is lot of good work going on. AllegroCache is promising. We will start using it right away.

It's all in your self. Don't lose interest to develop things to better :)

Tue Nov 15, 03:59:00 AM EST  

Blogger plasticpony said....

Well, we are not yet in the "Dark Ages".
It seems that the article received proper comments...

It seems that it has been written only as a provocation... sure not to say something useful.

Poor wasted bytes...

Tue Nov 15, 04:27:00 AM EST  

Anonymous Ric said....

amongst all those statements in that article, i think the scariest one is :

"In summary, correctness, accuracy and consistency of the data cannot be enforced by the database"

If that's the case we might as well all pack up and go home - yikes!!


Tue Nov 15, 04:32:00 AM EST  

Blogger Connor McDonald said....

That mindset IS actually out there in the market...take this example from a real PRODUCTION system:

Name Null? Type
----------------------- -------- ----------------

This table stores ALL the foreign key data in the applcation (rather than any declarative stuff). For example, if (say) "Tom Kyte" had a relationship with "Expert 1-on-1", we would have a row in the table with

master_table = PEOPLE
mast_id = 123456 (the surrogate key from the people table for Tom Kyte)
child_table = BOOKS
child_id = 456789 (the surrogate key from the books table for Expert 1-on-1).
link_type = 789 (the surrogate key to the LINK_TYPE table where 789 = "author")

Somebody... please kill me

Tue Nov 15, 05:27:00 AM EST  

Anonymous Justin Rowles said....

Strange to read this today... I have just had a series of short discussions here.

First cut (last week): there's nothing wrong with embedding sql in java instead of using stored procedures.

Second cut (yesterday): maintaining this sql is too complex so we will switch entirely to Hibernate or similar.

I suggested using stored procedures, ref cursors, bound arrays for insertion of business objects and got told the code was 'too big' (my demo is 5 lines to write, 12 to read, not counting setting up the connection. The next justification was "I think you'll find the industry is moving towards Hibernate and the like". I gave up.

There is definitely a big problem with the perception of a database as a big ol' bit bucket that no coder should *need* to understand to make it work.


Tue Nov 15, 06:15:00 AM EST  

Blogger Thomas Kyte said....

It seems that it has been written only as a provocation..

I don't think so, I read some other postings and there is a "theme" there...

amongst all those statements in that article, i think the scariest one is

Yeah, I agree - time and time and TIME again, when I see integrity constraints implemented outside the database - it is done wrong (when the number of concurrent users exceeds 1)

That mindset IS actually out there in the market...

at least they used more than one table.... I like the systems with these tables:


there you go, you can store anything you want and never again have to be bothered with creating a table.

I have just had a series of short discussions here.

I can guess the third cut:

The database is slow.

Tue Nov 15, 07:02:00 AM EST  

Blogger Peter Lewis said....

Reading these comments gives me a real shudder of déjà vu... I feel sick now.

Tue Nov 15, 07:08:00 AM EST  

Anonymous Bob B said....

I think an overlooked advantage all the established databases (oracle, mysql, sqlserver, postgresql, etc) have is a HUGE user base. The database owner and the database owner's clients use the database. I'd venture to say that most people who use the internet have at least indirectly used one (or more) of Oracle, SQLServer, MySQL, and postgresql.

Even if the database vendor is somewhat slow on changes, they find the bugs quickly. Established databases are generally stable applications that you can depend on.

Another cool advantage, databases can alter their access paths based on metadata about the data. Not that all databases do that, but since SQL queries tell *what* data to get and not *how* to get it, the database vendor is free to dynamically optimize queries for best response time.

WV: mmggs

Tue Nov 15, 07:32:00 AM EST  

Blogger Bill S. said....

I didn't get past the second paragraph in that article. 5 years ago I would have said I was shocked that there was a large core of I/T people who believed that nonsense. Today, I'm merely surprised that this article didn't show up sooner. People like that shouldn't be let anywhere NEAR data of any importance. But that's just MY opinion. ;-D

Tue Nov 15, 09:08:00 AM EST  

Anonymous Anonymous said....

There is a really good book that I am reading called 'J2EE without EJBs' by a long time java guy named Rod Johnson. He says many of the same negative things you are saying about developers.

He makes one extremely interesting point. He says that it is better for a project to completely fail than for it to be just good enough to keep going. Projects that are just good enough cost a fortune and go on for years. They are not considered failures because they are still getting paid.

I recommend that book to anyone. Its not just for java guys.

Tue Nov 15, 09:42:00 AM EST  

Blogger Shuchi said....

The silver lining is that:

- Those who wrote comments on the article disagreed with the "radical" approach proposed by its author, and explained why

- The comments section did not degenerate into a flame war

Tue Nov 15, 09:46:00 AM EST  

Blogger Robert Vollman said....

Thanks Connor, your example brought tears of laughter to my eyes. That type of design takes me back to 1st-year comp sci and the sociology-bound students that just didn't get it.

Of course I can understand you wanting to beat the guy with the nearest Chris Date book, but you (presumably) have to deal with this guy and his code.

Tue Nov 15, 11:27:00 AM EST  

Anonymous Scot said....

This line of thinking is everywhrre:

Including the false notion that data integrity is the same thing as backup and recovery.

Tue Nov 15, 11:34:00 AM EST  

Anonymous Anonymous said....

Tom will you be posting a reply to that article trashing it anytime soon? I would love to read that. Although "Eric" did an excellent job.

Tue Nov 15, 01:43:00 PM EST  

Blogger Thomas Kyte said....

Tom will you be posting a reply to that article

Nope and the reason why is hidden in the third comment above, the one by Gabe... There is nothing to reason with in that article.

I just saw the link to it from Fabian's dbdebunk site and it ruined my day...

But then, I got to see that presenation that is the subject of todays entry "Something to aspire to" so it got better.

Tue Nov 15, 01:52:00 PM EST  

Anonymous Anonymous said....

Hey Tom,

The northern virginia java group is going to have a guy speak on Ruby on Rails(mentioned in the article you point to) on Thursday in case you want to see what all the fuss is about...

Tue Nov 15, 07:34:00 PM EST  

Anonymous Rob H said....

"data logic -> server, no if and or butts"

Well said. I had this discussion with developer the other day. He said "Which side, database or app, enforces the submitting of the phone number"

And I said "The database, period. The database says, you can only submit 10 digit numeric'. You format the column as the appropriate datatype and maybe setup some trigger or relation to area code, country code.

But he replied, "But that means the application will be the one telling the user the format, it may even clean the data to store in the appropriate format (strip characters, etc). The application is enforcing the integrity."

And I said, "Submit whatever you want, my database will only allow the appropriate data to go in, I'm the enforcer. Anything nonstandard will not be saved. I(the database) define the standards and enforce the integrity."

The problem is the giver/taker role of application/database. He thinks he's enforcing it because he's the connection between storage and user. The problem is, the database always has the veto (if properly designed) regardless of what the user or application want.

Wed Nov 16, 04:59:00 PM EST  

Anonymous Rahul said....

it is all about the application

I work on the database side of a system that has meticulous releases planned for the application i.e. for the front end only. There is no release control on the database side i.e. any developer can go in to the Production environment and change any data they want (not to mention stored procedures, triggers etc). But the front end code is released throught a stringent process.

I have had a tough time "explaining" to them that "data" is part of your application ... the part that will be toughest to recover (assuming it can be recovered at all).

Wed Nov 16, 07:14:00 PM EST  

Anonymous Herodt said....

Wow... I started out reading it happy it is Friday and developed a really bad mood as I finished it.

I think I just interviewed this guy.

Or someone coming from the same "schools".

Our company had a policy - no one hired without a computer related degree.


6 years of pure h e double hockey sticks of failed projects, unhappy clients and no bonuses.

Thankfully, the managers that imposed that were given the golden handshake and some of the replacements are much better and willing to actually pay attention to the apitude test results instead of "look at where he/she/it went to school"

I think portions of that post are going onto the test with a "What is right or wrong" type question.

But we all try to fight the good fight. I had a 2 hour "meeting" with a rather large payroll software provider trying to explain to their top developers why bind variables are a good thing.

Fri Nov 18, 09:36:00 PM EST  

Anonymous Anonymous said....

Hi tom,

how can i submit a question in site.

Please help me out by letting me know the procedure for doing so.

Tue Nov 22, 11:33:00 AM EST  


<< Home