By the end of this, developers should be able to:
- Identify use cases where relational or non-relational databases are appropriate.
- List three strengths of relational databases.
- List three strengths of non-relational databases.
You should have read the following:
Take five minutes to review these readings. Just skim to refresh your memory. Then, take fifteen minutes to share your notes with your classmates and to prepare for discussion. Discuss with each other and attempt to answer the following questions.
- According to Sarah Mei, what are the benefits of using MongoDB?
- Why wasn't MongoDB a good fit for the project she was developing?
- What should you consider when choosing MongoDB or a relational database like Postgres?
- Suppose you were building a blog with comments. Should a comment on one article appear on any other article? Will you ever view comments apart from their article?
- Suppose this blog also had tags. Should tags appear on multiple articles? Which is the "parent" relation?
- Contrast the strength "ownership" between blog posts and comments, and blog posts and tags.
- Suppose you had to edit a tag. In a relational database, how many rows need to be changed (best and worst case)? In a document database, how many documents need to be changed (best and worst case)?
Put together a list of similarities and differences between relational and non-relational databases. You can start with comparisons provided by specific vendors, such as the one found in NoSQL Databases Explained. You might wish to organize your thoughts with a Venn diagram or a series of tables.
Pick an additional reading to go through with a classmate. Reflect on how the article changes the discussion. What have you learned?
- What the heck are you actually using NoSQL for?
- A co-Relational Model of Data for Large Shared Data Banks
- A brief history of databases
- NoSQL Databases: An Overview | ThoughtWorks
- When to choose CouchDB vs RDBMS?
- CAP Twelve Years Later: How the "Rules" Have Changed
- MongoDB Use Cases
- All content is licensed under a CCBYNCSA 4.0 license.
- All software code is licensed under GNU GPLv3. For commercial use or alternative licensing, please contact legal@ga.co.