Skip to main content
CF

Fundamentals of Database Engineering

26h 2m 59s
English
Paid

Database Engineering is a very interesting sector in software engineering. If you are interested in learning about database engineering you have come to the right place. I have curated this course carefully to discuss one of the main concepts of database engineering. This course will not teach you SQL or programming languages, however, it will teach you skillsets and patterns that you can apply in database engineering.

A few of the things that you will learn are Indexing, Partitioning, Sharding, Replication, b-trees in-depth indexing, Concurrency control, database engines and security, and much more.

I believe that learning the fundamentals of database engineering will equip you with the necessary means to tackle difficult and challenging problems yourself. I always compare engineering to math, you never memorize specific formulas and equations, you know the basic proves and derive and solve any equation one throws at you. Database engineering is similar, you can't possibly say MongoDB is better than MySQL or Postgres is better than Oracle. Instead, you learn your use case and by understanding how each database platform does its own trade-offs you will be able to make optimal decisions.

Database engines or storage engines or sometimes even called embedded databases is a software library that a database management software uses to store data on disk and do CRUD (create update delete) Embedded means move everything in one software no network client-server. In this video course, I want to go through the few popular database engines, explain the differences between them, and finally, I want to spin up a database and change its engine and show the different features of each engine.

About the Author: Udemy

Udemy thumbnail

Udemy is the largest open marketplace for online courses on the internet. Founded in 2010 by Eren Bali, Oktay Caglar, and Gagan Biyani and headquartered in San Francisco, the company went public on the Nasdaq in 2021 under the ticker UDMY. The platform hosts well over two hundred thousand courses across software development, IT and cloud, data science, design, business, marketing, and creative skills, taught by tens of thousands of independent instructors. Roughly seventy million learners use it worldwide, and the corporate arm — Udemy Business — supplies a curated subset of that catalog to enterprise customers.

Because Udemy is a marketplace rather than a single editorial publisher, the catalog is uneven by design. The strongest material lives in the long-form, project-based courses authored by working engineers — full-stack JavaScript, React, Node.js, Python data science, AWS, Docker and Kubernetes, mobile development with Flutter and React Native, and cloud certification preparation. The CourseFlix listing under this source is the slice of that catalog that has been mirrored here for offline-friendly viewing, organized by topic and updated as new releases land. Pricing on Udemy itself swings dramatically with the site's near-permanent sales, which is why the platform is best treated as a deep reference catalog: pick instructors with strong reviews and a track record of updating their material rather than buying on the headline price alone.

