Just say no to SQL?
Posted by jt - 19/05/10 at 07:05 amRecently, I’ve taken some interest in the NoSQL debate. The talking bit-heads on the internet have already weighed in on the pro’s and con’s of each. As some have pointed out, it does feel more natural when you are programming to a domain model rather than a relational model.
This is something I have found true with developing in Grails. I can create/modify domain objects all day long, with little concern about the database. By wrapping up mature Java tools from Hibernate and Spring with a little Groovy goodness, its rare I need to be bothered with SQL. Everything happens auto-magically. I have no direct contact with the DDL required to generate the relational model. While I am very skilled with SQL, mucking around with the database is part of the development process I really don’t miss.
Yesterday, I started some debate with my fellow bit-heads. Oraclenerd, faithful to the cause, was predictable. “You gotta try Exadata.” Why? So I can keep supporting god’s, err, I mean Larry Ellision’s life style? Bob, Mr Strongly Typed, also was predictable. XMLDB. Which, I’ve played with. While the XML tools and databases are very cool, they are also a pain in the ass. Are you just trading evils? DDL for XML Schema? SQL for XPath/XSLT? I’m sure I’ll stir the pot with this one.
Much the the debate around NoSQL has been around the massive scalability achieved by the Internet giants. This type of scalability is of little value to the average application. But the cloud computing paradigm does bring value. Computational resources are becoming a commodity.
If I’m developing an application, either for the enterprise or in a SaaS type model, I want a reliable and scalable persistence solution. I can spend hundreds of thousands with Oracle for an 11g RAC cluster. Sell my soul to Microsoft for a SQLServer cluster. Either of which will address my concerns for reliability and scalability. Or I can look to cloud persistence solutions from vendors such as Google and Amazon.
I’ve been developing an open source enterprise application. It is written in Grails. Via Hibernate, the application is database agnostic. Someday, I would like to offer the application as a service. If I stay with the traditional RDBMS, I still have a single point of failure. But if I re-tool and use either Big Table or Simple DB, I can fully leverage the cloud computing paradigm. It becomes easy to offer SaaS in a pay as you play type pricing model.
Many look at Grails for its integration with Hibernate. But its much more than that. Grails is a mature web development framework. At work, I just stood up Grails on top of a JBoss EJB application and still found a lot of value in the Grails framework. No Hibernate, but still found plenty of value in Groovy, Spring, and the robust plugin system of Grails. Maybe its time to experiment with Grails and Simple DB?
A bunch of random technology stuff that has my attention. I work with a lot of Oracle, Java, and dabble with various open source software packages.