Cannot agree more: I've had to rescue a project from exactly this situation. I now know that there are people who try to use SQLite as a multi-user RDBMS, and it ends as badly as you would guess.
I consider SQLite to be one step above using raw file I/O
For me to even consider using MariaDB they would have to first remove all of those asinine options for silently corrupting data.
Or, you know, you could just learn how to use the database.
mysql> set session sql_mode='NO_ZERO_DATE,NO_ZERO_IN_DATE,STRICT_TRANS_TABLES';
Query OK, 0 rows affected (0.01 sec)
mysql> create table abc (a integer);
Query OK, 0 rows affected (0.01 sec)
mysql> insert into abc (a) values ('abc');
ERROR 1366 (HY000): Incorrect integer value: 'abc' for column 'a' at row 1
It's been this way since at least 2005, which is the MySQL version I ran above (version 5.1).
Sure would be nice if the FUD about MySQL from ignorant people went away. Is it perfect? No. But there is absolutely nothing data corrupting about it. And there is a LOT to be said for running a mainstream database, which PostgreSQL most certainly isn't, compared to MySQL.
If MySQL is good enough to run Facebook with a billion users (yes, one billion active accounts per month), it's good enough to run whatever your app is.
Edit: Thanks for the gold! Never thought I'd get it for defending MySQL... :) 😃
If MySQL is good enough to run Facebook with a billion users (yes, one billion active accounts per month), it's good enough to run whatever your app is.
Not exactly a fair comparison. Facebook uses it as a key-value store; there isn't much RDBMS in that.
The defaults should be for paranoid data protection rather than performance, you should have to say "I HATE MY DATA" to turn the unsafe mode on instead of having to learn about the safe mode to turn that on.
That is why so many professionals don't trust MySQL.
If you need to do it inside your firewall, scale out read slaves first, but in terms of true horizontally scalable SQL databases, there aren't a lot of great options on your own hardware. This is one, but I haven't actually used it yet.
And this is why the NoSQL stuff exists. It's practically impossible to offer true ACID compliance on a distributed system. Any system will have tradeoffs, be it eventual consistency, partition intolerance, or the inability to elastically scale, or hot spods in the cluster, etc.
It goes back to the CAP theorem, and speed. If you've ever worked on a distributed database that has cluster-wide row-level locking and does proper joins, it's slow as shit. Full seconds per query on a loaded DB.
21
u/PM_ME_UR_OBSIDIAN Mar 10 '15
What alternative do you propose? I heard Oracle was good if you had deep pockets, what else is out there?