We may earn an affiliate commission when you visit our partners.
Course image
Akshat Verma

Technology selection is a core component of system design. Once an architect identifies the components needed for the system, he/she needs to select a technology for each component. This course will help aspiring architects select the appropriate technology for each of the component. This course is structured into the following topics.

Read more

Technology selection is a core component of system design. Once an architect identifies the components needed for the system, he/she needs to select a technology for each component. This course will help aspiring architects select the appropriate technology for each of the component. This course is structured into the following topics.

  1. Database selection - We explain how SQL and NoSQL technologies are architecturally different and the scenarios under which each should be used. We also cover specialized databases that handle specific scenarios like Text search, Compound search and persistent data structures. We define a decision framework that leverages all these aspects to select the database for every scenario.

  2. Data warehouses and data lakes - We cover why the OLAP queries that data warehouses run requires a fundamentally data layout pattern. We discuss how data lakes and warehouses need to be designed and provide a reference architecture. We also discuss the Event Hub pattern that is becoming very relevant in modern platforms.

  3. Compute selection and Cache design - In this topic, we cover the tradeoffs associated with various compute platforms and how an architect should make the selection. We also discuss the need for caching and the aspects that need to be kept in mind, while designing a caching solution.

Enroll now

What's inside

Learning objectives

  • Select the appropriate technology for your system
  • Understand how to select the appropriate database
  • Understand how to select the appropriate compute platform
  • Understand when to cache and how to design your caching system

Syllabus

Introduction
Course overview
How to select the appropriate database technology for any system component
SQL versus NoSQL part 1
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Explores database selection, covering SQL and NoSQL technologies, which are essential for designing modern data architectures
Discusses data warehouses and data lakes, explaining the architectural patterns needed for OLAP queries and modern data platforms
Examines compute platform selection and cache design, which are crucial for optimizing system performance and scalability
Includes an assignment on technology selection, providing hands-on experience in applying the learned concepts

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Technology selection for system design

According to learners, this course provides a solid foundation for selecting appropriate technologies in system design. Students particularly highlight the clear explanations of architectural differences between SQL and NoSQL databases and the value of the database decision framework presented. Reviewers appreciate the coverage of essential topics like data warehouses, data lakes, compute selection, and cache design. While some feel it offers a good high-level overview, they note it may require additional study for deeper dives into specific technologies or advanced scenarios.
Offers a good intro, but not deep dive.
"This course is great for a high-level understanding, but you'll need to do more research for specifics."
"It provides a solid overview of the concepts, which is perfect for beginners or those needing a refresher."
"Good as an introduction to system design tech selection, but lacks deep vendor-specific details."
"It gives you the 'why' and 'when' but less of the 'how' for specific technologies."
Valuable for aspiring system architects.
"Highly relevant course content for aspiring system architects like myself."
"This course addresses core challenges faced by architects daily."
"Understanding these concepts is crucial for making sound architectural decisions."
"I feel better equipped to discuss technology choices in a professional setting."
Covers key areas like data, compute, and cache.
"The course touches upon all the critical areas of technology selection - databases, data lakes, compute, and cache."
"I liked that it didn't just focus on databases but also included compute and caching strategies."
"Covering data warehouses and data lakes along with databases gives a comprehensive view."
"The topics covered are highly relevant for anyone involved in system design."
Provides a useful framework for tech selection.
"The database decision framework is practical and directly applicable to real-world scenarios."
"I found the structured approach to technology selection very useful for making informed choices."
"Applying the decision framework presented in the course helped me solidify my understanding."
"It's great to have a concrete framework to guide my technology selection process."
Explains SQL vs NoSQL differences well.
"Really appreciate the clarity provided on the architectural differences between SQL and NoSQL."
"The section on database selection, especially SQL vs NoSQL, was incredibly clear and helpful."
"I finally understand the core distinctions and use cases for different database types after this module."
"The explanation of SQL versus NoSQL architectures was very insightful for my work."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in System Design - Technology Selection with these activities:
Review Database Concepts
Reviewing fundamental database concepts will provide a solid foundation for understanding the database selection module.
Show steps
  • Review the differences between SQL and NoSQL databases.
  • Study common database architectures and design patterns.
  • Practice designing simple database schemas.
