Friday, August 29, 2008

Rel: Beyond SQL and OOP

Don't get too excited yet! Rel is still in the early formative stages as a product. Currently it's only usable as a teaching aid. So, what is it? It's the first (only?) implementation of a relational database. Ignoring the ANSI SQL guidelines, which some scholars feel are inherently flawed, the project has as it's driving goal to implement relation theory in a software product.

I have to admire some of the design principles being followed by the development team. Things like
  • never optimize early - currently, the product is written in java to maximize platform breadth without killing the small team with multiple build environments. The plan is to port the project to C or some other low level language after it is complete to gain performance.
  • free and open source - need I say more.
  • rel is essentially a working prototype for the real product(s) that come after. It's the design spec for those products that actually works.
There are a couple of aspects of the language (Tutorial D) that I find interesting
  • there are no nulls - you can do this with sql products, but it can be very painful. You wind up with lots and lots of tables and joins
  • there is no autonumber feature - complete reliance on candidate keys.
  • attributes(columns) do not have a specific order. No commands rely on the position of an attribute in a relation (table)
  • there is no restriction on what may go into an attribute. You can define whatever types you need, although you may have to drop out into a different language to do that. Even other tables can be contained in an attribute of a tuple (row)
While it is certainly not ready for use as a product, even for small projects (there are no drivers that I'm aware of) it certainly is an interesting development and might point to the future of data storage many years down the road.

You can visit the Rel site here.


  1. Were you able to install on your Mac? If so, how? Looks like Rel requires Java 6, which is only available on 64-bit Macs.

  2. Yes, I've been running it on my mac, but I have a 64bit mac. It does require the Java update #2 from apple to get java 6 running. You also need to change your default jvm before it will work. The easiest way to do that is to launch the Java Preferences app located in /Applications/Utilities/Java