Skip to content

Commit e256444

Browse files
committed
new mysql resources and fixed old ones
1 parent c696fe9 commit e256444

File tree

1 file changed

+37
-15
lines changed

1 file changed

+37
-15
lines changed

content/pages/03-data/03-mysql.markdown

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ meta: MySQL is an open source database often used by Python developers for stori
1111
MySQL is an open source [relational database](/databases.html)
1212
implementation for storing and retrieving data.
1313

14-
<img src="/img/logos/mysql.png" width="100%" alt="MySQL logo." class="technical-diagram" />
14+
<img src="/img/logos/mysql.png" width="100%" alt="MySQL logo." class="shot">
1515

1616

1717
## MySQL or PostgreSQL?
@@ -72,6 +72,7 @@ drivers along with whether it supports Python 2, 3 or both.
7272
## What organizations use MySQL?
7373
The database is deployed in production at some of the highest
7474
trafficked sites such as
75+
[Uber](https://eng.uber.com/mysql-migration/),
7576
[Twitter](https://blog.twitter.com/2012/mysql-twitter),
7677
[Facebook](https://www.facebook.com/notes/facebook-engineering/mysql-and-database-engineering-mark-callaghan/10150599729938920)
7778
and [many others major organizations](http://www.mysql.com/customers/).
@@ -83,10 +84,20 @@ database by
8384
[Wikipedia](http://www.zdnet.com/wikipedia-moving-from-mysql-to-mariadb-7000008912/)
8485
and [Google](http://readwrite.com/2013/09/14/google-waves-goodbye-to-mysql-in-favor-of-mariadb).
8586
MySQL remains a viable database option but I always recommend new Python
86-
developers learn PostgreSQL if they do not already know MySQL.
87+
developers learn [PostgreSQL](/postgresql.html) if they do not already know
88+
MySQL.
8789

8890

8991
### Python-specific MySQL resources
92+
The following resources show you how to work with MySQL in your
93+
Python code either directly through SQL queries or less directly with an
94+
[object-relational mapper (ORM)](/object-relational-mappers-orms.html)
95+
like [SQLAlchemy](/sqlalchemy.html) or the [Django ORM](/django-orm.html).
96+
97+
* [Python MySQL tutorial](https://pynative.com/python-mysql-tutorial/)
98+
uses the MySQL Connector Python library to demonstrate how to run
99+
queries and stored procedures in your Python applications.
100+
90101
* [Python 3.4.0 with MySQL database](http://stackoverflow.com/questions/23376103/python-3-4-0-with-mysql-database)
91102
and
92103
[Python 3 and MySQL](http://stackoverflow.com/questions/4960048/python-3-and-mysql)
@@ -97,16 +108,19 @@ developers learn PostgreSQL if they do not already know MySQL.
97108
is a blog post about specific deficiencies in MySQL's implementation that
98109
hinder its usage with Django's ORM.
99110

100-
* [Graph Data From MySQL Database in Python](http://moderndata.plot.ly/graph-data-from-mysql-database-in-python/)
101-
is an interesting study with code of how to pull data out of MySQL and graph
102-
the data with Plotly.
103-
104111
* [MySQL Python tutorial](http://zetcode.com/db/mysqlpython/) uses the
105112
MySQLdb driver to connect to a MySQL server instance and shows some
106113
examples for inserting and querying data.
107114

115+
* [Graph Data From MySQL Database in Python](http://moderndata.plot.ly/graph-data-from-mysql-database-in-python/)
116+
is an interesting study with code of how to pull data out of MySQL and graph
117+
the data with Plotly.
118+
108119

109120
### General MySQL resources
121+
There are many programming language agnostic tutorials for MySQL.
122+
A handful of the best of these tutorials are listed below.
123+
110124
* [How to Install and Use MySQL on Ubuntu 16.04](/blog/install-mysql-ubuntu-1604.html)
111125
is a quick tutorial for getting up and running on Ubuntu Linux.
112126

@@ -117,8 +131,8 @@ developers learn PostgreSQL if they do not already know MySQL.
117131
doesn't have the most original title but it's a good walkthrough of your
118132
first few steps in MySQL for creating users and working with tables.
119133

120-
* [Pinterest open sourced many of their MySQL tools](https://engineering.pinterest.com/blog/open-sourcing-pinterest-mysql-management-tools)
121-
to manage instances of the database.
134+
* [mycli](https://www.mycli.net/) is a command line interface for MySQL
135+
that includes command completion and other super handy features.
122136

123137
* [Bye Bye MySQL & MongoDB, Guten Tag PostgreSQL](https://www.userlike.com/en/blog/2015/10/09/bye-by-mysql-and-mongodb-guten-tag-postgresql)
124138
goes into details for why the company Userlike migrated from their MySQL
@@ -128,11 +142,6 @@ developers learn PostgreSQL if they do not already know MySQL.
128142
a story about how one company went through dramatic growth and had to keep
129143
up with it by quickly scaling their MySQL database.
130144

131-
* [Tracker: Ingesting MySQL data at scale - (Part 1)](https://engineering.pinterest.com/blog/tracker-ingesting-mysql-data-scale-part-1)
132-
is the first blog post in a series explaining Pinterest's tool to
133-
load large volumes of data into MySQL from other internal sources
134-
such as Kafka and Redis.
135-
136145
* [Monitoring MySQL metrics](https://www.datadoghq.com/blog/monitoring-mysql-performance-metrics/)
137146
is the first of a three part series, with the other parts on
138147
[collecting metrics](https://www.datadoghq.com/blog/collecting-mysql-statistics-and-metrics/)
@@ -141,8 +150,21 @@ developers learn PostgreSQL if they do not already know MySQL.
141150
metrics you should be collecting and monitoring in your production
142151
database along with the purpose for why those metrics are important.
143152

144-
* [gh-ost](https://github.com/github/gh-ost) is a schema migration
153+
* [gh-ost](https://githubengineering.com/gh-ost-github-s-online-migration-tool-for-mysql/)
154+
([source code](https://github.com/github/gh-ost)) is a schema migration
145155
tool built by GitHub and open sourced to the development community.
146156
The advantages of gh-ost are sustainable workloads on the master node
147157
to allow it to keep serving inbound query requests and the ability
148-
to pause the migration.
158+
to pause the migration. The post on how to use gh-ost pairs nicely with
159+
GitHub's detailed write-up on how they perform backups, failover and
160+
schema migrations in
161+
[MySQL infrastructure testing automation at GitHub](https://githubengineering.com/mysql-testing-automation-at-github/).
162+
163+
* The
164+
[unofficial MySQL optimizers guide](http://www.unofficialmysqlguide.com/)
165+
is intended for experienced developers who need to get better performance
166+
out of MySQL for their specific use cases.
167+
168+
* [The Ultimate Postgres vs MySQL Blog Post](https://dev.to/dmfay/the-ultimate-postgres-vs-mysql-blog-post-1l5f)
169+
provides comparisons of data types, default values, arrays, joins and
170+
many other differences between MySQL and PostgreSQL.

0 commit comments

Comments
 (0)