Intermediate 30 min read

Project: Build a Simple Application Data Store

By the end of this lesson, you'll be able to:

  • Design a simple relational data store for a described application, applying this module's reasoning
  • Apply this module's Backup ≠ High Availability distinction to a concrete design decision
  • Apply cost-awareness and cleanup discipline to a training RDS instance and a training DynamoDB table

Prerequisites: "Backups, Availability, and Scaling"

Before you begin: two valid paths, and a real cost decision

As with earlier hands-on projects in this course, you can follow this directly in a real AWS account or read through it without creating anything. If you do create a real RDS instance or DynamoDB table, check your AWS account's current Free Tier eligibility and the current RDS/DynamoDB pricing pages first — per Lesson 1's caution against assuming Free Tier means unconditionally free, don't assume a small training database is automatically free.

The scenario

Karoo Retail (from Lessons 2 and 5) wants a simple data store for a new internal tool: tracking staff training records, where each record belongs to exactly one employee, and the team wants to run occasional reports joining employees and their completed courses.

Diagram showing an application sending a SQL query to a database engine, which stores data in a Customers table and an Orders table connected by a customer ID foreign key relationship.
The same shape applies here: an Employees table and a TrainingRecords table, related by an employee ID.

Following Lesson 5's reasoning: relationships between two entities, plus reporting needs that aren't fully fixed upfront, point toward a relational data store — Amazon RDS, per Lesson 2.

Designing the data store

  1. Choose the database family — relational (RDS), following the reasoning above.
  2. Sketch the tables — an Employees table (one row per employee) and a TrainingRecords table (one row per completed course, referencing the employee it belongs to).
  3. Decide on availability — would this internal tool need a Multi-AZ deployment from day one, or is a single-instance setup acceptable while it's new and low-traffic? (There's a reasonable case for either, depending on how critical the tool is — the point is making the decision deliberately, not by default.)
  4. Decide on backups, separately from availability — per Lesson 6, backups are a separate decision from Multi-AZ; even a single-instance, non-Multi-AZ setup should have automated backups configured, since backups protect against a different kind of problem than availability does.

A DynamoDB comparison, for contrast

Now consider a different piece of the same tool: logging every time an employee opens the training portal, purely for a simple "last accessed" lookup by employee ID, with no reporting needs across other attributes.

Diagram showing an application querying a DynamoDB table by partition key, with items grouped by that key, and a note that designing the partition key around real access patterns matters.
A known key, a single dominant lookup, no cross-entity reporting need — the DynamoDB fit this module's Lesson 3 described.

This narrower piece — a known key, a single dominant access pattern, no relationship querying — is a reasonable DynamoDB fit, even though the main training-records data store is relational. Real systems often make this kind of per-piece decision rather than forcing every part of an application into one database family.

Cost & Cleanup

If you created real resources for this project, work through both checklists before considering it finished — don't assume either "cleans itself up":

RDS cleanup:

  1. Stop or delete the training RDS instance once you're done experimenting.
  2. Review any automated snapshots or manual snapshots you created — snapshots can persist (and have cost implications) after the instance itself is gone.
  3. Review any additional storage allocated to the instance.
  4. Confirm, by checking the RDS dashboard directly, that nothing training-related remains — the same "verify, don't assume" discipline Module 3 taught for EC2.

DynamoDB cleanup:

  1. Delete any training DynamoDB tables you created that are no longer needed.
  2. Confirm, by checking the DynamoDB dashboard directly, that no unnecessary training tables remain.

Exercise

For Karoo Retail's training-records tool: (1) which database family would you choose for the main Employees/TrainingRecords data, and why? (2) would you configure backups, Multi-AZ, both, or neither for this internal tool, and why — treating backups and availability as the separate decisions Lesson 6 described? (3) name one narrower piece of the same application that could reasonably use a different database family instead.

Show hint

Revisit Lesson 5 for the family choice, Lesson 6 for the backups/availability question, and this lesson's DynamoDB comparison for the third answer.

Project: Build a Simple Application Data Store Quiz

1. Karoo Retail's training-records tool needs to enforce that each record belongs to one employee, and support reporting queries not fully defined yet. Which database family fits the main data store best?

2. Configuring a Multi-AZ deployment for this training RDS instance would remove the need to also configure backups.

3. After deleting a training RDS instance, this lesson says you should still review any remaining ______ before considering cleanup complete.

Show hint

It's the same kind of artifact Module 4 warned can outlive a deleted S3 object's current version.

Log in to submit the quiz and save your score.

My Notes

Log in to keep private notes on this lesson.

Questions about this lesson

No questions yet — be the first to ask.

Log in to ask a question about this lesson.

Summary

This closing project applies the whole module to one concrete scenario — designing a small relational data store for an application, reasoning explicitly about backups versus availability, and working through cost-aware cleanup for both an RDS instance and a DynamoDB table, if either was created in a real account.