Doug Wilson
1 min readAug 13, 2023

--

Great article. Thank you for sharing your experience. Clapping and bookmarking.

May I offer a couple of insights from my area of focus, which has been designing and leading teams to deliver applications over the past 30 years?

Smart, experienced developers recognize that relational databases like Postgres, document databases like MongoDB, and key-value stores like DynamoDB are VERY different tools with VERY different purposes, and they utilize them appropriately.

Performance and monthly price aren't the only things to be considered here.

Relational databases like Postgres are optimized for storing and retrieving highly normalized entity data, e.g. Customers, Products, Services, Orders, etc.

Document databases like Mongo and key-value stores like Dynamo have no constraints on the "shape" of the data records they store, i.e. one Customer record doesn't have to have the same set of fields as another ... unless someone writes, tests, and maintains a lot of code to prevent something that simply can't happen in a relational database.

Document databases like Mongo and key-value stores like Dynamo also have no foreign key constraints or built-in relational integrity ... which also means that a lot of custom code has to be written, tested, and maintained in order to ensure valid relationships, prevent "orphan" records, etc -- all things that relational databases do just by being themselves.

If the development time and cost (1 - 2 FTEs or more?) of adding all this is factored in, the real value of using the right tool for the job becomes evident.

--

--

Doug Wilson
Doug Wilson

Written by Doug Wilson

Doug Wilson is an experienced software application architect, music lover, problem solver, former film/video editor, philologist, and father of four.

Responses (1)