Now that our databases class is coming to an end, its nice to reflect on some of the things we covered. Of everything that we went over in the last 8 weeks, I think some of the most important topics were how to design databases, how to interact with databases, and how to optimize databases.
The first step in many projects is to think about what data you will be working with, how it should be organized, and what relationships might exist within the data. Before anything is even coded or built it is important to establish how data will be represented. It is important to get the database figured out first because without a solid idea of how data will be used, it is impossible to know what actually needs to be built.
For engineers who are working on a more mature project, database decisions were likely set in stone long ago. Large scale systems might have a complex database with many moving parts, and it is important to be able to interact with data at different stages of the pipeline. Being able to identify how the data is being used or accessed in a larger database is a valuable skill, and helps lead to database optimizations.
Lastly, making the database efficient and well optimized is as important for end users as it is for backend engineers. If queries are slow or unreliable, users will not be happy. Fixing an unoptimized database can be a long and expensive process, and users might not even stick around long enough for issues to be solved. This is why it is so important to design a well optimized database before you scale things up.