And I say that with heavy prejudice.
Not more than five years ago, one had to know the Structured Query Language (SQL) to be able to store and retrieve information from database systems. Database engines like Microsoft’s SQL Server and the open source MySQL, and a myriad other proprietary and open source systems flourished in that era.
Today, all that is a thing of the past. You hear names like Cassandra, Couch DB, Cosmos DB, Mongo DB and others. None of these “DB” (aka “databases”) have any resemblance to the database engines or systems of “yore”. While the systems of the yester-years talked in terms of “databases”, “tables” and “rows”, today we talk in terms of “documents” and “entities”. Data does not need to be defined into a fixed format and subject to a set of rationalizing rules to be stored and retrieved. You can throw together any set of attributes and call it data and have the magical “database” engine (am talking about the Cassandra/Couch/Cosmos/Mongo/et al) do the heavy lifting for you. Many times, the underlying data has no real relationship to each other. Yet the facade thrown over it by that database engine will let you query among that data as if they were related.
Originally designed to overcome the limitations of the XML format, Json has evolved into an entirely new philosophy. Indeed, it is the current obsequiousness of Json that has led to the demise of the SQL-family of database systems.
All of those modern day engines we just talked about store data as Json. And they return Json. As such, they each contain powerful algorithms embedded in them to sort through and manage data in Json form, because the applications written using these systems demand that sort of performance.
In part, the movement away from a Microsoft-platform centric development philosophy, driven by the emergence of the “mashup” and “startup” cultures in the past ten years have served to punch through most of the nails in the SQL-coffin.
Software development, nay! software engineering itself, has little to do with the Microsoft ecosystem today. Where are languages like C# and ASP.NET today? Even a cursory look through the job descriptions posted on employment websites reveal a heavy dose non-Microsoft tech in heavy demand. And I am not talking about just the programming language. It is everything. The entire ecosystem:
- The programming language
- Database system
- Editor/Compiler/Debugging system
- Deployment system
- Software QA systems
- Automated software code release systems
- Source control
- Project management
The list is long.
All of those environments have moved far away from the Visual Studio / Project / Team Foundation Server ecosystem. Today, it is Slack, GitHub, Chef, Ansible, …
Everything else in today’s software environment talks REST API. Every “application” out there is a collection of REST API interfaces – outgoing and incoming. So why should databases be left out?
All of the database systems we talked about, talk REST API. True, a few of them let you use the mechanisms you are comfortable with — for example Cosmos DB lets you use a SQL-compatible query structure. But they are all fast moving away from that.
Apache’s CouchDB is a good case in point. The 3.0 version released recently has been written from the ground-up as a high performance and robust REST API only system.
So, if you are just getting into the world of databases, forget the world of SQL. It is dead and it is not going to come back ever.