Saturday, September 20, 2014

Fark thread about Oracle

It was actually on the news of Larry Ellison stepping down, but the comments included some technical, uh, opinions. I could not comment myself, because apparently they close threads to comments very quickly.

But get a load of this:

Poster 1:
I wouldn't have deleted the record.  I would have done something more like:

UPDATE tblOracleEmployees set ActiveEmp=0 WHERE strName = 'Larry Ellison' AND strJobTitle = 'CEO'

Seriously...  You don't delete records.  That destroys all relational joins.  And you will need to have those records on hand.

//Yes.  I'm a data analyst.

Poster 2 (in reply to Poster 1):

Actually joining data tables at runtime ... what a quaint little database.  I can't imagine adopting Oracle to store something considered Big Data these days.  To make it work you're not allowed to ever run a join or use 99% of the features that make up SQL.  Might as well just bite the bullet and use HDFS ... save some money anyway.  And if you don't require that scale ... well then why not use something cheaper than Oracle?  Their days have got to be numbered.

What I was going to post (but again, couldn't, because Fark closes comments quickly these days):
Nothing wrong with joining - relational databases were born to join. If the extra I/O really impedes your performance that much (I find this is usually overstated), Oracle has a lot of options to look at, I would probably physically colocate commonly joined data using table clustering. Another option might be materialized views, if the data is read much more than it is updated (although lately, i.e. as of 11g, Oracle’s query caching is pretty much “just in time materialized views”).  
What’s really bothering me is the use of names like tblOracleEmployees - 
this is looking like a Java naming convention and this is not Java - Oracle will ignore all the caps anyway, unless you surround the identifier in quotes, so that becomes TBLORACLEEMPLOYEES and that’s not a good practice. I don’t like prefixes like “tbl”, especially since tables are kind of the default object, but that's just my personal opinion. But if you do like it, typical convention is to use underscores. Whatever you decide please please don't use the quotes to make it "tblOracleEmployees" - as that will require every query from here till eternity to match your caps and surround the identifier in quotes.
Can you imagine? Joining data is soooo lame. I've actually encountered this opinions at jobs - developer using bad designs because they heard joins were slow. I fix the designs, joins work, everyone and everything is happy - ta da.