Read 'Designing Data-Intensive Applications'
Reading this book will provide a deeper understanding of the concepts discussed in the course, particularly regarding database selection and data warehousing.
Show steps
  • Read the chapters on database technologies and data warehousing.
  • Take notes on key concepts and design patterns.
  • Reflect on how the concepts apply to real-world scenarios.
Caching Scenario Exercises
Practicing caching scenario exercises will help you develop your intuition for when to use a cache and how to design a caching system.
Show steps
  • Find or create a set of caching scenario exercises.
  • For each scenario, determine whether caching is appropriate.
  • If caching is appropriate, design a caching system for the scenario.
  • Evaluate the performance of your caching system.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Technology Selection Matrix
Creating a technology selection matrix will help you organize your knowledge and make informed decisions when selecting technologies for different system components.
Show steps
  • Identify the key criteria for technology selection.
  • Research different technologies for each component.
  • Evaluate each technology against the key criteria.
  • Create a matrix summarizing your findings.
Blog Post: SQL vs NoSQL
Creating a blog post comparing SQL and NoSQL databases will reinforce your understanding of their architectural differences and use cases.
Show steps
  • Research the key differences between SQL and NoSQL databases.
  • Identify scenarios where each type of database is most appropriate.
  • Write a blog post summarizing your findings.
  • Publish the blog post on a platform like Medium or your personal website.
Design a Data Warehouse
Designing a data warehouse will allow you to apply the concepts learned in the data warehousing module and solidify your understanding of OLAP queries and data layout patterns.
Show steps
  • Define the business requirements for the data warehouse.
  • Design the data model and schema.
  • Select the appropriate data warehousing technology.
  • Implement the data warehouse and test its performance.
Read 'Database Internals'
Reading this book will provide a deeper understanding of the underlying technologies used in database systems, which can inform your technology selection decisions.
Show steps
  • Read the chapters on storage engines and indexing.
  • Take notes on key concepts and implementation details.
  • Reflect on how these internals affect database performance and scalability.

Career center