Watch Online 146 lessons

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 146 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing
0:00
/
#1: Welcome to the Course
All Course Lessons (146)
#Lesson TitleDurationAccess
1
Welcome to the Course Demo
06:37
2
Course Note 1
00:38
3
Course Note 2
07:37
4
Course Note 3
09:25
5
Introduction to ACID
03:55
6
What is a Transaction?
13:35
7
Atomicity
10:05
8
Isolation
31:54
9
Consistency
12:42
10
Durability
12:13
11
ACID by Practical Examples
21:22
12
Phantom Reads
07:36
13
Serializable vs Repeatable Read
08:18
14
Eventual Consistency
14:34
15
How tables and indexes are stored on disk (MUST WATCH before continue)
21:04
16
Row-Based vs Column-Based Databases
34:16
17
Primary Key vs Secondary Key - What you probably didn't know
10:57
18
Create Postgres Table with a million Rows (from scratch)
04:23
19
Getting Started with Indexing
18:19
20
Understanding The SQL Query Planner and Optimizer with Explain
10:17
21
Bitmap Index Scan vs Index Scan vs Table Scan
11:25
22
Key vs Non-Key Column Database Indexing
17:03
23
Index Scan vs Index Only Scan
08:09
24
Combining Database Indexes for Better Performance
14:08
25
How Database Optimizers Decide to Use Indexes
11:20
26
Create Index Concurrently - Avoid Blocking Production Database Writes
03:11
27
Bloom Filters
09:19
28
Working with Billion-Row Table
13:09
29
B-Tree Section's Introduction & Agenda
03:35
30
Full Table Scans
03:28
31
Original B-Tree
04:47
32
How the Original B-Tree Helps Performance
07:58
33
Original B-Tree Limitations
06:32
34
B+Tree
06:18
35
B+Tree DBMS Considerations
04:28
36
B+Tree Storage Cost in MySQL vs Postgres
04:46
37
B-Tree Section's Summary
01:08
38
Introduction to Database Partitioning
01:27
39
What is Partitioning?
03:29
40
Vertical vs Horizontal Partitioning
02:08
41
Partitioning Types
01:33
42
The Difference Between Partitioning and Sharding
02:44
43
Preparing: Postgres, Database, Table, Indexes
05:23
44
Execute Multiple Queries on the Table
01:19
45
Create and Attach Partitioned Tables
03:47
46
Populate the Partitions and Create Indexes
04:00
47
Class Project - Querying and Checking the Size of Partitions
05:33
48
The Advantages of Partitioning
04:42
49
The Disadvantages of Partitioning
02:49
50
Section Summary - Partitioning
01:11
51
How to Automate Partitioning in Postgres
10:07
52
Introduction to Database Sharding
01:07
53
What is Database Sharding?
03:32
54
Consistent Hashing
02:42
55
Horizontal partitioning vs Sharding
01:09
56
Sharding with Postgres
01:06
57
Spin up Docker Postgres Shards
07:24
58
Writing to a Shard
21:59
59
Reading from a Shard
11:20
60
Advantages of Database Sharding
02:00
61
Disadvantages of Database Sharding
03:34
62
Database Sharding Section Summary
00:46
63
When Should you consider Sharding your Database?
20:07
64
Shared vs Exclusive Locks
11:05
65
Dead Locks
05:32
66
Two-phase Locking
07:09
67
Solving the Double Booking Problem (Code Example)
13:43
68
Double Booking Problem Part 2 ( Alternative Solution and explination)
17:50
69
SQL Pagination With Offset is Very Slow
09:10
70
Database Connection Pooling
10:51
71
Introduction to Database Replication
01:20
72
Master/Standby Replication
03:46
73
Multi-master Replication
01:24
74
Synchronous vs Asynchronous Replication
03:07
75
Replication Demo with Postgres 13
19:21
76
Pros and Cons of Replication
03:29
77
Twitter System Design Database Design
01:11:57
78
Building a Short URL System Database Backend
37:51
79
Introduction
02:45
80
What is a Database Engine?
06:42
81
MyISAM
06:50
82
InnoDB
06:46
83
XtraDB
02:07
84
SQLite
03:45
85
Aria
02:28
86
BerkeleyDB
02:41
87
LevelDB
06:21
88
RocksDB
04:06
89
Popular Database Engines
02:32
90
Switching Database Engines with mySQL
17:09
91
What are Database Cursors?
09:32
92
Server Side vs Client Side Database Cursors
01:45
93
Inserting Million Rows with Python in Postgres using Client Side Cursor
03:30
94
Querying with Client Side Cursor
04:43
95
Querying with Server Side Cursor
01:26
96
Pros and Cons of Server vs Client Side Cursors
04:39
97
MongoDB Architecture
43:25
98
How to Secure Your Postgres Database by Enabling TLS/SSL
12:02
99
Deep Look into Postgres Wire Protocol with Wireshark
14:08
100
Deep Look Into MongoDB Wire Protocol with Wireshark
24:05
101
What is the Largest SQL Statement that You can Send to Your Database
09:45
102
Best Practices Working with REST & Databases
06:54
103
Database Permissions and Best Practices for Building REST API
23:41
104
Introduction to Homomorphic Encryption
01:54
105
What is Encryption?
01:30
106
Why Can't we always Encrypt?
04:33
107
What is Homomorphic Encryption
05:01
108
Homomorphic Encryption Demo
00:36
109
Clone and Build the Code
02:36
110
Going Through the Code and the Database
01:06
111
Searching The Encrypted Database
03:12
112
Is Homomorphic Encryption Ready?
02:31
113
Heap Index scan instead of Index only scan why?
12:55
114
What is the unit of the Cost in Postgres Planner?
06:16
115
All Isolation Levels - Explained Details
26:08
116
Snapshot and Repeatable Read Isolation difference?
07:56
117
I have an Index why is the database doing a full table scan?
07:38
118
Why Databases Read Pages instead of Rows?
11:03
119
How does Indexing a column with duplicate values work?
10:54
120
Should I drop unused indexes?
08:46
121
Why use serializable Isolation Level when we have SELECT FOR UPDATE?
07:00
122
Can I use the same database connection for multiple clients?
07:01
123
Do I need a transaction if I'm only reading?
15:48
124
Why does an update in Postgres touches all indexes?
23:50
125
What is the value of bitmap index scan?
25:46
126
What does Explain Analyze actually do?
19:38
127
Does Create Index block writes and Why?
11:16
128
WAL, Redo and Undo logs
39:11
129
SELECT COUNT (*) can impact your Backend Application performance, here is why
10:38
130
How Shopify Switched from UUID as Primary Key
31:23
131
How does the Database Store Data On Disk?
18:56
132
Postgres Architecture
33:16
133
Is QUIC a Good Protocol for Databases?
12:16
134
What is a Distributed Transaction?
21:29
135
Hash Tables and Consistent Hashing
49:23
136
Indexing in PostgreSQL vs MySQL
13:02
137
Why Uber Moved from Postgres to MySQL (Discussion)
47:14
138
Can NULLs Improve your Database Queries Performance?
21:13
139
Write Amplification Explained in Backend Apps, Database Systems and SSDs
21:16
140
Optimistic vs Pessmistic Concurrency Control
17:37
141
Introduction to ACID (Archived)
01:40
142
What is a Transaction? (Archived)
02:32
143
Atomicity (Archived)
02:40
144
Isolation (Archived)
20:36
145
Consistency (Archived)
13:07
146
Durability (Archived)
01:45
Unlock unlimited learning

