[HN Gopher] MySQL for Developers
___________________________________________________________________
MySQL for Developers
Author : AYBABTME
Score : 294 points
Date : 2023-03-21 15:05 UTC (7 hours ago)
(HTM) web link (planetscale.com)
(TXT) w3m dump (planetscale.com)
| KronisLV wrote:
| It's really nice to see more content for MySQL/MariaDB still
| being made, since it feels like they are still good solutions for
| a whole variety of situations! While I might look in the
| direction of PostgreSQL for more advanced in-database processing,
| for most CRUD apps the aforementioned two are going to be more
| than enough!
| hu3 wrote:
| > _While I might look in the direction of PostgreSQL for more
| advanced in-database processing, for most CRUD apps the
| aforementioned two are going to be more than enough_
|
| I see this sentiment often here on HN. Something long the lines
| of "MySQL is enough for small apps but you want PotgreSQL for
| serious work."
|
| When in practice I find the opposite to be true. PotgreSQL is
| hard to scale and hard to upgrade when compared to MySQL. I
| mean, just take a look at the caliber of companies that
| leverage MySQL at scale using Vitess to orchestrate it
| (spoiler, it powers Youtube, GitHub, Slack, Shopify and more):
|
| https://planetscale.com/vitess
|
| What's PostgreSQL comparable list?
| mulmen wrote:
| > What's PostgreSQL comparable list?
|
| Netflix, Uber, Instagram, Spotify, Skype, Reddit, Twitch,
| Yahoo.
| KronisLV wrote:
| > What's PostgreSQL comparable list?
|
| I'm sure that others can comment on that, but in my
| experience PL/pgSQL is the killer feature that's hard to beat
| in PostgreSQL, for those cases where you want to store some
| amount of logic in the database itself (MySQL stored
| procedures feel a bit more limited). That said, it's not even
| the only procedural language that is available:
| https://www.postgresql.org/docs/current/xplang.html
|
| In addition, working with JSON in PostgreSQL can be pretty
| nice for niche use cases, as is using PostGIS for geospatial
| data, in addition to some of the REST (e.g. PostgREST) or
| GraphQL (e.g. PostGraphile) projects, if you want to interact
| with the database as something that exposes web endpoints to
| let you retrieve and manipulate data directly, as opposed to
| just SQL communication with some back end.
|
| That's not to say that MySQL or MariaDB don't have their own
| great offerings, but it's clear that PostgreSQL has gotten a
| lot of love in regards to people developing various
| integrations and extensions. That said, usually not needing
| the equivalent of PgBouncer out of the box is nice and
| personally MySQL Workbench feels better than pgAdmin due to
| the advanced ER functionality (forwards/backwards engineering
| and schema synchronization, so that you can create versioned
| DB migrations more easily if you write them in plain SQL).
|
| Edit: as for some crowd sourced data, a quick search turned
| up this from a few years ago:
| https://learnsql.com/blog/companies-that-use-postgresql-
| in-b...
|
| But then again, all of the mentioned RDBMSes have proven
| themselves as viable for a variety of projects.
| AYBABTME wrote:
| If by "advanced in-database processing" you mean stuff like
| PostGIS, then yes PostgreSQL is the right approach. But for
| most people building web-apps to scale, or established
| businesses who want to pick a solution and stick to it for
| basically ever, MySQL is much easier to scale. There's a ton of
| companies running MySQL at scale. I never heard of the same for
| Postgres, and for a long while I had an intellectual preference
| for Postgres as being the more "pure" implementation.
| Experience in the field showed me that MySQL, despite its
| flaws, is the name of the game.
|
| Further "evidence" by referring to other experienced folks who
| worked on scaling SQL databases, and MySQL is what's used and
| what folks have experience with: -
| https://twitter.com/Sirupsen/status/1602347646961606656
| - https://blog.nelhage.com/post/some-opinionated-sql-takes/#my-
| personal-choice-mysql
| paulryanrogers wrote:
| MySQL also has had major bugs in recent GA releases like
| crashing your server when renaming a table.
|
| PostgreSQL scales differently since it doesn't have redo-log
| based MVCC or other things as well. It does value correctness
| and has (mostly) better defaults. It has also had its own
| embarrassing bugs, though IME few put data integrity or
| availability at risk.
| aarondf wrote:
| Hey HN, I made this course :D
|
| The course is a bit more than 7 hours long split over 64 videos.
|
| I was always frustrated by the lack of intermediate database
| content, it seemed like it was mostly intro stuff, or straight to
| DBA level. So I read as many database books as I could, read
| through the official docs, and made this course specifically for
| application developers.
|
| If yall have any feedback I'd love to hear it. I'll be making
| updates soon, but not before I take a nice long break from
| editing video.
| jordanmoconnor wrote:
| Nice work! Congrats on shipping it
| asddubs wrote:
| Since you call it intermediate level, would you recommend it
| for people who are already familiar with the basics of MySQL?
| Would someone who has no problem formulating a query to get any
| given result from a database and knows the basics of how to
| create indexes still learn anything new from this?
| aarondf wrote:
| Yeah, I think you would still learn some good stuff! I go
| pretty deep into indexes and do some fun stuff with generated
| columns, windows, and CTEs. Based on your comment, you're the
| person I was hoping to hit! So if you do watch it, lemme know
| what you think
| mijustin wrote:
| This is well done! I can see that you've done your research:
| you've synthesized so much of the written material on MySQL
| (books, docs) in each lesson. Makes learning these concepts
| really accessible.
| aarondf wrote:
| Thank you Justin, that was 100% my intent so that's
| encouraging to hear. There is a _ton_ of good information,
| but man so much of it is irrelevant for application
| developers (as opposed to DBAs). Hopefully this fills that
| gap!
| geekodour wrote:
| Thanks for making this Aaron. content looks so good! just in
| time for me. Unfortunately getting "Sorry Because of its
| privacy settings, this video cannot be played here.", unsure
| what's up.
| aarondf wrote:
| Uh oh! That shouldn't be the case. Where are you viewing
| from? And what browser? I might need to change some settings
| in Vimeo
| geekodour wrote:
| Ah it's for sure some browser extension, it's playing fine
| in a FF private window. my bad. Will post back once I
| figure out what's causing it. Again, thanks for the awesome
| stuff!
| aarondf wrote:
| Whew, that's a relief. Keep me posted if you find out
| it's on our side.
| geekodour wrote:
| okay totally on my side: it was uMatrix :)
| https://github.com/gorhill/uMatrix/wiki/Per-scope-
| switches#r...
| SadWebDeveloper wrote:
| Quite difficult to review that many hours of video but from the
| syllabus there are probably some missing pieces, mainly stored
| procedures and triggers, yes i know MySQL sucks for that
| particular job and probably you didn't touch them because
| planetscale probably doesn't support them (not a planetscale
| dev but this is my wild guess).
|
| Also didn't see any topic on choosing the right
| charset/collation for the right data and why.
| aarondf wrote:
| Oh there are definitely missing pieces! I tried to cover the
| "meaty middle" of what application developers usually need to
| know. I did not cover stored procedures and triggers.
|
| I did cover CTEs and windows, which are not yet supported by
| PlanetScale. I also covered foreign key constraints, which
| are not yet supported by PlanetScale.
|
| As far as charset and collation, I cover that a bit in the
| "strings" video of the "Schema" section.
|
| Let me know if you have any other feedback!
| Aeolun wrote:
| But then, most devs wouldn't want their procedures inside the
| database anyway (with attendant lack of
| integration/versioning).
| ano88888 wrote:
| this is great. Thank you so much for your effort. Really
| appreciate it. By the way , if you are starting a startup, will
| you use mysql or postresql and why assuming you are equally
| good at both ?
| ndstephens wrote:
| This looks great!! Hopefully you can answer a couple questions
| for me.
|
| You mention you're using TablePlus. Doesn't look like it has a
| free option. Can you recommend another similar database GUI
| tool so I can "code along"? And is there a database I can
| connect to and work with? Maybe you answer these at some point
| in the course, but I didn't see anything in the intro.
|
| Also you mention this is for devs and not DBA's. Do you go over
| strategies for creating and "maintaining" a new db for a basic
| app? Or is this for a dev to work against a db that fully
| created and maintained by a DBA? I'm interested in using
| PlanetScale for hobby projects, so i'm currently trying to
| learn about not just using a db, but also being my own DBA (on
| a very small and basic scale).
|
| Thank you for the course and any feedback on my questions.
| aarondf wrote:
| Hey there! Looks like the TablePlus question was answered
| below. I don't cover connecting to a database and coding
| along, but that's a good idea. I'll see if I can get the
| sample data up somewhere for y'all to download.
|
| > Also you mention this is for devs and not DBA's. Do you go
| over strategies for creating and "maintaining" a new db for a
| basic app?
|
| We do spend a lot of time talking about schema up front
| actually! What it takes to design good tables, what data
| types to use, and so on. I talk at the end of the schema
| section about migrations and how you can use those to keep
| your tables up to date as business requirements change over
| time.
|
| I think if you use a hosted provider like PlanetScale, they
| (we) take care of a lot of the stuff that was traditionally
| the realm of the DBA, although maybe not all of it. I don't
| know exactly where to draw the DBA line to be honest.
|
| Let me know if you have any other questions! Happy to help
| however I can.
| saluki wrote:
| Table Plus (Free Trial Version) What are the limitations of
| the free trial? The free trial is limited to 2 opened tabs, 2
| opened windows, 2 advanced filters (filters are not available
| on the free TablePlus Windows) at a time. We can change the
| limitations without any notifications in the future releases.
| ndstephens wrote:
| Maybe i'm reading into their naming incorrectly. Free
| "trial" to me sounds like it's time based...as in after a
| week you can no longer use it and must buy. I'll give it a
| try.
| tough wrote:
| It's not time based, only feature based, if you don't
| need lots of open tabs you can survive it it's only a bit
| annoying
|
| Beekeeper Studio similarly has a (community edition) and
| it's GPLv3 licensed
| ndstephens wrote:
| thanks for the recommendation. will check it out
| MangoCoffee wrote:
| nice. i use MS SQL at work and MySql for personal project
| tracker1 wrote:
| Might be worth looking into PostgreSQL as well. It's just as
| readily containerized (docker) as well as being more ANSI
| compliant and consistent. I only say this because nearly every
| time I've ever used MySQL, I find annoyances.
|
| Such as the fact that 'utf8' isn't 'utf8', 'utf8mb4' is... the
| feature was in testing as utf8 was being standardized and mysql
| used 'utf8mb3', and never updated the reference for 'utf8' for
| compatibility, even across major versions.
|
| There's also the fact that collation on indexes for binary
| fields are case-insensitive if your default collation is, even
| if it's "binary".
|
| Also, PostgreSQL has nicer support, imo, for JSON (JSONB) data,
| as well as a rich extension ecosystem.
| johannes1234321 wrote:
| > Also, PostgreSQL has nicer support, imo, for JSON (JSONB)
| data, as well as a rich extension ecosystem.
|
| MySQL's JSON data type, which exists since 5.7, which is
| quite old, is a solutely comparable to PostgreSQL's JSONB.
| (But don't be confused by MariaDB, which is a MySQL fork,
| where JSON is an alias to MEDIUMTEXT or something like that
| with little snytax validation)
| mschuster91 wrote:
| PostgreSQL, however, is one hell of a PITA to upgrade.
| Keeping a cluster of MySQL machines alive is way easier than
| PostgreSQL, not to mention how easy it is to shoot yourself
| in the foot with its authentication mechanisms.
| manv1 wrote:
| PosgreSQL has its share of annoyances, like case preserving
| case insensitivity and inconsistent naming of its
| tools/config files.
|
| Nothing like trying to do a select on a table/column that you
| know is there and getting an error...becuase the table/column
| was created with quotes by your ORM so it doesn't
| automagically get case in-sensitized.
|
| It's maddening.
| anamexis wrote:
| I would never have expected any identifiers to be case
| insensitive, personally.
| tracker1 wrote:
| Can't really comment on the material... but a minor suggestion
| might be to have a section on ANSI-SQL statements and quotes, and
| where mySQL/MariaDB breaks the standard (such as foreign key
| references in table creation). As well as pointing out that you
| should use 'utf8mb4' for UTF-8, and not 'utf8' encoding.
| hogya006 wrote:
| I was always frustrated by the lack of intermediate database
| content, it seemed like it was mostly intro stuff, or straight to
| DBA level. So I read as many database books as I could, read
| through the official docs, and made this course specifically for
| application developers.
| swarnie wrote:
| What's up with this being a copy paste of a comment above also
| claiming to be the creator?
| aarondf wrote:
| Ha I was waiting for it to be edited, I thought they pulled
| the trigger too soon... but guess not?
| porker wrote:
| Does anyone know of a similar intro course for Clickhouse?
| tylerhannan wrote:
| Starting here is probably useful...
|
| https://learn.clickhouse.com/visitor_catalog_class/show/9134...
|
| But there is quite a bit on learn.clickhouse ;) And if
| something is missing, tell us.
| JonoBB wrote:
| I've just got started with Clickhouse, and their docs are
| excellent. Quick Start guide and tutorials are very well
| written.
|
| Also, be prepared to be blown away with Clickhouse. I've not
| seen many (any?) technologies that impressed me this much right
| out the box.
| pratikch1253 wrote:
| This is perfect I was looking for something like this will
| definitely be checking it out over this weekend one request
| please give us the training data set you use for this course so
| that we can follow along with all the sql queries you are typing.
| aarondf wrote:
| This is a great idea. Let me see how quickly I can get that
| done.
| michaelbuckbee wrote:
| This is outstanding.
|
| I've always felt that one of the big "level ups" that an app
| developer can do is get a better understanding of how databases
| work and how/when to leverage their features.
|
| The course kind of feels like cheating as it's so much less
| effort than slogging through all the books and failed projects
| you'd otherwise need to get the experience.
| Alifatisk wrote:
| The quality is astonishing, is this really for free?
| paxys wrote:
| The "cost" is that you may consider using Planetscale for your
| next project/company. So a win-win really.
| nbosscher wrote:
| This is amazing! I've been following Aaron's short database
| videos on Twitter and he is the real deal. Accessible,
| straightforward explanations of complex db stuff. I highly
| recommend checking this out.
| aarondf wrote:
| Thanks Nate! Excited to get back to _short_ form videos haha. I
| 'm done with long form for a little bit
| crooked-v wrote:
| A lot of devs should really be more familiar with plain ol' SQL
| databases. I've been at multiple companies where people have
| jumped to elaborate, gigantic, overcomplicated projects
| preemptively designed to scale to ten billion people, that could
| have instead been driven entirely by a single big MySQL or
| Postgres database set up in a day or two instead of a month.
| mjwhansen wrote:
| Awesome!
| mokkol wrote:
| Wow, that is some awesome quality & quantity. I can't believe
| this is for free!
|
| Well done!
| ingenika wrote:
| I don't know why lots of website use dark theme, I just found
| that dark theme is not very readable during daytime.
| whitepoplar wrote:
| Cool! Now we need this for Postgres.
| manv1 wrote:
| You mean postgres | postgreSQL | pg | pgsql?
| winrid wrote:
| Their product is for MySQL, so I doubt we'll see that soon.
| blowski wrote:
| The Art of Postgres is probably it.
| https://theartofpostgresql.com/
| systems wrote:
| The Art of Postgresql is a book not a video course And
| unfortunately they dont provide to table of content on the
| site
| paxys wrote:
| Also, while we may see $75 or $150 or whatever as throwaway
| money (especially in the context of professional help
| products or books), that price is wildly unaffordable for
| most of the planet. Having high-quality free educational
| material out there is a godsend for students and developers
| in low income countries.
| craigkerstiens wrote:
| The Art of PostgreSQL is great and super thorough.
| Knowing the author I can't fault him on price for the
| effort he put into it.
|
| But also your point of students and developers in low
| income countries completely understand that side. It's a
| shameless plug but we built our Postgres playground with
| tutorials on a number of topics which are completely free
| aiming to help target some of that audience -
| https://www.crunchydata.com/developers/tutorials
| elforce002 wrote:
| 100x this.
| acomjean wrote:
| I've been using MySQL. Is Postgres so different now that the
| SQL here won't work? (It may be that it's MYSQL that's
| different)
|
| I know there are some differences in SQL syntax, but in my case
| we use pretty basic sql...
| pphysch wrote:
| Outside of SQL they are different technologies.
|
| MySQL mingles its custom language with SQL which is a common
| point of confusion... Whom amongst us wasn't confused when
| "DESCRIBE" didn't work in SQLite or Postgres?
| FinalBriefing wrote:
| Are they really different technologies? It has always been
| my impression that they are the same tech, but they have a
| slightly different syntax in some places (DESCRIBE) and
| different levels of capabilities (Postgres offers more).
|
| If you know the core concepts of one, you are probably 80%
| good to go with the other.
| [deleted]
| wlll wrote:
| > Are they really different technologies?
|
| Yes, your impression is wrong.
| [deleted]
| [deleted]
| aarondf wrote:
| I agree, there's a huge desire for this! I don't know the first
| thing about Postgres though, so it's not gonna be me :)
|
| There's an opportunity for a creator here.
| benatkin wrote:
| TL;DR starting with a list of the data types before querying the
| data is putting the cart before the horse IMO.
|
| It seems a bit like DuoLingo. You learn a random assortment of
| facts, rather than being exposed to what people are actually
| doing. I learned MySQL by example and this is far from it. I
| don't recommend learning about the schema or the data types
| first, unless you're just being shown a CREATE TABLE statement
| with just the types you need in order to go through a CRUD
| example (having you start with a table that already exists and do
| a SELECT query first is also good). Otherwise, like with
| DuoLingo, you'll likely get bored, unless the reward mechanism
| grabs you. (DuoLingo is fully gamified. This has a bunch of short
| steps so you can watch yourself progress through them.)
| testudovictoria wrote:
| The creator posted this elsewhere in the comments:
|
| > _it seemed like it was mostly intro stuff, or straight to DBA
| level_
|
| This would have been perfect for someone like me a few years
| ago. I went into my first job knowing how to make simple
| queries and simple joins. I changed jobs into a legacy system
| where there was an overwhelming amount of data sharded across
| few databases and several hundred schemas.
|
| I didn't need to learn how to do simple joins or basic keywords
| like union and intersect that every tutorial talked about. I
| also didn't need a bunch of DBA knowledge like distribution
| strategies, replication, and HA techniques. I needed to learn
| how to leverage what was in the database to pull the exact data
| I needed more efficiently than what I was doing - windows,
| cursors, and good subqueries. I was the type of person being
| addressed.
| ksec wrote:
| It is nice MySQL finally reach the front page on HN. Considering
| MySQL is extremely unpopular among folks here.
|
| I will take this rare opportunity to ask, anyone knows when MySQL
| 9.0 is coming?
| realchrissean wrote:
| This is very well done Aaron. I'm curious how long did it take
| you to create this from start to finish?
| fasteo wrote:
| I am also curious
| aarondf wrote:
| Thank you! I shared a little about the process on twitter here:
| https://twitter.com/aarondfrancis/status/1638191349261377539.
|
| Start to finish... a long, long time. 18 months on and off, 4
| months full time. I started this before I was employed at
| PlanetScale and when I joined PS the course came along with me.
| I wouldn't have had the space to do it if it hadn't been my
| full time job. For the past four months or so I've been
| spending 100% of my work time on it, and much of my spare time.
|
| Part of what made it tough is that, while I've been comfortable
| with MySQL for a long time, _teaching_ it is a whole different
| thing. So I ended up having to study a _ton_. Lots and lots of
| videos trashed when I got to a point of explaining something
| and realized I didn't know it well enough to teach. Back to the
| docs to figure it out myself and then back to recording.
|
| I could do it again in about 1/3rd the time, but of course I
| could! I've done all the hard parts now! The actual recording
| and editing was of course hard, but the up front work to make
| sure I wasn't making stuff up was probably the biggest slog of
| it all.
| chernevik wrote:
| I've taught courses on SQL to newbies and learned a lot from
| it.
|
| My rule for the slide deck was "don't use a term you haven't
| explained". So I'd write a slide and check for new words. If
| I really needed them I'd have to add a slide before that
| introduced and explained the term.
|
| Figuring out exercises that got students oriented to the
| concepts was another trick. People really don't get stuff
| until they've done it for themselves.
|
| By the end of the second day I had people writing joins on
| their own.
| swyx wrote:
| this was both highly anticipated and has been excellently
| executed. incredible amazing work. thanks Aaron!
| aarondf wrote:
| Thanks swyx! Means a lot coming from you. We're lucky to have
| an incredible team at PlanetScale to help me pull off such a
| huge lift. We had maybe 5 or 6 people building out the website
| and 5 or 6 people that reviewed the content for technical
| accuracy. No way I could've done it solo.
| nidnogg wrote:
| Is this really free? I can't quite put my finger on it but it
| seems so...high quality?
|
| Kudos to Aaron though, will gladly dive in later on
| aarondf wrote:
| Haha thank you! I'm really grateful that everyone at
| PlanetScale gave me _so_ much time to work on this. We're
| really committed to doing everything as high quality as we can,
| even the free stuff. Let me know what you think!
| aculver wrote:
| Yeah, you're not alone. Aaron posted a thread on Twitter that
| shares the inside skinny on what it took to ship this course
| (https://twitter.com/aarondfrancis/status/1638191349261377539)
| but I had an early peek into the work he was doing on this
| course, and there was a clear inflection point in the project
| when he joined Planetscale and had the benefit of being able to
| focus a substantial amount of his time on it in addition to all
| the work other members of the team there were able to
| contribute to it. Very grateful that Planetscale unlocked this
| so it's available as a free resource instead of having to be
| behind a paywall to support its creator.
| ilrwbwrkhv wrote:
| Is there a full chapter by chapter contents?
| boboroshi wrote:
| This looks amazing. Definitely something I'm going to dive into
| and level up on my SQL skills.
| igtztorrero wrote:
| Super Tutorial !!! Thanks
___________________________________________________________________
(page generated 2023-03-21 23:00 UTC)