Skip to content

Commit 9081c53

Browse files
committed
big relational databases page update
1 parent c2fe180 commit 9081c53

8 files changed

Lines changed: 115 additions & 14 deletions

File tree

‎content/pages/03-data/01-databases.markdown‎

Lines changed: 67 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -153,37 +153,91 @@ provider.
153153
and data connections on top of Amazon Web Services instances.
154154

155155

156-
## General database resources
157-
* [How does a relational database work?](http://coding-geek.com/how-databases-work/)
158-
is a detailed longform post on the sorting, searching, merging and other
159-
operations we often take for granted when using an established relational
160-
database such as PostgreSQL.
156+
### SQL resources
157+
You may plan to use an
158+
[object-relational mapper (ORM)](/object-relational-mappers-orms.html)
159+
as your main way of interacting with a database, but you should still
160+
learn the basics of SQL to create schemas and understand the SQL code
161+
generated by the ORM. The following resources can help you get up to
162+
speed on SQL if you have never previously used it.
161163

162164
* [Select Star SQL](https://selectstarsql.com/) is an interactive book for
163165
learning SQL. Highly recommended even if you feel you will only be working
164166
with an [object-relational mapper](/object-relational-mappers-orms.html)
165167
on your projects because you never know when you will need to drop into
166168
SQL to improve a generated query's slow performance.
167169

168-
* [Why I Love Databases](https://medium.com/@jeeyoungk/why-i-love-databases-1d4cc433685f)
169-
is a great read on the CAP Theorem, distributed systems and other topics
170-
that are at the core of database theory and implementation. Well worth
171-
the time to read.
170+
* [A beginners guide to SQL](https://www.sohamkamani.com/blog/2016/07/07/a-beginners-guide-to-sql/)
171+
does a good job explaining the main keywords used in SQL statements
172+
such as `SELECT`, `WHERE`, `FROM`, `UPDATE` and `DELETE`.
173+
174+
* [SQL Tutorial](https://sqlzoo.net/) teaches the SQL basics that can be
175+
used in all major relational database implementations.
176+
177+
* [Life of a SQL query](https://numeracy.co/blog/life-of-a-sql-query)
178+
explains what happens both conceptually and technically within a
179+
database when a SQL query is run. The author uses
180+
[PostgreSQL](/postgresql.html) as the example database and SQL syntax
181+
throughout the post.
182+
183+
* [A Probably Incomplete, Comprehensive Guide to the Many Different Ways to JOIN Tables in SQL](https://blog.jooq.org/2017/01/12/a-probably-incomplete-comprehensive-guide-to-the-many-different-ways-to-join-tables-in-sql/)
184+
elaborates on one of the trickiest parts of writing SQL statements
185+
that bridge one or more tables: the `JOIN`.
172186

173187
* [Writing better SQL](http://www.craigkerstiens.com/2016/01/08/writing-better-sql/)
174188
is a short code styling guide to make your queries easier to read.
175189

176-
* [A one size fits all database doesn't fit anyone](https://www.allthingsdistributed.com/2018/06/purpose-built-databases-in-aws.html)
177-
explains Amazon Web Services' specific rationale for having so many types
178-
of relational and non-relational databases on its platform but the article
179-
is also a good overview of various database models and their use cases.
190+
* [SQL Intermediate](https://www.dataquest.io/blog/sql-intermediate/) is a
191+
beyond-the-basics tutorial that uses open data from the
192+
[US Consumer Financial Protection Bureau](https://www.consumerfinance.gov/)
193+
as examples for counting, querying and using views in PostgreSQL.
194+
195+
196+
### General database resources
197+
* [How does a relational database work?](http://coding-geek.com/how-databases-work/)
198+
is a detailed longform post on the sorting, searching, merging and other
199+
operations we often take for granted when using an established relational
200+
database such as PostgreSQL.
201+
202+
* [Databases 101](https://thomaslarock.com/2018/07/databases-101/) gives a
203+
great overview of the main relational database concepts that is relevant
204+
to even non-developers as an introduction.
205+
206+
* [Five Mistakes Beginners Make When Working With Databases](http://www.craigkerstiens.com/2016/06/07/five-mistakes-databases/)
207+
explains why you should not store images in databases as well as why to be
208+
cautious with how you normalize your schema.
180209

181210
* [DB-Engines](http://db-engines.com/en/ranking) ranks the most popular
182211
database management systems.
183212

184213
* [DB Weekly](http://dbweekly.com/) is a weekly roundup of general database
185214
articles and resources.
186215

216+
* [Online migrations at scale](https://stripe.com/blog/online-migrations)
217+
is a great read on breaking down the complexity of a database schema
218+
migration for an operational database. The approach the author's team
219+
used was a 4-step dual writing pattern to carefully evolved the way
220+
data for subscriptions were stored so they could move to a new, more
221+
efficient storage model.
222+
223+
* [A one size fits all database doesn't fit anyone](https://www.allthingsdistributed.com/2018/06/purpose-built-databases-in-aws.html)
224+
explains Amazon Web Services' specific rationale for having so many types
225+
of relational and non-relational databases on its platform but the article
226+
is also a good overview of various database models and their use cases.
227+
228+
* [SQL is 43 years old - here’s 8 reasons we still use it today](https://blog.sqlizer.io/posts/sql-43/)
229+
lists why SQL is commonly used by almost all developers even as the
230+
language approaches its fiftieth anniversary.
231+
232+
* [SQL keys in depth](https://begriffs.com/posts/2018-01-01-sql-keys-in-depth.html)
233+
provides a great explanation for what primary keys are and how you
234+
should use them.
235+
236+
* [Exploring a data set in SQL](https://tapoueh.org/blog/2017/06/exploring-a-data-set-in-sql/)
237+
is a good example of how SQL alone can be used for
238+
[data analysis](/data-analysis.html). This tutorial uses Spotify data
239+
to show how to extract what you are looking to learn from a data set.
240+
187241
* [Databases integration testing strategies](https://julien.danjou.info/blog/2014/db-integration-testing-strategies-python)
188242
covers a difficult topic that comes up on every real world project.
189243

‎content/pages/03-data/05-object-relational-mappers.markdown‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ statements or stored procedures.
2525

2626
For example, without an ORM a developer would write the following SQL
2727
statement to retrieve every row in the USERS table where the
28-
``zip_code`` column is 94107:
28+
`zip_code` column is 94107:
2929

3030
SELECT * FROM USERS WHERE zip_code=94107;
3131

‎content/pages/03-data/12-mongodb.markdown‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,11 @@ security controls so make sure to lock down your instances.
7979
each of the items on the
8080
[official MongoDB security checklist](https://docs.mongodb.com/manual/administration/security-checklist/).
8181

82+
* [The definitive guide to MongoDB security](https://opensource.com/article/19/1/mongodb-security)
83+
is a high-level overview for the multitude of tasks you must perform
84+
to lock down your MongoDB instances, such as appropriately using SSL
85+
certificates and access-control lists.
86+
8287
* [MongoDB Security Basics For Your Deployments in AWS](https://www.mongodb.com/blog/post/mongodb-security-basics-for-your-deployments-in)
8388
is primarily a guide on AWS security from the perspective of using
8489
installing and using MongoDB on your own instance. The post covers

‎content/pages/04-web-development/23-javascript.markdown‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,19 @@ which is defined by the
9898
and then relates JavaScript evolution since the mid-90s to explain the
9999
history of the problem.
100100

101+
* [How JavaScript works: the rendering engine and tips to optimize its performance](https://blog.sessionstack.com/how-javascript-works-the-rendering-engine-and-tips-to-optimize-its-performance-7b95553baeda)
102+
is one particularly relevant post in a multi-part series that explains
103+
how you can optimize slower JavaScript code to better suit the JS engines
104+
in common web browsers.
105+
106+
* [How to reduce the impact of JavaScript on your page load time](https://engineering.gosquared.com/improve-javascript-page-load-time)
107+
provides insight into minimizing the size and improving the download
108+
and execution speed for JavaScript libraries, especially ones that are
109+
used at scale by many websites.
110+
111+
* [Learn JS data](http://learnjsdata.com/) teaches how to manipulate data
112+
using JavaScript in a browser or on the server using Node.js.
113+
101114

102115
### JavaScript learning checklist
103116
1. Create a simple HTML file with basic elements in it. Use the

‎content/pages/04-web-development/45-microservices.markdown‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ ease further development and deployment. This approach is called the
5252
provides some advice on using microservices in a fairly early stage of
5353
a software project's lifecycle.
5454

55+
* [Why Microservices?](https://dev.otto.de/2016/03/20/why-microservices/)
56+
presents advantages microservices can bring to an existing monolithic
57+
application where it is clear what needs to be broken down into smaller
58+
components to make it easier to iterate and maintain.
59+
5560
* [Developing a RESTful microservice in Python](http://www.skybert.net/python/developing-a-restful-micro-service-in-python/)
5661
is a good story of how an aging Java project was replaced with a
5762
microservice built with Python and Flask.
@@ -89,3 +94,8 @@ ease further development and deployment. This approach is called the
8994

9095
* In the [Microservices with Docker, Flask, and React](http://testdriven.io/) course, you will learn how to quickly spin up a reproducible development environment with Docker to manage a number of microservices. Once the app is up and running locally, you'll learn how to deploy it to an Amazon EC2 instance. Finally, we'll look at scaling the services on Amazon EC2 Container Service (ECS).
9196

97+
* Zuul is open source proxy for combining multiple microservices into a
98+
unified API call. Check out this post on
99+
[Using Netflix Zuul to Proxy your Microservices](https://blog.heroku.com/using_netflix_zuul_to_proxy_your_microservices)
100+
to learn more and get started using it.
101+

‎content/pages/06-devops/11-caching.markdown‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,15 @@ A cache can be created for multiple layers of the stack.
5151
[downsides to caching](https://msol.io/blog/tech/2015/09/05/youre-probably-wrong-about-caching/)
5252
that many developers fail to take into consideration.
5353

54+
* [Caching at Reddit](https://redditblog.com/2017/1/17/caching-at-reddit/)
55+
covers monitoring, tuning and scaling for the very high scale
56+
[Reddit.com](https://www.reddit.com/) website.
57+
58+
* [Mastering HTTP caching](https://blog.fortrabbit.com/mastering-http-caching)
59+
provides more advanced advice on caching dynamic as well as static
60+
content via CDNs and other configurations.
61+
62+
5463

5564
## Caching learning checklist
5665
1. Analyze your web application for the slowest parts. It's likely there are

‎content/pages/06-devops/14-logging.markdown‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,10 @@ certain threshold.
140140
shows how to log errors more accurately to pinpoint the problem instead of
141141
receiving generic exceptions in your logs.
142142

143+
* [Python and Django logging in plain English](https://djangodeconstructed.com/2018/12/18/django-and-python-logging-in-plain-english/)
144+
is a wonderful overview of how to configure logging in
145+
[Django](/django.html) projects.
146+
143147

144148
## Logging learning checklist
145149
1. Read how to integrate logging into your web application framework.

‎content/pages/meta/00-change-log.markdown‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,13 @@ on GitHub.
1515

1616

1717
## 2019
18+
### February
19+
* Refreshed the [relational databases](/databases.html) page with new
20+
resources and removed some out-of-date ones.
21+
1822
### January
23+
* Merged [PR #202](https://github.com/mattmakai/fullstackpython.com/pull/202)
24+
to fix a typo on the [web frameworks](/web-frameworks.html) page.
1925
* Updated the [source control](/source-control.html) page with more
2026
resources.
2127
* Added new post on the

0 commit comments

Comments
 (0)