Mô tả

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 the Fundamental 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.


One other thing you will learn in this course is the lowest database interface that talks to the OS which is the database engine. 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.


Enjoy the course.

Bạn sẽ học được gì

Learn and understand ACID Properties

Database Indexing

Database Partitioning

Database Replication

Database Sharding

Database Cursors

Concurrency Control (Optimistic, Pessimistic)

B-Trees in Production Database Systems

Database System Designs

Difference between Database Management System, Database Engine and Embedded database

Database Engines such as MyISAM, InnoDB, RocksDB, LevelDB and More

Benefits of Using one database engine over the other

Switching Database Engines with MySQL

Database Security

Homomorphic Encryption

Yêu cầu

  • Have worked with databases before but wish to get deeper understanding
  • Basic SQL knowledge

Nội dung khoá học

18 sections

Course Updates

6 lectures
Welcome to the Course
06:36
Course Note 1
00:37
Course Note 2
07:36
Course Note 3
09:24
Note about Docker
00:44
Slides
00:04

ACID

11 lectures
Introduction to ACID
03:54
What is a Transaction?
13:34
Atomicity
10:03
Isolation
31:53
Consistency
12:41
Durability
12:12
ACID by Practical Examples
21:21
Phantom Reads
07:35
Serializable vs Repeatable Read
08:17
Eventual Consistency
14:33
ACID Quiz
9 questions

Understanding Database Internals

4 lectures
How tables and indexes are stored on disk (MUST WATCH before continue)
21:03
Row-Based vs Column-Based Databases
34:15
Primary Key vs Secondary Key - What you probably didn't know
10:56
Databases Pages (Article)
05:30

Database Indexing

14 lectures
Create Postgres Table with a million Rows (from scratch)
04:22
Getting Started with Indexing
18:18
Understanding The SQL Query Planner and Optimizer with Explain
10:16
Bitmap Index Scan vs Index Scan vs Table Scan
11:24
Key vs Non-Key Column Database Indexing
17:02
Index Scan vs Index Only Scan
08:08
Combining Database Indexes for Better Performance
14:07
How Database Optimizers Decide to Use Indexes
11:19
Create Index Concurrently - Avoid Blocking Production Database Writes
03:10
Bloom Filters
09:18
Working with Billion-Row Table
13:08
Article - The Cost of Long running Transactions
01:40
Article - Microsoft SQL Server Clustered Index Design
03:18
Indexing Quiz
3 questions

B-Tree vs B+Tree in Production Database Systems

9 lectures
B-Tree Section's Introduction & Agenda
03:34
Full Table Scans
03:27
Original B-Tree
04:46
How the Original B-Tree Helps Performance
07:56
Original B-Tree Limitations
06:31
B+Tree
06:17
B+Tree DBMS Considerations
04:27
B+Tree Storage Cost in MySQL vs Postgres
04:45
B-Tree Section's Summary
01:07

Database Partitioning

14 lectures
Introduction to Database Partitioning
01:26
What is Partitioning?
03:28
Vertical vs Horizontal Partitioning
02:07
Partitioning Types
01:32
The Difference Between Partitioning and Sharding
02:43
Preparing: Postgres, Database, Table, Indexes
05:22
Execute Multiple Queries on the Table
01:18
Create and Attach Partitioned Tables
03:46
Populate the Partitions and Create Indexes
03:59
Class Project - Querying and Checking the Size of Partitions
05:32
The Advantages of Partitioning
04:41
The Disadvantages of Partitioning
02:48
Section Summary - Partitioning
01:10
How to Automate Partitioning in Postgres
10:06

Database Sharding

12 lectures
Introduction to Database Sharding
01:06
What is Database Sharding?
03:31
Consistent Hashing
02:41
Horizontal partitioning vs Sharding
01:08
Sharding with Postgres
01:05
Spin up Docker Postgres Shards
07:23
Writing to a Shard
21:58
Reading from a Shard
11:19
Advantages of Database Sharding
01:59
Disadvantages of Database Sharding
03:33
Database Sharding Section Summary
00:45
When Should you consider Sharding your Database?
20:06

Concurrency Control

7 lectures
Shared vs Exclusive Locks
11:04
Dead Locks
05:31
Two-phase Locking
07:08
Solving the Double Booking Problem (Code Example)
13:42
Double Booking Problem Part 2 ( Alternative Solution and explination)
17:49
SQL Pagination With Offset is Very Slow
09:09
Database Connection Pooling
10:50

Database Replication

