Let’s say you maintain an e-commerce application that uses an RDBMS, like PostgreSQL, to store data. Your application has a catalog of 100 products which you store in a table named product
. Now assume you need to add a column to the table, called discount
.
While designing a software system that involves a database, this question inevitably pops up in the minds of software developers. Indexes improve the speed of data retrieval operations, and who wouldn’t like their queries to be faster? Aside, database design is such an important decision in the lifetime of the software. Your application code is most likely to change over a few years, unlike your database schema which is most likely to stay the same.
When it comes to software development and release workflows, there are a number of strategies that can be followed. A common way of thinking about this is to look at the size of the team working on it, or the type of project. For instance, a small, scrappy team of where everyone wears multiple hats would work in a significantly different manner than a bigger team. Similarly, development of a client library would typically be different from that of a self-hosted executable.