Fundamentals of Database Engineering
- Περιγραφή
- Πρόγραμμα σπουδών
- Συχνές ερωτήσεις
Ενημέρωση για Σεμινάρια Udemy
Για να παρακολουθήσετε ένα Σεμινάριο που ανήκει στο Udemy ακολουθήστε τον κατάλληλο σύνδεσμο «Μπείτε στο Udemy»,και μέσα από το περιβάλλον του Udemy πληρώνετε το κόστος και το Σεμινάριο είναι στην διάθεση σας με τους όρους και τις προϋποθέσεις που αναφέρονται εκεί.
Οι τιμές πού εμφανίζονται στο Seminarpro ενδέχεται να είναι διαφορετικές από αυτές του Udemy , αυτό συμβαίνει διότι περιστασιακά το Udemy μεταβάλλει τις τιμές ανάλογα με την πολιτική προσφορών που εφαρμόζει. Η τιμή αγοράς είναι αυτή που εμφανίζεται κάθε φορά στο Udemy.
Τα Σεμινάρια που προβάλλονται στο Seminarpro αλλά προέρχονται από το Udemy περιέχουν video με ελληνικούς υπότιτλους. Οι υπόλοιπες δραστηριότητες όπως σημειώσεις ή ερωτήσεις κατανόησης είναι στα Αγγλικά.
Η πληρωμή γίνεται απευθείας στο Udemy και αυτό είναι υπεύθυνο για την έκδοση αντίστοιχων παραστατικών.
Το συγκεκριμένο Σεμινάριο σας δίνει την δυνατότητα να συμμετέχετε σε εξετάσεις για απόκτηση διεθνώς αναγνωρισμένης πιστοποίησης με τίτλο «Προγραμματιστής βάσεων δεδομένων» που προσφέρεται από την ACTA (Τεχνοβλαστός Αριστοτελείου Πανεπιστημίου Θεσσαλονίκης) και αναγνωρίζεται από το ΕΣΥΔ. (Εθνικό Σύστημα Διαπίστευσης). Φορείς με διεθνώς αναγνωρισμένο κύρος που θα προσθέσουν ιδιαίτερη βαρύτητα στο βιογραφικό σας.
Πατήστε Εδώ για περισσότερες πληροφορίες
Περιγραφή Σεμιναρίου
Η Μηχανική Βάσεων Δεδομένων είναι ένας πολύ ενδιαφέρων τομέας στη μηχανική λογισμικού. Εάν ενδιαφέρεστε να μάθετε για τη μηχανική βάσεων δεδομένων, έχετε έρθει στο σωστό μέρος. Έχω επιμεληθεί προσεκτικά αυτό το μάθημα για να συζητήσω τις Θεμελιώδεις έννοιες της μηχανικής βάσεων δεδομένων.
Αυτό το μάθημα δεν θα σας διδάξει SQL ή γλώσσες προγραμματισμού, ωστόσο, θα σας διδάξει σύνολα δεξιοτήτων και μοτίβα που μπορείτε να εφαρμόσετε στη μηχανική βάσεων δεδομένων. Μερικά από τα πράγματα που θα μάθετε είναι η ευρετηρίαση, η κατάτμηση, η κατανομή, η αναπαραγωγή, η ευρετηρίαση σε βάθος b-trees, ο έλεγχος ταυτόχρονης χρήσης, οι μηχανές βάσης δεδομένων και η ασφάλεια και πολλά άλλα.
Πιστεύω ότι η εκμάθηση των βασικών αρχών της μηχανικής βάσεων δεδομένων θα σας εξοπλίσει με τα απαραίτητα μέσα για να αντιμετωπίσετε μόνοι σας δύσκολα και προκλητικά προβλήματα. Πάντα συγκρίνω τη μηχανική με τα μαθηματικά, ποτέ δεν απομνημονεύεις συγκεκριμένους τύπους και εξισώσεις, ξέρεις τις βασικές αποδείξεις και εξάγεις και λύνεις οποιαδήποτε εξίσωση σου ρίχνει. Η μηχανική βάσεων δεδομένων είναι παρόμοια, δεν μπορείτε να πείτε ότι το MongoDB είναι καλύτερο από το MySQL ή το Postgres καλύτερο από το Oracle. Αντίθετα, μαθαίνετε την περίπτωση χρήσης σας και κατανοώντας τον τρόπο με τον οποίο κάθε πλατφόρμα βάσης δεδομένων κάνει τους δικούς της συμβιβασμούς, θα μπορείτε να λαμβάνετε τις βέλτιστες αποφάσεις.
Ένα άλλο πράγμα που θα μάθετε σε αυτό το μάθημα είναι η χαμηλότερη διεπαφή βάσης δεδομένων που συνομιλεί με το λειτουργικό σύστημα που είναι η μηχανή βάσης δεδομένων. Οι μηχανές βάσεων δεδομένων ή οι μηχανές αποθήκευσης ή μερικές φορές ονομάζονται ακόμη και ενσωματωμένες βάσεις δεδομένων είναι μια βιβλιοθήκη λογισμικού που χρησιμοποιεί ένα λογισμικό διαχείρισης βάσεων δεδομένων για να αποθηκεύει δεδομένα στο δίσκο και να κάνει CRUD (δημιουργία διαγραφής ενημέρωσης) Το Embedded σημαίνει μετακίνηση όλων σε ένα λογισμικό χωρίς δίκτυο πελάτη-διακομιστή. Σε αυτό το μάθημα βίντεο, θέλω να περάσω από τις λίγες δημοφιλείς μηχανές βάσης δεδομένων, να εξηγήσω τις διαφορές μεταξύ τους και, τέλος, να δημιουργήσω μια βάση δεδομένων και να αλλάξω τη μηχανή της και να δείξω τα διαφορετικά χαρακτηριστικά κάθε μηχανής.
Enjoy the course.
-
7Introduction to ACIDVideo lesson
ACID which stands for Atomicity, consistency, isolation, and durability are four critical properties of relational database. I think any engineer working with a relational database like postgres, mysql, sqlserver oracle, should understand these properties.
In this course, we will go through the four properties and explain why each is critical to build and use a relational database successfully.
-
8What is a Transaction?Video lesson
-
9AtomicityVideo lesson
-
10IsolationVideo lesson
-
11ConsistencyVideo lesson
-
12DurabilityVideo lesson
-
13ACID by Practical ExamplesVideo lesson
In this video we will demonstrate Atomicity, Isolation, Consistency and Durability on Postgres, fully practical example.
-
14Phantom ReadsVideo lesson
-
15Serializable vs Repeatable ReadVideo lesson
-
16Eventual ConsistencyVideo lesson
-
17ACID QuizΣειρά απο ερωτήσεις
Answer the following questions about ACID properties in databases
-
18How tables and indexes are stored on disk (MUST WATCH before continue)Video lesson
This lecture details the inner working of database systems with regards to storage. It is a must watch to understand the difference between tables, pages, IO, rows, indexes and data files.
-
19Row-Based vs Column-Based DatabasesVideo lesson
-
20Primary Key vs Secondary Key - What you probably didn't knowVideo lesson
In this lecture I will discuss the difference between Primary Key and a Secondary Key and how it can affect your performance.
-
21Databases Pages (Article)Text lesson
-
22Create Postgres Table with a million Rows (from scratch)Video lesson
Lots of you asked me how to create a table with millions of rows in postgres, here are the details
-
23Getting Started with IndexingVideo lesson
-
24Understanding The SQL Query Planner and Optimizer with ExplainVideo lesson
-
25Bitmap Index Scan vs Index Scan vs Table ScanVideo lesson
In this video, I explain the benefits of Bitmap Index Scan and how it differs from Index scan and table sequential scan.
-
26Key vs Non-Key Column Database IndexingVideo lesson
-
27Index Scan vs Index Only ScanVideo lesson
-
28Combining Database Indexes for Better PerformanceVideo lesson
-
29How Database Optimizers Decide to Use IndexesVideo lesson
-
30Create Index Concurrently - Avoid Blocking Production Database WritesVideo lesson
If you create an index on a large production table in postgres, the operations blocks writes in order to make sure to pull all the field entries to the index. However most of the time you can't afford to block writes on an active production database table. Postgres new feature which allows create index concurrently allows writes and reads to go in the expense of cpu/memory, time and chance for the index to be invalid. A small price to pay for fast production writes! https://www.postgresql.org/docs/9.1/sql-createindex.html#SQL-CREATEINDEX-CONCURRENTLY
-
31Bloom FiltersVideo lesson
-
32Working with Billion-Row TableVideo lesson
-
33Article - The Cost of Long running TransactionsText lesson
-
34Article - Microsoft SQL Server Clustered Index DesignText lesson
-
35Indexing QuizΣειρά απο ερωτήσεις
-
36B-Tree Section's Introduction & AgendaVideo lesson
B-tree is a self-balancing tree data structure that maintains sorted data and allows searches, sequential access, insertions, and deletions in logarithmic time. However, most contents explain this data structure from a theoretical point of view, in this lecture I’d like to shed some light on the practical considerations of B-Tree and B+Trees in real production database systems such as Postgres and MySQL.
Link to the original paper https://infolab.usc.edu/csci585/Spring2010/den_ar/indexing.pdf
-
37Full Table ScansVideo lesson
-
38Original B-TreeVideo lesson
-
39How the Original B-Tree Helps PerformanceVideo lesson
-
40Original B-Tree LimitationsVideo lesson
B-Tree limitation
-
41B+TreeVideo lesson
-
42B+Tree DBMS ConsiderationsVideo lesson
-
43B+Tree Storage Cost in MySQL vs PostgresVideo lesson
-
44B-Tree Section's SummaryVideo lesson
-
45Introduction to Database PartitioningVideo lesson
-
46What is Partitioning?Video lesson
-
47Vertical vs Horizontal PartitioningVideo lesson
-
48Partitioning TypesVideo lesson
-
49The Difference Between Partitioning and ShardingVideo lesson
-
50Preparing: Postgres, Database, Table, IndexesVideo lesson
-
51Execute Multiple Queries on the TableVideo lesson
-
52Create and Attach Partitioned TablesVideo lesson
-
53Populate the Partitions and Create IndexesVideo lesson
-
54Class Project - Querying and Checking the Size of PartitionsVideo lesson
-
55The Advantages of PartitioningVideo lesson
-
56The Disadvantages of PartitioningVideo lesson
-
57Section Summary - PartitioningVideo lesson
-
58How to Automate Partitioning in PostgresVideo lesson
Assume you have a table that is partitioned on the customer_id field serial 32bit, and you want to partition by range, how do you create all the necessary partitions? this is what I discuss in this video
Source Code
https://github.com/hnasr/javascript_playground/tree/master/automate_partitions
-
59Introduction to Database ShardingVideo lesson
-
60What is Database Sharding?Video lesson
-
61Consistent HashingVideo lesson
-
62Horizontal partitioning vs ShardingVideo lesson
-
63Sharding with PostgresVideo lesson
-
64Spin up Docker Postgres ShardsVideo lesson
-
65Writing to a ShardVideo lesson
-
66Reading from a ShardVideo lesson
-
67Advantages of Database ShardingVideo lesson
-
68Disadvantages of Database ShardingVideo lesson
-
69Database Sharding Section SummaryVideo lesson
-
70When Should you consider Sharding your Database?Video lesson
-
71Shared vs Exclusive LocksVideo lesson
In this lecture we explain the difference between exclusive (write locks) and shared locks (read locks)
-
72Dead LocksVideo lesson
-
73Two-phase LockingVideo lesson
-
74Solving the Double Booking Problem (Code Example)Video lesson
In this video, I demonstrate how is it possible to get double booking in database-backed web applications and how to prevent double booking and race conditions with row-level locks.
Source Code https://github.com/hnasr/javascript_playground/tree/master/booking-system
-
75Double Booking Problem Part 2 ( Alternative Solution and explination)Video lesson
-
76SQL Pagination With Offset is Very SlowVideo lesson
In this video I’ll explain why you should avoid using SQL offset when implementing any kind of paging. I’ll explain what offset does, why is it slow and what is the alternative for better performance This video is inspired by Use the index luke, i’ll have a link to the blog and slides to learn more. Let say you have a web application with an API that supports paging, you user want to request 10 news articles in page 10, this is performed via a simple GET request as shown here The API server receives the GET request and builds the SQL in order to send it to the database hopefully a pool of connections exist here. Page 10 translates to offset 100 assuming each page has 10 records and now the database is ready to execute the query against the table. Offset by design means fetch and drop the first x number of rows, so in this case the database will fetch the first 110 rows and physically drop the first 100 leaving the limit of 10 which the user will get. As the offset increase, the database is doing more work which makes this operation extremely expensive. Furthermore, the problem with offset is you might accidentally read duplicate records. consider the user now want to read page 11 and meanwhile someone inserted a new row in the table, row 111 will be read twice Let us jump and test this against postgres
Use the Index Luke Blog https://use-the-index-luke.com/no-offset
Slides in this video https://payhip.com/b/B6o1
-
77Database Connection PoolingVideo lesson
Connection pooling is a pattern of creating a pool of available connections (usually TCP) and allow multiple clients to share the same pool of connections. This pattern is usually used when connection establishment and tearing down is costly, and the server has a limited number of connections. In this video we will learn how to use connection pooling in NodeJs when working with a Postgres Database, we will learn how to spin up a pool of database connections and use stateless pool queries and transactional queries begin/end, and finally, we will
Node JS Source Code used in this lecture here https://github.com/hnasr/javascript_playground/tree/master/postgresnode-pool
-
78Introduction to Database ReplicationVideo lesson
Scripts and commands
docker run --name pgmaster -v /Users/HusseinNasser/postgres/v/master_data:/var/lib/postgresql/data -p 5432:5432 -e POSTGRES_PASSWORD=postgres -d postgres
docker run --name pgstandby -v /Users/HusseinNasser/postgres/v/standby_data:/var/lib/postgresql/data -p 5433:5432 -e POSTGRES_PASSWORD=postgres -d postgres
In standby node update postgresql.conf
primary_conninfo = 'application_name=standby host=husseinmac port=5432 user=postgres password=postgres’
add file standby.signal
touch standby.signal
In master update postgresql.conf
first 1 (standby1)
select * from pg_stat_replication
-
79Master/Standby ReplicationVideo lesson
-
80Multi-master ReplicationVideo lesson
-
81Synchronous vs Asynchronous ReplicationVideo lesson
-
82Replication Demo with Postgres 13Video lesson
Scripts and commands
docker run --name pgmaster -v /Users/HusseinNasser/postgres/v/master_data:/var/lib/postgresql/data -p 5432:5432 -e POSTGRES_PASSWORD=postgres -d postgres
docker run --name pgstandby -v /Users/HusseinNasser/postgres/v/standby_data:/var/lib/postgresql/data -p 5433:5432 -e POSTGRES_PASSWORD=postgres -d postgres
In standby node update postgresql.conf
primary_conninfo = 'application_name=standby host=husseinmac port=5432 user=postgres password=postgres’
add file standby.signal
touch standby.signal
In master update postgresql.conf
first 1 (standby1)
select * from pg_stat_replication
If using the hostname doesn't work, use the IP address of the container itself. You can get the local IP address of the container by running docker inspect container name
-
83Pros and Cons of ReplicationVideo lesson