6 lectures
Introduction to Database Replication
01:19
Master/Standby Replication
03:45
Multi-master Replication
01:23
Synchronous vs Asynchronous Replication
03:06
Replication Demo with Postgres 13
19:20
Pros and Cons of Replication
03:28

Database System Design

2 lectures
Twitter System Design Database Design
01:11:56
Building a Short URL System Database Backend
37:50

Database Engines

12 lectures
Introduction
02:44
What is a Database Engine?
06:41
MyISAM
06:49
InnoDB
06:45
XtraDB
02:05
SQLite
03:44
Aria
02:27
BerkeleyDB
02:40
LevelDB
06:20
RocksDB
04:05
Popular Database Engines
02:31
Switching Database Engines with mySQL
17:08

Database Cursors

7 lectures
What are Database Cursors?
09:31
Server Side vs Client Side Database Cursors
01:44
Inserting Million Rows with Python in Postgres using Client Side Cursor
03:29
Querying with Client Side Cursor
04:42
Querying with Server Side Cursor
01:24
Pros and Cons of Server vs Client Side Cursors
04:38
Article - Server Side Cursor Types in SQL Server
08:17

SQL vs NoSQL Architecture

3 lectures
MongoDB Architecture
43:24
MongoDB Internals
07:00
MemCached In-Memory database Architecture
14:40

Database Security

6 lectures
How to Secure Your Postgres Database by Enabling TLS/SSL
12:01
Deep Look into Postgres Wire Protocol with Wireshark
14:07
Deep Look Into MongoDB Wire Protocol with Wireshark
24:04
What is the Largest SQL Statement that You can Send to Your Database
09:43
Best Practices Working with REST & Databases
06:53
Database Permissions and Best Practices for Building REST API
23:40

Homomorphic Encryption - Performing Database Queries on Encrypted Data

9 lectures
Introduction to Homomorphic Encryption
01:52
What is Encryption?
01:29
Why Can't we always Encrypt?
04:32
What is Homomorphic Encryption
05:00
Homomorphic Encryption Demo
00:35
Clone and Build the Code
02:35
Going Through the Code and the Database
01:05
Searching The Encrypted Database
03:10
Is Homomorphic Encryption Ready?
02:30

Answering your Questions

16 lectures
Heap Index scan instead of Index only scan why?
12:54
What is the unit of the Cost in Postgres Planner?
06:15
All Isolation Levels - Explained Details
26:07
Snapshot and Repeatable Read Isolation difference?
07:55
I have an Index why is the database doing a full table scan?
07:37
Why Databases Read Pages instead of Rows?
11:02
How does Indexing a column with duplicate values work?
10:53
Should I drop unused indexes?
08:45
Why use serializable Isolation Level when we have SELECT FOR UPDATE?
06:59
Can I use the same database connection for multiple clients?
07:00
Do I need a transaction if I'm only reading?
15:47
Why does an update in Postgres touches all indexes?
23:49
What is the value of bitmap index scan?
25:45
What does Explain Analyze actually do?
19:37
Postgres vs MySQL (The fundamental differences)
08:01
Does Create Index block writes and Why?
11:15

Database Discussions

15 lectures
WAL, Redo and Undo logs
39:10
SELECT COUNT (*) can impact your Backend Application performance, here is why
10:36
How Shopify Switched from UUID as Primary Key
31:22
How does the Database Store Data On Disk?
18:55
Postgres Architecture
33:15
Is QUIC a Good Protocol for Databases?
12:15
What is a Distributed Transaction?
21:28
Hash Tables and Consistent Hashing
49:22
Indexing in PostgreSQL vs MySQL
13:01
Why Uber Moved from Postgres to MySQL (Discussion)
47:13
Can NULLs Improve your Database Queries Performance?
21:12
Write Amplification Explained in Backend Apps, Database Systems and SSDs
21:15
Optimistic vs Pessmistic Concurrency Control
17:36
Postgres Locks - A Deep Dive
00:03
How Slow is select * in row store
02:55

Archived Lectures

6 lectures
Introduction to ACID (Archived)
01:39
What is a Transaction? (Archived)
02:31
Atomicity (Archived)
02:39
Isolation (Archived)
20:35
Consistency (Archived)
13:06
Durability (Archived)
01:44

Đánh giá của học viên

Chưa có đánh giá
Course Rating
5
0%
4
0%
3
0%
2
0%
1
0%

Bình luận khách hàng

Viết Bình Luận

Bạn đánh giá khoá học này thế nào?

image

Đăng ký get khoá học Udemy - Unica - Gitiho giá chỉ 50k!

Get khoá học giá rẻ ngay trước khi bị fix.