Course Introduction

Learn who this course is for, what’s covered, and what the prerequisites are.

This course is a starter guide to the internals of different categories of databases. We’ll dive into the fundamental characteristics of databases, storage layouts, transactionality, specific guarantees, implementation, and the technical requirements to support their distributed natures.

Target audience

The course is intended for intermediate to advanced engineers who have a working knowledge of databases such as MySQL, Cassandra, and DynamoDB, and who are interested in exploring common patterns that appear across database systems.

There are many database options available to software engineers, and it can be difficult to choose one that will meet the requirements of a project. This course addresses that challenge by explaining the internal workings of different databases, their architectural and access patterns, and the various guarantees provided.

After completing this course, you’ll be able to:

  • Compare different types of databases and select an appropriate option based on your project requirements.

  • Choose appropriate read and write patterns for interactions with the database.

  • Understand why databases behave the way they do.


The following are the prerequisites expected from the reader:

  • Have a working knowledge of one or more database types, such as MySQL, Cassandra, MongoDB, etc.

  • Have built small to medium applications that interact with a database.

The course is not a guide to any particular type of database but is instead an overview of the architectural patterns used as building blocks in databases.

Course topics

The course focuses on:

  • Common database, DBMS, and data model terminology and DBMS taxonomy.

  • DBMS architecture, data structures, and underlying storage layouts.

  • Transactions, a widely used DBMS guarantee..

  • Distributed aspects of databases, such as replication, partitioning, concurrency controls, consistency models, and consensus.

  • Common pitfalls and problems associated with distributed databases.