Hot on the heels of my NoSQL posts, I wanted to add a counterpoint to the discussion. After all, even though I see the value of non-relational technologies, I think it’s important not to lose sight of the value relational databases offer. In the tech world, it’s too easy to chase those squirrels of new tech (though it’s also easy to get stuck in our old patterns as well). It always helps to take a step back and see the forest for the trees so we can choose the right path for our enterprise.
It is an understood fact that the tech world gets pretty dogmatic: Oracle vs. SQL Server, Windows vs. Linux, Java vs. C#, etc. People will dig their heels in about their choices and why those choices are considered “right” when, at the end of the day, each platform is simply a different approach to various higher concepts. I tend to view most of these debates as Ford vs. Chevrolet and the only real question to answer is what tool is best for the job.
And believe me when I say that I know that this isn’t a groundbreaking opinion, but it is mine. :)
That being said, we all have good reasons for selecting the platforms we work with. For relational databases, it’s fairly evident that my choice is SQL Server. Before I get into that, let’s first talk about why I lean towards relational over non-relational. Don’t get me wrong, non-relational is an effective tool, but it’s still a very young technology. The platforms for it are still growing and maturing, where they still are missing a lot of the reliability we’ve come to expect from our relational platforms.
Couple that with the nature of relational databases: Joins, keys, and constraints do more for us than simply organize data, they provide functionality to implement and control business logic. Data integrity is extremely important for many applications and a proper database design will provide you with all the rules to keep your data clean and ordered. Just as with choosing non-relational stores, it’s a matter of choosing the appropriate tool for the job. Sometimes that job requires tight control over your data, something that you just can’t get in a NoSQL database.
As for SQL Server as my relational platform of choice, there’s a lot of reasons why I favor it over other platforms. It isn’t just because it is worked I’ve worked with (for the record, I’ve put some serious time in Oracle as well). There are really three main reasons why I will promote SQL Server as the database I think people should work with.
Let’s face it, SQL Server has been around for a while and Microsoft has had a lot of time to refine it. Over the past 15 year I’ve worked with it, I’ve seen the addition of lots of neat features that enhance the core RDBMS offering. At the same time, SQL Server is still a solid relational database and gives users a solid, reliable platform for storing their data. It’s not perfect and I’ll be the last person to tell you it is, but it certainly is on par with Oracle and PostgreSQL.
Microsoft has seen the writing on the wall. Some of it is from their own hand, some of it is how the data world is evolving. However, “the cloud”, in memory structures, and big data are ubiquitous in today’s tech landscape. Looking at the recent version of SQL Server, it’s apparent that Microsoft is trying to mold the product to live in this new realm. Consider Hekaton, the ability to span databases between Azure and on-premise, and improvements to columnstore (along with other updates). Microsoft is making investments to keep pace with the changes we’re seeing in the larger technology world and I appreciate the vision they have for the product.
This is the big one for me. The other two basically tell me that, in going with SQL Server, I’m going to have an established RDBMS platform I can rely on along with Microsoft continuing to improve things to keep pace with other products. What sets SQL Server apart is the fact that it’s so much easier to work with, for both new folks and seasoned professionals.
First, let’s look at the fact that it’s Windows. Now while we all lament SQL Server’s default settings, the fact is that almost anyone with minimal experience can get their own SQL Server instance up and running in short order. This means that the door is open a little wider for people wanting to get into the database world than those who don’t have supporting skill sets for Linux or hacking the registry. SQL Server ships with wizards and graphical tools to get folks going. Just make sure you talk to a professional before getting to far. :)
And that’s the second thing to talk about. Maybe I’m biased because I’ve been involved in the SQL Server community for so long, but I’m continually amazed by the amount of free material for training and best practices provided by this community, from blogs to Twitter to a user group likely nearby where you can ask questions of people using SQL Server in your area. It’s so easy to get started with SQL Server.
Yeah, I know I sound like a fanboy at this point (squee!). Just so we’re on the level, I am well aware of SQL Server’s flaws. There’s a lot of things that aren’t perfect or were added a couple versions ago but were never finished up (*cough* Management Data Warehouse). And let’s not get into what’s in Standard Edition versus Enterprise. Trust me, I get it. Even with that, though, I feel that SQL Server is the preferred offering at this point for companies that are looking for a solid relational platform.