Get instant access to all 145 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription

Related courses

  • Streaming Databases thumbnailUpdated 2y ago

    Streaming Databases

    By: O'Reilly Media
    Real-time applications are becoming the norm. However, for the model to function properly, it is necessary to obtain data in real-time, process it on the fly.
    5/5
  • High Performance SQLite thumbnailClassic

    High Performance SQLite

    By: Aaron Francis
    Unlock the true potential of SQLite with this comprehensive course designed to elevate your skills from beginner to expert.
    15h 27m4/5
  • Neo4j: GraphDB Foundations with Cypher thumbnailUpdated 2y ago

    Neo4j: GraphDB Foundations with Cypher

    By: Udemy
    Learn what a graph database is, gain the fundamental skills to use Neo4j on your next project. Learn how some of the worlds top tech companies structure and que
    4h 44m

Frequently asked questions

What are the prerequisites for enrolling in this course?
This course does not require prior knowledge of SQL or programming languages. It is designed for those interested in learning the main concepts of database engineering. A basic understanding of databases and an interest in software engineering can be beneficial, but the course focuses on skillsets and patterns specific to database engineering rather than coding or SQL syntax.
What kind of projects or examples will I work on?
The course includes practical examples, such as creating a Postgres table with a million rows and working with a billion-row table. You'll explore indexing and query optimization techniques like Bitmap Index Scan and Index Scan. Additionally, you'll engage in querying and checking the size of partitions in a class project. These exercises are designed to apply learned concepts in real-world scenarios.
Is this course suitable for experienced database professionals?
While the course covers fundamental concepts, experienced database professionals might find value in the in-depth exploration of topics like ACID properties, database partitioning and sharding, and indexing strategies. The course provides insights into database performance optimization and storage considerations, which can be useful even for those with prior experience in the field.
How does this course compare to other database courses?
This course focuses on core concepts of database engineering, such as ACID properties, indexing, partitioning, and sharding, rather than teaching SQL or programming languages. It delves into storage mechanisms and performance optimization, which might not be covered in SQL-focused courses. The approach is more theoretical and conceptual, providing a strong foundation in database engineering principles.
What specific tools or platforms will I learn about?
Throughout the course, you'll work with Postgres for practical examples, including tasks like creating tables and managing partitions and shards. You'll explore database optimizers, indexing techniques, and storage considerations in MySQL and Postgres, providing a focused look at how these tools support database engineering practices.
What topics are not covered in this course?
This course does not cover SQL syntax or programming languages. It is specifically tailored to teach skillsets and patterns relevant to database engineering. As such, it does not address topics like database design, SQL query writing, or advanced programming integration with databases.
What is the estimated time commitment for completing this course?
While the course consists of 146 lessons, the runtime is currently unspecified. Given the comprehensive coverage of topics like ACID properties, indexing, and partitioning, students should be prepared to invest a significant amount of time to fully grasp the concepts and complete the practical exercises included in the lessons.