Hey, Threadiverse! I’m looking for informed opinions on database choices.
I can stand up an Internet-facing application and have it use either MySQL or PostgreSQL. Which is the better choice, and why do you think so?
Thanks!
Avoid MySQL and MariaDB at all cost.
I used MariaDB for school projects, what exactly is wrong with it? Asking because I’m just unaware
While there was a time, where those databases were considered “good”, they are only this famous because they have been free or open source for ages. Professors love open source stuff. This does not necessarily mean it is a good product in terms of database functionality. They have been stuck in the old age and simply get outperformed by almost anything. Professors also hate to change their slides and to learn something new. Because their priority is on functionality, not on real world use. And when you want to use a product in the real world, non-functional properties gain a lot of value. One of them is performance.
If you want to have a fast, reliable, open source database, use ClickHouse.
Generally speaking, if a professor recommends something, it probably sucks. Their information is incredibly outdated and is usually whatever they used in their own undergrad program.
At school I learned:
- Java
- PHP
- MySQL
- C#
- C++
- Racket (Lisp)
Each of those has a better alternative, with C# being the least bad. For example:
- Java -> Kotlin
- PHP -> Python
- MySQL -> SQLite or Postgres
- C# -> Python (desktop QT GUIs) or web stack (e.g. Tauri for desktop web stack)
- C++ -> Rust (non-games) or a game engine
- Lisp -> Haskell
Formal education is for learning concepts, learn programming languages and tools on your own.
Click house is for OLAP workloads
It was. Now compare the benchmark of OLTP tasks and you will be surprised
This sounds like a smear campaign from a competitor.
I’ve been using mysql and mariadb in my homelab for years and have not enountered any issues. I don’t really know postgresql, so if I was to choose one, I’d go with MySQL/MariaDB.
The question was for an internet facing application, not a homelab.
As someone who has dealt with MariaDB in production, I would certainly look elsewhere. Haven’t had any colleagues who would disagree…
You’re appealing to authority instead of presenting real arguments.
Smear campaign with an open source product? Are you sure you still have a working organ between your ears?
That being said, my recommendation is based on using databases in big data environments for 15 years. But I am glad that your home lab is working fine with MariaDB. Does not mean it is a good product. And your comment just proves my point.
Many things, too many to even remember.
Very bad SQL implementation is a good start, still bad replication support (compared to Postgres), various bugs present for too long…
https://www.sql-workbench.eu/dbms_comparison.html this comparison is a bit out of date, but explains a lot
PostgreSQL is the more feature rich, but if you don’t care about all those features like saving and searching in json structures, Geo data structures and a to of other stuff because you have a simple APO then MySQL is good enough, maybe even SQLite.
Its query planner is also much, much more powerful. Like it’s not even close.
There’s hardly any good reason to use MySQL today. Postgres is easier and nicer to work with, with a strong community backing it.
SQLite is completely different from both and has entirely different usecases.
Postgres also had the advantage of great support for JSON elements, which gives you the power of a no-sql system like mongo in the package. A major selling point if your schema is evolving.
As someone that admins hundreds of MySQL at work, I’d go with PostgreSQL.
Yeah, every time I find some weird annoying behavior or some missing feature in MySQL, PostgreSQL is doing it right.
That said, also ask yourself if you really need a relational database, or whether an object store or append-only / timeseries db would fit better.
Same.
Another vote for Postgres, MySQL kind of blows.
You aren’t exposing the database right?
Postgres is a more robust and better designed and developed product, also it’s not owned by fucking Oracle.
Choosing is not so much about whether it’s internet facing or not. From the programmer’s perspective and an administrator’s perspective there are pros and cons to both. As someone looking to self-host, if you want to run a service that works with either, I would make the choice based on what seems the most supported, or which one you feel the most comfortable looking up and performing administrative tasks on. I tend to use postgresql more just because I have more experience with it and can recommend it if that’s what you need, but mysql can be just as good or better in many circumstances. Pick whichever one looks easier to you.
Maria database is free and open source. It uses MySQL format.
Maria database is free and open source.
Why are you implying that PostgreSQL isn’t?
Well mySQL certainly is not, I judge this to be a correct statement!
Actually, really good point. Sorry, person-I-responded-to. I thought you (PIRT) were comparing Maria to Postgres, when you (PIRT) were referring to Maria vs MySQL.
Both PostgreSQL and MariaDB are OSS and free; MySQL is covered with cooties and boogers, and you don’t want to get any of it on you.
Hi, I’m actually the guy you’re trying to respond to but yes that is exactly what I was trying to State
Maria is MySQL. More specifically it is a fork with many additional features.
Absolutely depends on what do you want it for and what resources can you apply on it (learning, set-up, etc).
That said, MySQL is owned by Oracle. The more-or-less blessed alternative IIRC is MariaDB.
It’s not My SQL, it’s Orcales.
TheirSQL
Who’sSQL?
Postgres. It’s more strict by default, which leads to a lot fewer surprises.
Here’s my rule of thumb:
- SQLite - if it’s enough
- Postgres
- MariaDB - if you don’t care about your data and just want the thing to work
- MySQL - if you sold your soul to Oracle, but still can’t afford their license fee
I have historically gone with PostgreSQL and had no complaints. The licensing issues concerning MySQL also give one pause (Oracle are greedy bastards who will use any excuse to extract money from captive customers, so depending on their properties is to be avoided). Having said that, these days, SQLite is probably sufficient for many workloads and has the advantage of not requiring a database server.
The only reason I wouldn’t go with Postgres is if I planned to do other things on the same machine. MariaDB/MySQL has been around forever. You may find something that requires it — Wordpress1, for example, requires MariaDB (or MySQL but use MariaDB) and doesn’t support Postgres.
Also, there’s solutions like Docker containers if you are running multiple things on the same server. But if you’re just learning and putting one thing on a Raspberry Pi as a project or whatever, you don’t need to learn Docker yet.
1 I’m not recommending Wordpress. It’s ancient and has security issues all the time. But over 40% of sites on the Net still use it in some form. (I mean Wordpress.org, the open source project. The Wordpress company seems to be having some “crazy CEO” drama at the moment.)
Postgres, hands down. It’s far better than MySQL in every way.
I’d choose which ever one is not PostgreSQL.
Then you’d be wrong. Unless you pick SQLite and that’s all you need.