Chris is a developer, writer, tech enthusiast, and husband. He blogs about productivity and technology at Lifehack.org. Christopher blogs via Contently.com.
I remember taking my first SQL course in college. I knew a little SQL just from messing around with WordPress and Drupal installations but mostly just understood SELECT statements and very simple JOINS. Anything other than that was gibberish.
During the course I realized how much I couldn’t stand more and more complicated SQL queries, mostly because of how verbose a single statement could get. Tying a bunch of related tables together with SQL while also doing it in an efficient matter was daunting. When I discovered NoSQL data stores it was a breath of fresh air.
The difference between relational databases and document driven data stores is large. The question is, do you have to choose between one or the other?
NoSQL data stores tend to be super fast and highly accessible as they are represented in an object-based structure. There isn’t a relationship between tables like you would see in standard RDBMSs (relational database management systems) so you can access your objects directly.
If you are creating a large system that you would like to have fast access to data (who doesn’t want that?) then a NoSQL data store may be just what you want. But NoSQL may not work as well out of box because of weak consistency guarantees within your data.
There are ways to get around this, but if you are in need of a consistent way to store a large amount of transactions and aren’t necessarily obsessed with how fast it performs then you may need to stick with a traditional SQL database.
Some standard SQL database advocates suggest that NoSQL data stores are not as secure. The fact is that no data is intrinsically secure. No matter what you use, especially if it is available through some sort of online interface, there are always security risks.
Of course before choosing any type of technology to build a system on, developers should consider the architecture they are aiming for. Are you a Windows shop? Use Linux for your web server? You have to consider this before choosing the type of data store that your system is going to stick with.
I work in a Windows shop and because of that any code that my team writes that will be enterprise gradewill most likely end up using some sort of SQL database and management system. This is using the standard company issued technology as some industries, especially finance and insurance, are typically wary of newer technologies.
If you are a developer in a large company you may know how uptight Enterprise Architecture types of employees may be. Instead of going against the grain it may just be easier to fit into their technology stack.
Also, when your data store needs to handle millions of transactions a day, using something full strength like Microsoft SQL Server or even ORACLE may be the best thing you can do as they are proven technologies and are consistent out of box.
There are certain architectures that may be able to use NoSQL databases or even a combination of NoSQL and SQL. Just remember that no one technology has it all.
But, if you are looking for speed and lack of verbosity, NoSQL data stores may just be the technology you are looking for.