NoSQL is a good idea with a bad name. You wouldn’t put on your NoJeans to drive to work in your NoFord. But put away the crappy label for a minute and check out what the NoSQL movement has going for it, because they’ve got some good points.
In the Microsoft Certified Master training, I’ve been stunned to learn some of the things that go on under the covers of SQL Server. The good thing is that MSSQL offers a ton of functionality few of us actually use, but the drawback is that there’s a lot of overengineered plumbing.
I train database administrators around the world, and if there’s one thing I see over and over, it’s that people just don’t use the features built into the product. They’re not using the built-in index tools that can make their servers faster. They’re not checking fragmentation. Hell, half the time they’re not even checking data integrity or doing backups.
So it occurred to me – maybe these DBAs aren’t on something – they’re onto something.
Traditional relational database management systems like Microsoft SQL Server have inherent weaknesses that prevent them from scaling to handle real load. All these features they’ve built in over the years have added up to real overhead. During several sessions, I heard phrases like “just adds 2% overhead” and “only uses 1-2% CPU.” Add up all these features, and it’s clear: SQL Server 2008 is the Windows Vista of databases. It’s a miracle queries ever complete.
And I’ve had enough.
NoSQL databases don’t have transactions, but frankly, that’s fine. You know what kind of transactions I want? Cash transactions. I want a brand new house on an episode of Cribs and a bathroom I can play baseball in. I can’t get there working with SQL Server because none of the cool new startups are using it.
I’m tired of working for suit-and-tie companies that tout their long histories and big balance sheets. I wanna roam the halls of companies like Digg, Reddit, and Twitter – companies chock full of venture capital. Those guys are all distracted by how the database software is free, and they haven’t thought through the process of hiring good DBAs for a database platform that got compiled last Thursday. Presto, I can charge ginormous fees.
After doing a lot of research, I’ve settled on Cassandra, the NoSQL database created by Facebook. It does have some weaknesses – for example, you can’t add tables without restarting – but I think that’s an advantage. I won’t have to do nearly as many schema deployments if the developers know the servers will have to get restarted, and that means less work for me.
Most NoSQL databases have what’s called eventual consistency – sooner or later, all of the nodes will catch up and have the same data. I’m fine with that. What’s the rush? The inserts, updates, and deletes will probably be caught up before these guys even have a business plan. DBAs have such a big issue with integrity, but I work for a software vendor, remember? I sold my integrity already.
I, for one, welcome our new Database 2.0 overlords. Or 4.1. Whatever.
Update 4/2: since you’re reading this late, you should probably be aware that it was originally published on April 1. You may also be interested in my post from 4/1/2009 about becoming a Natural Keyboard MVP.
16 Comments. Leave new
“Or 4.1. Whatever.” Clever! you almost had me convinced you were about to convert out of extreme pressure during MCM 😛
I think you forgot to tag this as April Fool.
I like making my readers think first. 😉
Got me again, I got halfway through before the penny dropped.
I put my NoJeans on and got in my NoFord to come to work this morning and deal with a problem that happened not to be my database’s fault but a developers… I think we should just let the developers be the dba. I think they would do a good job.
I’m going to put all my databases into MySQL ACID compatibility mode:
Committed data may or may not be written after a crash, depending on among other things, the current phase of the moon, the color of electrons and the weather conditions in Oz.
Read up on the new APDB. Another approach to NoSQL: http://thedailywtf.com/Articles/Announcing-APDB-The-Worlds-Fastest-Database.aspx
Nice semi-educational knocks. Even though it is AFD I did learn something about the newest wave of SQL. Enjoy the training.
Almost got me until I saw the Experts-Exchange hyperlink. Cool new startups indeed. Very funny, Brent.
I love the “Vista of databases” line. I’m going to use that line in the future (with proper attribution of course).
Happy 4/1
Thanks for the smile this morning playa!
Darn you got me. Good post, I was 99% convinced that you had just thrown SQL Server under the bus. I was even going to send over my Cassandra Jump Start that I just posted up a couple days ago.
http://www.coderjournal.com/2010/03/cassandra-jump-start-for-the-windows-developer/
Either way thanks, and you just got another gullible reader.
I also hear from the NoSQL folks that there has never been a successful implementation of #YesSQL, ever.
I’m immediately switching all our systems over to something that is highly scalable, append only (no updates, just offsetting transactions), and still not there with HADR support.
Even our 3000 databases in stores, where the local db is about 100 MB and grows at a whopping 100 transactions per hour. You never know when demand might bring it up to 200 transactions per hour…
I saw NoSQL and starting laughing uncontrollably, Brent! Great one for the day 🙂
Hi Brent,
Interesting blog,
If a service on internet focus on serves a lot of clients, hundreds of clients, would be Cassandra the best option to start implementing a software project??
Jose – there is no “best” option. It all depends on what skills you have and how long you want to spend learning versus executing. If you already know a particular database platform, it might be best to hit the ground running with that.