My friend Gabrielle (one of many reasons to miss Portland, Oregon), just turned me on to two open source attempts to build relational databases!
Commonly used databases such as MySQL, Oracle, et al, are not relational (in the sense originally intended by Codd and Date), even though they're mistakenly referred to as such. These two databases aspire to really be relational databases and therefore do not use SQL. Sounds like something to play with.
In your opinion, why haven't there been any successful implementations of a true relational database? ("Successful" defined as "different projects using it to get things done", whether for fun or profit.) Is it too hard to implement? Too academic? Just unproven for enterprisey use?
This is an honest question, no axes to grind. I know next to nothing about these types of databases, and many people whose database chops I respect have brought them up from time to time, particularly when frustrated by a current system
Re:why none yet?
Ovid on 2007-10-08T08:15:34
You've probably heard the old saying "if you're so smart, why ain't you rich?" People generally mean something like that when they ask your question, so I confess it was with a sense of relief when I read the motivations for it
:) The following thoughts I've gleaned from Wikipedia, books (including one I've left in the US and desperately wish I had) and various Web pages.
Before Codd created the relational model, databases were hierarchical or just ad hoc affairs. Codd, tired of how bad databases were, used set theory to come up with the relational model. When IBM finally got around to trying to implement it, their team had no contact with Codd and didn't fully understand his work. However, what they produced enough was close enough to the relational model and sufficiently powerful that Larry Ellison borrowed these ideas for the then unknown "Oracle" database.
The interesting thing is that this was done in the late 70s, early 80s. Back then there was plenty of disagreement about what constituted a database, much less a query language. There were several query languages available, but with Oracle and DB2 both implementing SQL, other vendors rushed to join them, effectively locking out other query languages. Since SQL is rather clumsy (why does every command have a different syntax?) and non-relational, this has more or less prohibited a relational database from being developed.
What compounds the problem is that vanishingly few developers know databases. Those that do know SQL but they frequently know nothing about normalization. Those who know normalization often just regard it as an academic exercise. As a result, we have developers thinking they know databases when in fact they don't know them at all. I constantly find myself fixing database related bugs because databases are frequently used as glorified flat files.
So what does that really have to do with anything? One book I read, written by a someone who teaches database design, lamented that his worst students were those who already knew SQL because they think they know everything. I just picked up a database refactoring book and it expressed similar sentiments regarding the "antagonistic" relationship between database people and programmers. When the programmers and database people are all arguing about whether Oracle, PostgreSQL, MySQL, etc., is better but are convinced those are "proper" databases, how can a relational database gain traction?
In short, it's a mixture of historical reasons and personal prejudices which have led to no relational databases being widely used.
As a side note: I consider myself an absolute newbie on these topics. I've worked like mad to understand them, but much of what makes it hard is the amount of venom frequently expressed by people who insist that Codd's work is irrelevant and SQL is enough.
Re:why none yet?
lachoy on 2007-10-08T14:16:58
Thanks for the summary, very useful. Something else to keep on the stack for further research.
refactoring book?
gabrielle on 2007-10-08T15:30:59
I just picked up a database refactoring book
and...? is it any good? What's the title?Re:refactoring book?
Ovid on 2007-10-08T15:38:57
Refactoring Databases: Evolutionary Database Design. I haven't had a chance to do more than skim it so far, but it looks pretty good.