What database system should you learn first? Should you even bother learning any database system, since there are already specialists who can do that work for you?
Of course you should learn how to use databases! Data is the lifeblood of our profession. Data drives all of the applications we build. As such, you should learn as much about database systems as you can.
Assuming you are totally new to databases, let’s take a look at the landscape.
RDBMS and NoSQL
These days, you have two basic choices when looking at database systems. Do I go with the old tried and true RDBMS, or try out one of the newer but still well tested NoSQL systems out there? In case you don’t even know what I’m talking about, let’s just go over the basics for each system.
RDBMS stands for Relational Database Management System. According to Wikipedia, a relational model is, “This model organizes data into one or more tables (or “relations”) of columns and rows, with a unique key identifying each row.” If you’re totally unfamiliar with this, think of a spreadsheet with columns and rows of related data.
The spreadsheet analogy is simplistic compared to the power of a database system, but it works visually. Rows and columns of related data, stored in tables inside a database.
NoSQL databases, on the other hand, are a group of different types of database systems that store related data together. “A NoSQL (originally referring to “non SQL” or “non relational”) database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases.” (Wikipedia)
Think of NoSQL databases as big JSON documents, or key value stores. There’s a lot more to it than that, but for the sake of introductions, we’ll just keep it there. And if you don’t know what any of that means — JSON, keys, values — well, we’ve got a lot of work to do. And we’ll do it all.
My advice is that you should start with RDBMS and become proficient. Once you learn how the majority of the databases out there work, you can branch out to the new kid on the block and learn about NoSQL.
Database Centric Job Roles
- Database Administrator, or DBA: Think of it like a system administrator, but for databases. They take care of monitoring, tuning, backing up, maintaining, and upgrading the database systems you use every day.
- Database Developer: Sometimes referred to as a solutions developer, this is a role that spends their days neck deep in databases, writing software to work on large data sets. Sometimes small ones, too. Think of this as someone who works in the database, and the DBA is someone who works on the database.
- ETL Developer: Gets data out of one system and into another. ETL means Extract, Transform, and Load. When you get the data out of one place, you have to make it fit into another place. While there are dedicated software applications to assist in this role, I’ve never used one despite having this job title for about three years. We used 100% custom-rolled PL/SQL Packages in Oracle to do the same thing as expensive software packages. But developers are also very expensive, so was that company really saving any money?
Database Use in Web Development
When you’re a web developer or work on web development projects, you’re going to have to interface with data on a regular basis. You might be querying a database directly, or hitting a web service that does it for you and just gives you the data you need.
What if, however, you hit that service and it’s not quite what you need? What if your boss comes to you and asks for something that doesn’t yet exist in web service form? Well, it’s either time to talk to the backend web developer, or just write the backend code yourself.
In web development, the coding can be broken up into three basic categories: front end development, backend development, or full stack. Front end devs don’t have to be so good with databases and querying and such, but the other two roles have to be. Even so, those front end developers better have a good idea of how it all works, otherwise you might find yourself not too valuable.
My recommendation is to have full stack skills. You might not be great at the whole stack — I’m not so great at front end — but you need to know all the parts from the database pushing the data all the way to your user’s eyeballs.
Databases and You
Which database system should you learn first? You need to learn the basics of all of them, but you’ve got to start somewhere, right? Start with an RDBMS system and become proficient in SQL. Those databases still run a lot of the world’s data, and they aren’t going away any time soon. There’s also a lot of documentation and free learning resources out there.
Data is the lifeblood of our profession, so get out there and start learning!