NoSQL databases and SQL databases are both great IT tools. Good IT professionals understand all the tools at their disposal and deploy the right tool for the job. Good IT professionals avoid denigrating IT tools and focus on explaining technical options and business implications. Good IT professionals understand the ACID1 properties of SQL databases, and know when they are essential or optional.
Horses for courses:
- If speed is essential, and the business impact of some data loss is acceptable (e.g., analyzing tracking data - a few missing records will not affect the conclusions about where a person or object is), noSQL databases can do a great job.
- If the business impact of data loss is more important, then you can either instruct programmers to build the protection into a nonSQL language (for example an eventually consistent schema), or you can use an SQL database where the protection is built-in.
- If the business impact of data loss is very important (e.g., for financial transactions), the risks and testing costs of programming protection is unlikely to be justified, compared with SQL languages (such as MySQL or Oracle) where the ACID properties are built-in.
The important priority for IT and the programming teams is to explain clearly the business benefits and risks of the design decisions and to deploy the right tool for the job. To say that noSQL should always be used is as stupid as saying that SQL should always be used. In general, IT should be the adult in the room, err on the side of good protection and on the side of less programming rather than more.
Action Item: CIOs and application development senior management should ensure all application designers and programmers understand both noSQL and SQL fundamentals and can advise the business on which is most appropriate for a particular use.
Footnotes: Note 1
Jim Grey of IBM and Microsoft defined in the 1980s what later would be called the ACID database properties; these key properties are Atomicity, Consistency, Isolation, Durability. This set of properties guarantees that database transactions (single logical operations on databases) are processed reliably.