Learners who complete System Design - Technology Selection will develop knowledge and skills that may be useful to these careers:
Solutions Architect
A solutions architect designs and implements information systems. To succeed as a solutions architect, you need to understand the tradeoffs between different technologies. This course provides a specific focus on technology selection, which is a core component of system design. By learning how to select databases, design data warehouses and data lakes, and evaluate compute platforms, you will be better prepared to choose the right technologies for your solutions. The course's coverage of SQL versus NoSQL databases, specialized databases, and caching strategies is particularly relevant to the work of a solutions architect.
Data Architect
A data architect designs and manages the data infrastructure for an organization. Data architects need to have a deep understanding of data storage, data warehousing, and data processing technologies. The course's discussion of data warehouses, data lakes, and the Event Hub pattern are directly applicable to the responsibilities of a data architect. The course also covers SQL and NoSQL databases, which are essential technologies for managing and accessing data. The frameworks for database selection can be useful in choosing the optimal data storage solutions.
Cloud Architect
A cloud architect designs and manages cloud-based infrastructure and services. Selecting the right technologies is crucial for building scalable and cost-effective cloud solutions. This course helps aspiring cloud architects choose the appropriate technologies for each component of their systems. The course covers compute selection, caching design, and database selection, all of which are critical considerations in cloud architecture. Understanding the tradeoffs between different compute platforms, as covered in this course, is particularly valuable.
Enterprise Architect
Enterprise architects are responsible for aligning IT strategy with business goals. This requires a broad understanding of various technologies and how they can be used to support business objectives. This course helps enterprise architects make informed decisions about technology selection. The course's coverage of database selection, data warehousing, and compute platforms provides a comprehensive overview of the technologies that are relevant to enterprise architecture. The course's focus on architectural differences between technologies will assist in making strategic decisions.
Software Architect
A software architect designs the structure of software systems. A critical part of this role is choosing the right technologies for each component. This course directly addresses this need by focusing on technology selection. Topics covered throughout the course such as SQL and NoSQL database selection, data warehouses and data lakes, and compute selection can help aspiring software architects make informed decisions about the technologies they use in their designs. Understanding caching solutions, as taught in this course, is also essential for building performant and scalable software.
System Designer
System designers create detailed plans for complex systems. Technology selection is a core component of this process and is the primary emphasis in this course. Gaining a better understanding of considerations for database selection, data warehouse design, and appropriate compute platforms helps aspiring system designers make more informed choices. Specifically, the discussion in the course about SQL versus NoSQL technologies, along with the section on specialized databases, is highly relevant to designing effective systems.
Application Architect
An application architect focuses on the design and implementation of software applications. Selecting the right technologies is essential for building applications that meet performance, scalability, and security requirements. This course helps application architects make informed decisions about technology selection, covering topics such as database selection, data warehousing, and compute platforms. The lessons on caching and its design is particularly useful for application architects.
Platform Engineer
Platform engineers build and maintain the underlying infrastructure that supports software applications. A key part of this role involves selecting the right technologies for the platform. This course helps platform engineers make informed decisions about technology selection, covering topics such as database selection, data warehousing, and compute platforms. The course’s discussion of OLAP queries and data layout patterns is particularly valuable for designing efficient platforms.
Database Administrator
A database administrator is responsible for managing and maintaining databases. The course touches upon the knowledge of database selection between SQL and NoSQL, which may be useful for a database administrator. The course also covers specialized databases, data warehouses, and data lakes. This can help database administrators stay up to date with the latest trends and technologies.
Data Engineer
Data engineers build and maintain the data pipelines that move and transform data. The course may be useful in understanding the technologies involved in data warehousing, data lakes, and the Event Hub pattern. Understanding data layout patterns, as covered in this course, can help data engineers design more efficient data pipelines.
Technical Lead
Technical leads oversee development teams and make key technology decisions. Making informed technology choices is a large part of the job, and this course may be useful in covering the tradeoffs associated with various compute platforms. It also covers database selection, data warehousing, and caching, all of which are important considerations when leading a technical team.
Systems Analyst
Systems analysts evaluate existing systems and recommend improvements. When identifying optimal database solutions, the course's focus on database selection and SQL versus NoSQL may be useful for systems analysts. The course also covers data warehousing and compute platforms, which are relevant to analyzing and improving systems.
IT Consultant
IT consultants advise organizations on how to use technology to achieve their business goals. This course may be useful in helping IT consultants make informed recommendations about technology selection. The course's coverage of database selection, data warehousing, and compute platforms provides a broad understanding of the technologies that are relevant to IT consulting.
Technical Product Manager
Technical product managers are responsible for the strategy, roadmap, and feature definition of a technical product. This course may be useful in understanding the underlying technologies that support the product. The course's coverage of database selection, data warehousing, and compute platforms can help technical product managers make informed decisions about product features.
Business Intelligence Analyst
Business intelligence analysts analyze data to identify trends and insights. The course may be useful for business intelligence analysts who work with data warehouses and data lakes. Understanding the differences between OLTP and OLAP, as covered in this course, can help business intelligence analysts extract meaningful insights from data.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in System Design - Technology Selection.
Provides a comprehensive overview of the principles and practices of designing scalable, reliable, and maintainable data systems. It covers a wide range of topics relevant to technology selection, including database technologies, data warehousing, and caching strategies. This book is commonly used as a reference by industry professionals. It adds depth to the course by providing real-world examples and case studies.
Provides a deep dive into the inner workings of database systems. It covers topics such as storage engines, indexing, query processing, and transaction management. While not strictly necessary for technology selection, understanding these internals can help you make more informed decisions. This book is more valuable as additional reading than it is as a current reference.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser