mirror of
https://github.com/linkedin/school-of-sre
synced 2026-01-03 07:08:02 +00:00
Fix dangling links in mysql, add TOC in mysql, incorporate network review
This commit is contained in:
@@ -36,7 +36,7 @@
|
||||
|
||||
insert, create, drop, delete, update, commit, rollback, truncate, alter, grant, revoke
|
||||
|
||||
You can practise these in the [lab section](../lab.md).
|
||||
You can practise these in the [lab section](https://linkedin.github.io/school-of-sre/databases_sql/lab/).
|
||||
|
||||
|
||||
|
||||
@@ -95,4 +95,4 @@ In recent times, even large organizations have moved away from commercial softwa
|
||||
|
||||
Lack of support is no longer a concern because of the paid support available from the developer and third parties.
|
||||
|
||||
MySQL is the most widely used open source DB, and it is widely supported by hosting providers, making it easy for anyone to use. It is part of the popular Linux-Apache-MySQL-PHP ([LAMP](https://en.wikipedia.org/wiki/LAMP_(software_bundle))) stack that became popular in the 2000s. We have many more choices for a programming language, but the rest of that stack is still widely used.
|
||||
MySQL is the most widely used open source DB, and it is widely supported by hosting providers, making it easy for anyone to use. It is part of the popular Linux-Apache-MySQL-PHP ([LAMP](https://en.wikipedia.org/wiki/LAMP_(software_bundle))) stack that became popular in the 2000s. We have many more choices for a programming language, but the rest of that stack is still widely used.
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
# Relational Databases
|
||||
|
||||
### What to expect from this training
|
||||
### Prerequisites
|
||||
* Complete [Linux course](/linux_basics/intro/)
|
||||
* Install Docker (for lab section)
|
||||
|
||||
### What to expect from this course
|
||||
You will have an understanding of what relational databases are, their advantages, and some MySQL specific concepts.
|
||||
|
||||
### What is not covered under this course
|
||||
@@ -13,9 +17,13 @@ You will have an understanding of what relational databases are, their advantage
|
||||
### Introduction
|
||||
The main purpose of database systems is to manage data. This includes storage, adding new data, deleting unused data, updating existing data, retrieving data within a reasonable response time, other maintenance tasks to keep the system running etc.
|
||||
|
||||
### Prerequisites
|
||||
* Complete [Linux course](/linux_basics/intro/)
|
||||
* Install Docker (for lab section)
|
||||
|
||||
### Pre-reads
|
||||
[RDBMS Concepts](https://beginnersbook.com/2015/04/rdbms-concepts/)
|
||||
[RDBMS Concepts](https://beginnersbook.com/2015/04/rdbms-concepts/)
|
||||
|
||||
### Course Contents
|
||||
- [Key Concepts](https://linkedin.github.io/school-of-sre/databases_sql/concepts/)
|
||||
- [MySQL Architecture](https://linkedin.github.io/school-of-sre/databases_sql/mysql/#mysql-architecture)
|
||||
- [InnoDB](https://linkedin.github.io/school-of-sre/databases_sql/innodb/)
|
||||
- [Operational Concepts](https://linkedin.github.io/school-of-sre/databases_sql/operations/)
|
||||
- [Lab](https://linkedin.github.io/school-of-sre/databases_sql/lab/)
|
||||
- [Further Reading](https://linkedin.github.io/school-of-sre/databases_sql/conclusion/#further-reading)
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
Watch this performance tuning [tutorial video](https://www.youtube.com/watch?v=pjRTLPeUOug).
|
||||
|
||||
Checkout the [lab section](../lab.md) for a hands-on about indexes.
|
||||
Checkout the [lab section](https://linkedin.github.io/school-of-sre/databases_sql/lab/) for a hands-on about indexes.
|
||||
|
||||
* [Slow query logs](https://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html)
|
||||
|
||||
Used to identify slow queries (configurable threshold), enabled in config or dynamically with a query
|
||||
|
||||
Checkout the [lab section](../lab.md) about identifying slow queries.
|
||||
Checkout the [lab section](https://linkedin.github.io/school-of-sre/databases_sql/lab/) about identifying slow queries.
|
||||
|
||||
* User management
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# DNS
|
||||
Domain Names are the simple human-readable names for websites. The Internet understands only IP addresses, but since memorizing incoherent numbers is not practical, domain names are used instead. These domain names are translated into IP addresses by the DNS infrastructure. When somebody tries to open www.linkedin.com in the browser, the browser tries to convert www.linkedin.com to an IP Address. This process is called DNS resolution. A simple pseudocode depicting this process looks this
|
||||
Domain Names are the simple human-readable names for websites. The Internet understands only IP addresses, but since memorizing incoherent numbers is not practical, domain names are used instead. These domain names are translated into IP addresses by the DNS infrastructure. When somebody tries to open [www.linkedin.com](https://www.linkedin.com) in the browser, the browser tries to convert [www.linkedin.com](https://www.linkedin.com) to an IP Address. This process is called DNS resolution. A simple pseudocode depicting this process looks this
|
||||
|
||||
```python
|
||||
ip, err = getIPAddress(domainName)
|
||||
@@ -22,7 +22,7 @@ def getIPAddress(domainName):
|
||||
return resp
|
||||
```
|
||||
|
||||
Now lets understand what operating system kernel does when the gethostbyname function is called. The Linux operating system looks at the file [/etc/nsswitch.conf](https://man7.org/linux/man-pages/man5/nsswitch.conf.5.html) file which usually has a line
|
||||
Now lets understand what operating system kernel does when the [gethostbyname](https://man7.org/linux/man-pages/man3/gethostbyname.3.html) function is called. The Linux operating system looks at the file [/etc/nsswitch.conf](https://man7.org/linux/man-pages/man5/nsswitch.conf.5.html) file which usually has a line
|
||||
|
||||
```bash
|
||||
hosts: files dns
|
||||
@@ -61,7 +61,7 @@ PING test.linkedin.com (127.0.0.1) 56(84) bytes of data.
|
||||
```
|
||||
|
||||
As mentioned earlier, if no match exists in /etc/hosts, the OS tries to do a DNS resolution using the DNS protocol. The linux system makes a DNS request to the first IP in /etc/resolv.conf. If there is no response, requests are sent to subsequent servers in resolv.conf. These servers in resolv.conf are called DNS resolvers. The DNS resolvers are populated by [DHCP](https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol) or statically configured by an administrator.
|
||||
[Dig](https://linux.die.net/man/1/dig) is a userspace DNS system which creates and sends requests to DNS resolvers and prints the response it receives to the console.
|
||||
[Dig](https://linux.die.net/man/1/dig) is a userspace DNS system which creates and sends request to DNS resolvers and prints the response it receives to the console.
|
||||
|
||||
```bash
|
||||
#run this command in one shell to capture all DNS requests
|
||||
|
||||
@@ -25,7 +25,7 @@ curl linkedin.com -v
|
||||
* Closing connection 0
|
||||
```
|
||||
|
||||
Here, in the first line GET is the verb, / is the path and 1.1 is the HTTP protocol version. Then there are key value pairs which give client capabilities and some details to the server. The server responds back with HTTP version, Status Code and Status message. Status codes 2xx means success, 3xx denotes redirection, 4xx denotes client side errors and 5xx server side errors.
|
||||
Here, in the first line GET is the verb, / is the path and 1.1 is the HTTP protocol version. Then there are key value pairs which give client capabilities and some details to the server. The server responds back with HTTP version, [Status Code and Status message](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes). Status codes 2xx means success, 3xx denotes redirection, 4xx denotes client side errors and 5xx server side errors.
|
||||
|
||||
We will now jump in to see the difference between HTTP/1.0 and HTTP/1.1.
|
||||
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
|
||||
## Prerequisites
|
||||
|
||||
This course requires high-level knowledge of commonly used jargon in TCP/IP stack like DNS, TCP, UDP and HTTP. Basic familiarity with Linux jargon is sufficient to start this course. This course also expects basic exposure to Linux command-line tools. The course will require you to install certain utilities and run them as a part of the course exercises.
|
||||
- High-level knowledge of commonly used jargon in TCP/IP stack like DNS, TCP, UDP and HTTP
|
||||
- [Linux Commandline Basics](https://linkedin.github.io/school-of-sre/linux_basics/command_line_basics/)
|
||||
|
||||
## What to expect from this course
|
||||
|
||||
@@ -10,7 +11,7 @@ Throughout the course, we cover how an SRE can optimize the system to improve th
|
||||
|
||||
## What is not covered under this course
|
||||
|
||||
This course spends time on the fundamentals. We are not covering concepts like HTTP/2.0, QUIC, TCP congestion control protocols, Anycast, BGP, CDN, Tunnels and Multicast. We expect that this course will provide the relevant basics to understand such concepts
|
||||
This course spends time on the fundamentals. We are not covering concepts like [HTTP/2.0](https://en.wikipedia.org/wiki/HTTP/2), [QUIC](https://en.wikipedia.org/wiki/QUIC), [TCP congestion control protocols](https://en.wikipedia.org/wiki/TCP_congestion_control), [Anycast](https://en.wikipedia.org/wiki/Anycast), [BGP](https://en.wikipedia.org/wiki/Border_Gateway_Protocol), [CDN](https://en.wikipedia.org/wiki/Content_delivery_network), [Tunnels](https://en.wikipedia.org/wiki/Virtual_private_network) and [Multicast](https://en.wikipedia.org/wiki/Multicast). We expect that this course will provide the relevant basics to understand such concepts
|
||||
|
||||
## Birds eye view of the course
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ nav:
|
||||
- InnoDB: databases_sql/innodb.md
|
||||
- Operational Concepts: databases_sql/operations.md
|
||||
- Lab: databases_sql/lab.md
|
||||
- Further Reading: databases_sql/reading.md
|
||||
- Conclusion: databases_sql/conclusion.md
|
||||
- NoSQL:
|
||||
- Introduction: databases_nosql/intro.md
|
||||
- Key Concepts: databases_nosql/key_concepts.md
|
||||
|
||||
Reference in New Issue
Block a user