Why MySQL Grew So Fast
jpkunst writes "Andy Oram, who attended the MySQL Users Conference which was held April 16-18 in Orlando, Florida, attempts to explain MySQL's popularity in his weblog at oreillynet.com. (More weblogs about the 2004 MySQL Users Conference can be found at the The 2004 MySQL User's Conference & Expo Blog Collection.)"
It's too bad that poorly designed products like MySQL become the standard simply due to their wide adoption.
1. MySQL can be installed without cost.
2. MySQL is easy to install and learn.
"You spoony bard!" -Tellah
The best things in life are free.
I am what most people would consider a highly trained technical professional. Unlike most people who spout off at this site, I have the certificates to prove this, and furthermore they're issued by the biggest software company in existence.
I know how to tell facts from marketing fluff. Now, here are the facts as they're found by SEVERAL INDEPENDENT RESEARCH INSTITUTES:
Expenses for file-server workloads under Windows, compared to LinuxOS:
They compared Microsofts IIS to the Linux 7.0 webserver. For Windows, the cost was only:
Application development and support costs for Windows compared to an opensores solution like J2EE:
A full Windows installation, compared to installing Linux, on an Enterprise Server boxen:
Compared to the best known opensores webserver "Red Hat", Microsoft IIS:
These are hard numbers and 100% FACTS! There are several more where these came from.
Who do you think we professionals trust more?
--
Copyright (c) 2004 Mike Bouma, MCSE, MCDST, MS Office Specialist, widely respected Amigan
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
Mike Bouma
MCSE, MCSDT, Microsoft Office Guru, Well Respected VB Scripting Genius
FPROST0r PIZZT!!!
Use open source and get back your free dumb once and for all! You get to work for free for a dumb project! Yes that's right kids while all the jobs are off to India and Chinkland you get to write lunix for IBM and Oracle to profit from but get this : YOU DO IT FOR FREE!!!
PS : (FP dipshits)
n/t
of shitty fucking movabletype blogs. fuck off you conceited assholes
MySQL gets a lot of heat from the DBAs here (and probably with reason), but it's kind of like bashing MS Access -- it's useful enough for most small businesses.
Put identity in the browser.
They do not recognize "Postgres", or even know how to pronounce it. It sounds vaguely French and therefore un-American.
Yep, it is that simple.
Mysql is teh rulez and you are teh sux! AND YOU FAIL IT!!!!! GO MTL...BLOW LEAFS BLOW!!! bsd IS dead...Wind0ws are teh GAY!...uhhh....ITS A TRAP!!! oh shit wrong site....
2 reasons. LAMP and the fact that not everyone can afford or require for their tasks Oracle
The war with islam is a war on the beast
The war on terror is a war for peace
Because Microsoft SQL Server is not competing with yet another database system, they are competing with a new development paradigm. Microsoft SQL Server & Microsoft may have a market cap of half a trillion dollars, but the US economy puts out 12 trillion per year alone. If push comes to shove, it won't matter how big Microsoft SQL Serveris - they will get squished like a bug. I renember when IBM spent billions back in the 80's to push the their database system on the market place to try and squeese out the systems's already out there. It didn't matter how big they were either, they got hammered.
Because PostgreSQL takes longer to type :-)
Slashdot users complain that MySQL doesn't have the full feature set of some RDBMSes... but they miss the point. The reason MySQL has been succesfull precisely because it's been very good at delivering the features that a particular set of people need. To these users, additional features are a liability, not a feature.
This reminds me a lot of DBase III. (Bear with me here...)
DBase III wasn't a very good database program, but in its heyday millions of people used it and it got the job done for them. Even relatively inexperienced users could make use of it and write simple programs to manipulated their data. Even though it sucked, it was the right tool for a lot of jobs at the time.
Compared to DBase III, both MySQL and PostgreSQL are excellent. I wish I'd had either one a decade ago when I started work doing clipper programming for a dog track related publishing company.
For the dog track application I would have preferred Postgres; the rollback support would be pretty compelling for an application like the one we were doing. Rosebud is a sled, and Verbal is a huge liar. Darth Vader is Luke's father, and the Sixth Sense guy is actually dead. The planet of the apes is Earth, and Rocky loses. For something where I was just kicking around a database (Which I've also done a lot of) MySQL would be perfect. MySQL would be ideal in something like the RHS Orchid Registry, for instance.
If application bigotry keeps you from choosing the right tool for a job, you will be a less valuable resource to those who employ you. Not too many people seem to "Get" this. People are often surprised that I will, on occasion, suggest that Microsoft products are the best tool for what they're trying to do. Usually those people asked me expecting a "Windows sucks use Linux" spiel, but if I think their situation warrants it (Inexperienced user, just wants to browse the web, word process and send E-Mail or wants to play games at all) I'll tell them to use Windows.
In a nutshell, MySql is free. Is it great? Hell no, but it's free. The only deep understanding of human nature or the DB marketplace one needs to comprehend here is that given the choice between something great and expensive vs. something mediocre and free, the overwhelming majority will go for free.
MySql has always had huge problems preventing it from being accepted in the real "enterprise" marketplace, but most of us aren't in that market. Most of us need to yank a bit of data and cram it into a web page moderately quickly and as cheaply as possible. MySql does this quite well.
What doesn't MySql do well? For starters, it's much slower than Oracle, MS-Sql, and even Foxpro. It has no row locking, no transaction support, and minimal cross-platform compatibility. But, it's free and it works more or less ok on Linux.
Perhaps the real truth that Oracle fears is that eventually DBAs will come to realize that 99.9% of their storage needs aren't so "mission critical" as they would like to believe. I mean really, how many people out there can truely justify the cost of a full featured, robust database like MS-Sql? 10%? 5%?
For the rest of us, a free - albeit slightly dodgy - solution will work fine.
Not.
MySQL has always been fast. That is probably why most people use it.
MySQL has also been easy to manage (e.g. move database files from one subdirectory to another and the tables have also moved). That kind of simplicity brings tears to the eyes of an Oracle admin. There are a few options you can tune and teak, but by and large it just works out of the box (er, RPMs).
And of course the reason it has been so popular is that it has been so popular. If you get my circular drift. People use it because there is a lot of documentation about it. Perl and PHP pretty much always have the MySQL libraries so it can be used on web sites, etc.
Speacking of those subqueries, what's up with the delay getting 4.1 out from alpha to beta/gamma/production. I want to start using it. And 4.1 has been out in alpha for over a year now. Not to mention new development is already proceeding with the 5.0 release.
- Run the latest and greatest alpha MySQL database on your own VPS
Not everyone is a database elitist. Not everyone has to worry about transactions nor store procedures. Triggers are neat, but not always necessary. (Insert obligatory VHS/Beta comment here.)
What is great about MySQL is that it gives the average Joe or Ho with a machine a chance to build a database backed application of some sorts. Its cool. Its free. Its fun.
Now for all of those who have based their fragile nerd self esteem on their DB experience or knowledge need to turn off their computers and go down to the local bar and talk to the local people about local people's reality. Ya MySQL is not DB2 nor Oracle, but it is still pretty cool. And the fact that Monty has written the greater portion of it is pretty cool too.
Naysayers need to get laid!
mod down asap
For myself and many other college students, MySQL was a great system to play with SQL and experiment on. It's easy to setup on most systems, and it's also fairly easy to use (not to mention free). Don't get me wrong- I've used other systems that are much better than MySQL, but without MySQL to get my hands dirty, I'm not sure I would have bothered with anything else.
I'm mainly interested in the SAP and mySQL connection because I simply didn't know about it until I read this. I know it is a bit offtopic, but I recently attended ASUG 2004 (America SAP User Group) and I posted news about it to my site. Perhaps you'll be interested.
JavaScript, DOM, and Page Reloads
Usability Interview with David Clark of TandemSeven
More Observations on ASUG 2004
ASUG 2004 and RFID
How to Download YouTube Videos
It's FREE.
$49 for developer edition. You think that is expensive? Even the enterprise version is only $1200 or so (per CPU)... MUCH cheaper than Oracle
You forgot to add an important qualifier here - for a certain set of circumstances. MySQL is one of those products that is suitable for database content that isn't changing much - it's very fast reading from the database. The numbers change quite a bit when you're doing heavier work on the database, which is where Oracle & MS-SQL (or even PostGreSQL) come into their own.
MySQL still doesn't support triggers, and I like advantages of having support for varchars larger than 255 characters. Postgresql also supports the more standard method of an auto-number unique ID field of the sequence (and argueably more flexible). I _really_ like the flexibility of authentication that postgresql offers, though I haven't looked at MySQLs authentication as exensively.
MySQL has grown up a lot though. Given how primitive and featureless it used to be it's gotten much better where the differences between the two have become smaller.
AccountKiller
MySQL, even now, is actually rather sparse as database engines go: it lacks stored procedures, triggers, constraints, etc., in short many of the things that a serious DBA considers necessary in a database engine.
But the mission it was originally created for is a mission that's a very common one: a simple, network-enabled data store with a SQL interface. That it lacked transactional capabilities didn't really matter: it was good enough for what many people needed.
So its popularity exploded. In the free software world, there weren't any other contenders at the time that were sufficiently reliable or fast to do the job. PostgreSQL back then just wasn't fast enough, and tended to eat data. Not that MySQL was perfect in that regard, mind you, but at least MySQL gave you the tools to recover your data quickly in the event of a hiccup. PostgreSQL didn't -- it required you to do a full restore from backups, whereas MySQL let you use 'isamchk' to get you up and running quickly. That made a big difference to a lot of people.
Today the story is very different. PostgreSQL is at least as fast, if not faster, than MySQL in many situations, especially under load, and has essentially all the features needed to make it a "real" database: transactions, stored procedures, triggers, views, constraints, etc. About all it lacks now is built-in replication (there exist third-party solutions), nested transactions, and point-in-time recovery (a.k.a. archive logs), things which MySQL is not likely to get anytime soon.
Nevertheless, despite the fact that PostgreSQL is very much a superior solution in just about every respect, MySQL is more popular and thus has better third-party support. And it's thanks to the fact that it was in the right place, at the right time, with a "good enough" feature set.
Use 'slashdot stuff' in the subject line in any email you send me if you want to get past the spam filter.
It grew so fast 'cause it had a huge memory leak, of course. Fixed in the most recent version of course.
/. to go down all these times. Upgrade already, Mister Taco!
Like we never knew what was causing
The statement "move database files from one subdirectory to another and the tables have also moved" is a tautology. The tables are in the files, so of course they move.
"That kind of simplicity brings tears to the eyes of an Oracle admin." No, it doesn't. I'm an Oracle DBA, and I'm not crying because MySQL lets you move datafiles - so does Oracle. Typing "alter database rename datafile..." isn't exactly rocket science.
Oracle also works "out of the box", especially when it's used for the sort of applications that can make do with MySQL. Granted, big motherfucker DBs might need some basic memory tweaking, but small sites can generally get by with the default parameters.
MySQL is popular because it's free, and it meets the needs of certain users. That's all there is to it. It isn't better, and it isn't worse.
Please respond and indicate which category you fall into:
1) poo stabber
2) fudge packer
2) candy ass
3) teabagger
4) protein milkshake drinker
5) guy who likes man poo on his schlong
6) guy who likes fecal matter packed into his urethra so he can experience severe and painful infections
6) guy who likes gay sex despite the fact that it is far and away the highest mode of STD communication
7) all of the above
You probably also answered your own question. The reason why 4.1 is barely getting out of alpha is because 4.0 was their stable tree, and they're now working on their development tree, 5.0. My guess is they just don't have enough people who are willing to still work on 4.1, for 4.1 to be worthwhile. Wait for 5.0 is my advice.
"Victory means exit strategy, and it's important for the President to explain to us what the exit strategy is." G.W.Bush
OS. Now BSDI is a BSD ove8 other
I understand it's supposed to be better because it supports more ACID compliant features (and has for a long enough time to consider them stable). I just can't seem to get the hang of PG though. I far prefer the mysql command utility (and mysqladmin) over psql, I just find it easier to use. I also don't like the way PG handles users. I find it easier to add and modify users in MySQL and set their privileges with it's table method than PG which is more configuration based. I could figure everything out, but I've been too swamped lately to learn the in's and out's of PG. That's why I continue to use MySQL, because it fits my needs. Not PG's fault, but it's one of several reasons people still use MySQL.
-----
How can you have any pudding if you don't eat your meat?
Here's an 'embedded ask Slashdot' for everyone, as I haven't found such an animal online.
Is anyone aware of a quick guide/tutorial for MySQL that is aimed at Sybase administrators? It would definitely save me some time getting my act together with it...
Thanks...hopefully someone knows of such a beast!
meant to say 'can't figure out how to pronounce MySQL', not 'spell MySQL'. Dangit. I previewed it twice, saw nothing wrong, submitted it, saw the error.
Standing at the very edge of my imagination, I peered into the inky void and realised -- I couldn't think up a new sig.
apart from the fact that PostgreSQL wipes the floor with MySQL:
All u Gnome loving Qt hating hippies need to judge the MySQL licence in the same light - MySQL is licenced EXACTLY the same as Qt in that respect - doesn't that mean u should hate it just as much?
(oh - and PG forever - u losers can use MySQL all u like, i couldn't care less)
kudos
Remember when Reasoning, Inc audited the code? They found that it had 0.09 errors per 1,000 lines of code while proprietary competitors had 0.56 errors per 1,000 lines. That's more than 6 times as many errors in the proprietary databases. http://searchenterpriselinux.techtarget.com/origin alContent/0,289142,sid39_gci941817,00.html
Quality product. That is why it is popular. Perhaps you should research your argument before posting a flame next time.
bash: rtfm: command not found
I use it on my server. It has no problems that I can detect... Can you give any reasons that it sucks? Hmm? Thought NOT you moronic troll!
It was the simplest database at the time that was marketed well. Minisql was not marketed at all, and of course wasnt really opensource.
People need to use SQL and need something simple and fast. Postgresql is not optimised for simple web applications out of the box.
sqlite I think came much later, but would have fit the bill and IMHO would have taken Mysqls place early on. I know I was looking for something like sqlite making my simple website and mysql seemed to complex.
"Give orange me give eat orange me eat orange give me eat orange give me you." -Nim Chimpsky
Another reason is that so many (web) programs incorporated it, like vBulletin. it was free to use and easy to learn, and it was painless to deply on virtually any platform.
Over the years I have been a user on PostgreSQL, MySQL, Oracle, and MSSQL, and an admin on PostgreSQL and MySQL.
Having said that, I prefer MySQL and PostgreSQL to both Oracle and MSSQL, in most situations. However, given my experience with MySQL and PostgreSQL, I am glad that I have returned to PostgreSQL.
Why PostgreSQL? Simple. I am able to use referential integrity, triggers, and foreign keys in my databases. I can use subqueries, and more. There are certain databases where the data integrity is the important part. Having the database enforce that integrity is cheap insurance. Having transaction support, including rollbacks, are great for operations that affect multiple tables. I also like the way Postgres strives for SQL compliance.
MySQL is improving. Everytime I check they are getting more and more support of things I consider critical. Especially in the last 9 months to a year. But not yet enough for me.
I was involved in a fairly large scale production system that used MySQL as its heart. Unfortunately, at the time, PostgreSQL just did not have the performance that was needed. And, the main DBA was a mysql zealot. With MySQL, we seemed to constantly have to figure out creative work arounds for what MySQL lacked. Table level locking was a headache. No referential integrity and lack of transactions were a nightmare.
I still see MySQL as the better solution when you need to serve text files via SQL really really fast. But, when you need to provide a specific level of accountability and traceability, PostgreSQL is still my choice.
. 62,400 repetitions make one truth -- Brave New World, Aldous Huxley
What I posted wasn't a troll, it was the truth. Just because something pisses you off, doesn't mean it is a troll.
"On the other side of me, at that lunch, sat a database administrator whose facility is planning a migration from Oracle to MySQL"
Whatever moron made that decision needs to be outsourced to India. Thats sort of like trading in a shiny BMW for a freakin go-cart.
Sure, MySQL has gotten better, has always been speedy and is great for down and dirty webservices. But the bottom line is still the same: It's not a **real** database. Transactions? Stored Procedures? Triggers? Schemas? Groups? Views? Uhhhh Hello!!!
Granted, MySQL is popular; just about every cheapo hosting service has installed it and offers it up as part of their base level $20.00 a month hosting pack.
Being a seasoned webdeveloping gun for hire I deal with online data services all the time. Time and time again I use postgreSQL.
Sure, the client always brings up the MySQL question, but when I show them what can be done with postgreSQL and what can't with MySQL it becomes glaringly obvious that MySQL is __NOT__ the tool to use if you have any real service to offer or data to mine.
For all you MySQL advocating web developers out there:
If you put all the SQL functionality where it should be -- in the database -- and not the middleware you'd never even think of MySQL as a real alternative, because MySQL doesn't support that.
That's excellent! The arrogance of the MySQL developers is astounding. Do you happen to have a link with that documentation for posterity?
(Moderators, feel free to mod me down, but please mod up the anonymous parent. Thanks.)
One of the reasons why MySQL wins on PGSql is it Win32 support. We may not all like windows, but a lot of people use it, MySQL has addressed this market, PGSql still dosen't
I think it does have a lot to do with the name.
MySQL, maybe it is My-Ess-Que-Ell or maybe it is My-Sequel, but Postgresql? Postgr-ehz-Que-Ell? Postgreh-Sequel, Postgray-Que-Ell? (Does sound vaguely French.) Ugh! (Nothing against French.) Hate the name, but love the program. Although it seemed that there were more people choosing MySQL over Postgresql when I started evaluating the two, there were two key features that led me to choose Postgres(whatever) over MySQL
1) Views (How can you have a/an SQL database and not support views!)
2) Free license for corporate use
So, if I chose to work with MySQL I would have to give up using views. Also, if I wanted to use it at work, I would have to convince the boss to buy a license. On the other hand if I worked with Postgres(whatever), I got views, and did not have to persuade the boss to part with any money. So it was 2 minuses in the MySQL column, versus 2 pluses in the Postgres column and the Ayes have it. After MySQL changed their license, inertia kept me going forward with Postgres (and MySQL's lack of views and triggers).
Now that MySQL has a GPL version, it is less of an issue, but at first, it was free for non-profit use only (or so I understood), while Postgres was free for any use. It surprised me that so many would choose the non-free / less free license.
I for one cannot understand how anybody can do *any* serious database work without views and subqueries (the latest MySQL alphas/betas have support for subqueries). The whole relational theory is (almost) broken without these.
To me that's mindboggling. Without that I'd rather use berkeley DB or flat files to load and store my data. How do you do row-level security without views, what about column security. Or just different views for different users. These are just a few example that require *a lot* of coding without database support (not to speak about performance). Heck, do people even understand what views (or triggers, etc) are?
People say it's easy to move databases around my MySQL. Yeah, sure, as long as you stay with the ISAM tables, which do not support ACID. InnoDB tables support ACID but cannot simply be copied around.
It makes me shudder to think about all the future DBAs that accept the low standards MySQL is setting.
So true. MySQL is fast as long as it's not ACID compliant. Want transactions and ACID? MySQL just got slower. Want concurrent DB access for multiple users or multiple sessions? MySQL just got slower. Want to use MySQL for mixed select/insert/update activity? MySQL just got a lot slower. Want to use MySQL for complex queries or many table joins? MySQL just got a lot slower. MySQL has a built in speed advantage because it's so feature poor. Less features means it has less code. As they add more features, I fully expect performance to continue to decline in all areas.
Basically, the only speed advantage that MySQL has over other DB's is when you have an select only environment with little to no concurrent activity. Once you exit that criteria boundry, other DB's suddenly perform as fast or faster. The further over the boundry you get, the better other RDBMS options look. Best of all, the other DB options tend to be feature rich to boot.
The fact that it's simple, easy to install, and cater to people that don't know a DB from a spreadsheet, is all you need to know to understand why MySQL is so popular.
Simple. We need to ask our expert in Open Source pronunciation... Mr. Torvalds?
Actually, one of the things I like about Postgresql is that it can run on Windows (under Cygwin). It's almost as simple as: Run SETUP.EXE. Certainly I would not recommend this for a production environment, but it does work for development. Would you even think about running MS-SQL on Windows 95 / 98 (notice I did not ask if you would think about running Windows 95 / 98 themselves). :-) Yet I was able to run Postgres using Windows 95 under Cygwin to develop a solution on a low end laptop.
(also available as a Windows binary).
Postgres does need to work on this area though. Many people don't realize how easy it is to install Postgres under Windows and the fact that it doesn't allow TCP connections out of the box doesn't help matters either (particularly since this is all you will be able to use under Windows).
Add to that the ODBC drivers that allow MS Access programmers and even MS Excel users to query the database and Postgres really does work with the Windows world.
What they haven't offered (until recently) is a GUI to manage / view the system. But check out PgAdmin at
http://www.pgadmin.org/pgadmin3/download.php
Things got interesting when I loaded all 2 million rows of data (one per file) into the poor POS Access DB. It took over 8 hours (I left it running and went home; it was still running when I got back. Lo and behold, it accepted every row. Trouble started when I discovered that trying to save a query or report would send the machine into la-la land. So, I had to dump the DB for every tweak of the report. After a week of messing around (time "well spent," as using Oracle/MS-SQL would have saved at least 4 days of waiting for row population), I finally got everything working, and turned in the report (something like a 500 page PDF).
Naturally, they wanted to change the criteria and group by something else. "Sorry, but today's my last day," I grinned. "And it takes at least one full day to make any changes, assuming you got it right the first time."
Suck. Ers.
Yeah, right.
25!
Why?
There have NEVER been that many at one time before.
And there's no GOOD reason for it, as the ol;d stories are, well...old...and they are now of little interest.
So why are they still there?
Is it because somebody wants to maximise the exposure of the last story, the one about Raven Alder, the chick who wears black and can "work Linux real good"...?
.. the day it returned a date column with the value '2309-46-39'.
(that, retarded access control system and the random data corruption..)
No, I did not read the f***ing article!
You're right, not everybody has to worry about those issues, but maybe they should. However, the problem is not so much with MySQL itself (it's a good, fast, lightweight storage system for simple and small amounts of data). It's with the perception that MySQL is every bit as good as a more robust engine (Oracle, MSSQL, DB2, take your pick) for any application. That is definitely not the case. As well, knowing MySQL does not make you uniquely qualified to decide that it's better than one of the other choices for a system that needs that level of robustness. The biggest problem is that people who only know MySQL choose MySQL because that's all they know, even when it's completely unsuited to the task.
Add to that the arrogance of the MySQL developers ("These aren't the stored procedures you're looking for ..."), and the zealotry of the user base, and it's easy to see why those of us who do know a thing or two are bitter about MySQL. I laugh anytime someone tells me that they can enforce data integrity from their application layer instead of using foreign keys (usually while trying to clean up their mess of a data set so the data itself can be trusted). I find it hysterical when I'm told that stored procedures are a complete waste of time (typically while fixing someone else's SQL injection problems because they insisted on writing dynamic SQL queries from their code).
I'm all for making databases and db technology more available to the Average Joe, but MySQL is not the way to do it. If you need free, there are many better alternatives to MySQL (especially if you only need free for training purposes, because then the big three are available to you as well).
You are not a very not cool new guy. Go back to AnandTech you silly bint. THATS RIGHT GO BACK TO ATOT.
mysql is about the shittiest database with the shadiest licensing scheme. Due to morons like Jeremy Zawodny prostuting it - that's why it's so popular. Taking advantage of suckers.
Comment removed based on user account deletion
Go look at that picture and realize he is saying "My SQUEAL!"
You would too.
Infuriate left and right
I think that MySQL had a lot of help from mSQL.
I don't remember the details of the licenses, or exactly what happened, so some of what I say here might be wrong. But wasn't mSQL sort of dominant in this space (people writing simple web/db apps on linux) until they did something ugly with their license?
And wasn't MySQL's API sort of similar to mSQL's, making it easier for projects like PHP to pick up MySQL?
- don't know enough about databases to understand why they should be using a different tool
- members of the 'I have a hammer, therefore this problem is a nail' sect
- people making money from the first two groups
Finding someone using it and can give good technical reasons *why* they are using it is a rare find. Feel free to substitute Access, Visual Basic, Perl, C, Java, C# or C++, Windows or Bose for MySQL if you like.A view is just a query which you can run again sometime?
You really need to learn RDBMS theory.
I do find it interesting that Linux users like to lord over Windows users how "sophisticated" they are, but when it comes to MySQL, they use the "well it does what I need" excuse, ignoring the gaping technical issues with the product.
1. Bovine growth hormones in its milk
2. Possible steroid abuse
= 9J =
But Postgres has been a fully functional RDMBS for years, with the features a professional needs.
Both can be obtained for free (though mysql is dual licenced). Maybe mysql has better marketing or offers better support, while becoming the default database for PHP?
I like the idea of MySQL. It's great. But it's not ready for the big time. Not nearly.
:
:
Yes there are work arounds for the missing features. These work arounds are usually - do it in the application code. Yes I can do it in the application code, but that takes away many of the benefits of using a RDBMS in the first place.
To give you a quick idea. Our clients have complex MS SQL Server db's that hold a lot of data, all somehow related to each other. A few quick queries on my dev db gives the following results
1061 tables
1742 stored procs
1281 triggers
The database gets accessed in a lot of different ways. This includes, but is not limited to
C++ via ODBC
C++ via ADO
Delphi via ODBC
Delphi via ADO
JSP Pages
ASP Pages
Java Servlets
Perl Scripts
Access
If something new technology comes along we can use it on our db. Why? Because the database is kept consistent through the use of triggers, stored procs and key constraints. If you have mutliple ways to access a database, you do not want your bussiness rules to sit in application code, you want it on the db.
siener's youtube channel
"MySQL uses table locking (instead of row locking or column locking) on all table types, except BDB tables, to achieve a very high lock speed. For large tables, table locking is MUCH better than row locking for most applications"
Actually it doesn't make much sense to have two "development" versions. They might just as well scrap 4.1 and put all their effort into getting 5.0 finished ASAP.
The article rambles a bit, but it does hit the nail on the head when it comes to what drove the rapid increase in popularity of MySQL -- that it was small, fast, and easy to learn, mainly due to the fact that it did not include features that were, for many users, extraneous.
When I first went looking for a database to drive my website, my more knowledgeable friends and professional acquaintences all hawked postgresql. Since it was the default db that shipped with Red Hat, I figured I'd try it. I liked how robust it was, but I had a hell of a time finding support for it in the applications I wanted to run. I eventually switched to MySQL (which I had already used for various other projects) because it still remains easier to use, and because PostgreSQL is way more than I need.
The simple fact of the matter is that most users don't need ACID compliance, or transactions, or what have you. They need a storage system with sql interface, and that's it. Users who need more from a database would pass up MySQL for something better suited to their needs... but those users are in the minority. Everyone else's needs are simple -- MySQL sacrificed the less essential features for speed, simplicity, and ease of use. As a result, it was more attractive to people who were adequately served by its feature set.
And as MySQL has progressed, it has added in many of those features that higher-level databases like PostgreSQL offer, allowing us the option of using those features in the future.
The dual license is, in my view, a great business model. It provides the revenue stream open source projects need without sacrificing the freedom for those users who embrace the open source concept. As I understand it, it's free for use, and free to distribute under the terms of the GPL... but you have to pay if you want to use it in a non-GPL product. To me that's genius -- it forces a licensee to play by the same rules he sets, which seems only fair. I wouldn't be surprised to see more projects adopting similar models, nor would I mind.
One thing that MySQL isn't is a bloated whale of an application. Oracle is feature rich and under heavy load, when administered correctly, is blazing fast. But that also makes it a system resource pig.
Part of the reason why every SQL feature in the world isn't implemented is because it sometimes pays to make an application lean. I tend to believe the authors/maintainers have a lean-mean philosophy, and sometimes prefer to let the users implement their own creative solutions instead of providing every bell, whistle and horn.
As a hypothetical example, one can easily implement an auto_increment feature outside of MySQL using a combination of a simple table declaration and some create PHP or Perl programming. Not that you'd want to, but some creativity can make up for non-implemented features.
In simple terms, MySQL is the equivalent of a cheetah. It's fast and lean, and accomplishes it's task with agility and grace.
MySQL is also easy to learn and easy to implement, especially if you are using the Apache/MySQL/PHP or Perl combination. Even better, this entire scheme will run using only 128-megabytes of RAM (thereby making my 5-year old AMD 500MHz still usable!). Try that with Oracle... can you say swap partition hell???
It doesn't seem like anyone is honest enough to spill the beans on this one. Postgres isn't available for windows without using Cygwin. The truth is that most beginers are looking for an executable download... with an installer. If you tell them that they have to compile or install something else first, they freak out.
The truth is that people are learning on their home systems which are more often than not windows systems. On top of this, most hosting companies only support what is most popular, hence MySQL.
Once Postgres is available on windows as an executable download with an installer, watch its popularity soar.
"I'm a loner Dottie, a rebel."
- Pee Wee Herman
MySQLs popularity is due to it being percieved as an extension of the textfile solution and it's open and closing problems rather than what database savy would call a database.
If you want to drop data somewhere and pick it up later - which is usually the case in 99% of the time - MySQL is perfectly sufficient.
Real usecases of databases however acutally require a solid integration of data and code and transparent runtime access to it. In terms of true object orientednes the 'real' DBs are just as much a compromise as MySQL is and require tall stacks of code to compensate for hardware constraints and data obscurety.
Object relational DB's that offer absolute transparence of data and application space at runtime are the true thing. But those, appart from a few exeptions, aren't quite there yet.
Zope/ZopeDB comes to mind as an example of what DBs should be like. Compared to Zope, MaxDB, Postgres or even Oracle are not much more than MySQL. It's all dependent on the perspective.
We suffer more in our imagination than in reality. - Seneca
The reason MySQL has been so successful is that it is NOT a relational DBMS. It doesn't have any of the features that a "real" database would have. That's the point.
MySQL is a glorified card catalog with a reduced-SQL interface. And for the vast majority of the projects that use it, that really is all it needs.
I say this as someone who has not written in any production SQL environments except for MS Access and MySQL. For small stuff, all I want is a card catalog with joins, and MySQL gives me that easily. I know the projects I've worked on aren't going to scale to a million rows, they're only in the few thousands, or in a few cases only a few hundred. If they start to get to the point that they're handling millions of transactions, then I'll be rewriting the whole thing anyway.
Tell me: WHY would I want to use Oracle or even PostgreSQL for a recipe book or web calendar when MySQL requires less mental overhead for me? I wouldn't. That's like using a Mac truck to drive to the grocery store and back.
When I start writing financial apps or systems that actually require complete integrity checking, good bye MySQL, hello Postgres. But for right now, MySQL is simple, my web host supports MySQL, and it's all these projects are going to need.
--GrouchoMarx
Card-carrying member of the EFF, FSF, and ACLU. Are you?
Your MCSE, MCDST and MS Office certifications are worth as much as the toilet paper roll stack in my closet.
You want to talk professional, how about something that took serious time and energy to accomplish, like a Masters of Science or a PhD? When you accomplish something that difficult, then I give you full bragging rights for your accomplishments.
Claiming to be an industry professional because you have Microsoft certifications is almost laughable, but I won't laugh because I want you to retain some semblance of dignity.
17. Well it's MINE, innit? Says so in the name. _MY_ sql. Ya gotta like that!
Seriously, I think a good name is half the battle with acceptance. If Postgres had called themselves MySQL -- rather than "Huh?" as most people understood them to mean by their Ingres-derived title -- and then produced some half-decent documentation occassionally...
But they didn't.
...and do you know where your www.mysql.com website is, MySQL AB? It is positively unresponsive, and I doubt a slashdotting. Or at least a company that sells something billed as a web backend ought to be able to handle a slashdotting. Yes, the rest of the web is working fine.
An industrial strength FREE database. : )
Not trying to flame... talking about maturity of experience...
Lots of people didn't care. They just wanted to stick dynamic content on their pages.
Most of them didn't care about things like transactions. They either never heard of them in the first place, or figured they didn't need them.
Most of them didn't care about portability.
A few of them found that MySQL was fast when you don't care about these things, and that it was easier to install. The told others, and it became 'cool'...
I'm not knocking the above, most of them were probably self taught, and have learned a lot since. The MySQL userbase seems to have matured a lot, and as MySQL becomes more like a 'real' DBM, it's users are becoming more like 'real' SQL admins.
The only real competition at the time was postgres, and it was slower, and possibly more difficult to install. Those of us like me who cared about things like transactions took the extra time to make it work, because we wanted what MySQL didn't offer.
Vs lbh pna ernq guvf, ybt bss abj. Tb bhgfvqr. Syl n xvgr.
MySQL succeded because it took an 80% approach (a.k.a. "worse is better") whereas PostGres took a 100% approach (a.k.a "the right thing").
If you don't know what these mean read: http://www.dreamsongs.com/WorseIsBetter.html and http://www.jwz.org/doc/worse-is-better.html
a relevant quote: "The lesson to be learned from this is that it is often undesirable to go for the right thing first. It is better to get half of the right thing available so that it spreads like a virus. Once people are hooked on it, take the time to improve it to 90% of the right thing."
"The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." Bill Gates,
One of the reasons I use MySQL is because it's easy to deal with remotely. phpMyAdmin is a robust tool for working with an online database. The phpPgAdmin tool is way behind in features and usability. I have one site on Postgres, but it's a lot harder to work with because of this.
Because Postgres doesnt support native Windows
I'll still stick with PostgreSQL, but then I am a Mac user ;-) I look at MySQL like I look at Windows... popular and sort of what I need, but it still falls down on the job.
If we can't fix it, we'll fix it so nobody else can!
I like postgres but the ability to keep it online 24/7 cost us a trip to the oracle camp I am afraid. We ran our manufacturing floor on it but had problems with scalability and keeping it up 24/7. I still to this day have to sit down and run vacuum on all of the databases on sunday night right before first shift starts. We where running a dual zeon box
with about 200 connected users running simple small selects and it would just bring it to it's knee's. I had the developers change the app to always drop the connections and this helped a little bit but I still
had the problems with vacuum. Running vacuum with the user connected just brings the database to a near halt or locks them out all together. Not running vacuum causes the database to come to a near halt in under 6 days
If I had to do it again I would go with mysql. I should not have to babysit a database every week and it should be able to handle more that 200 read connections on a dual zeon 4gb ram box.
Got Code?
INSERT INTO Body (Stomach) VALUES ("Vegetables")
For the sort of simple, single-user applications that MySQL is frequently used for, I don't understand why SQLite isn't used more often.
It's fast, simple, lightweight, and completely free, with no licensing restrictions prohibiting it from being incorporated into commercial products.
Am I missing some reason why it's unsuitable for most people?
> Reasons NOT to Use Foreign Keys constraints:
/.ers will understand. Imagine Bill Gates saying the following about the Windows XP firewall:
> The speed impact is terrible for INSERT and UPDATE statements, and in this case almost all
> FOREIGN KEY constraint checks are useless because you usually insert records in the right
> tables in the right order, anyway.
Just thought I might put this in a context that non RDBMS experienced
"Reasons NOT to monitor outgoing network traffic:
The speed impact is terrible for monitoring outgoing network traffic, and in this case outgoing traffic monitoring is useless since almost all outgoing network traffic is benign in nature anyway."
Now be honest, would you think "what a prophet is this guy, he's absolutely right", or would you look for another firewall?
That is where the lack of respect for mySQL as a RDBMS is coming from. It is no RDBMS, but they try to sell it as one.
As for its worth, sure, mySQL can be a decent package to use... if you are looking for a storage system with fast retrieval possibilities, not if you want a RDBMS (or SQL DBMS for the purists) that safeguards the integrity of your mission critical data.
I work with mysql as an persistence backend for
my (Jboss) application server, which works ok.
The last application I developed makes use
of J2ee transactions, and it turned me nuts to see
that the rollbacks weren't working. It took hours
before I realized that the problem was that I didnt
use transactional safe table-types (my fault so far).
Should mySQL tell something like 'not supported' to the application server on a rollback command
rather than silently ignoring it ? Besides, with
exentsive caching, this can lead to an inkonsistent cache (Jboss rolls back in cache, DBMS didnt...).
Stefan
1. Free
2. Easy
3. Free
4. Simple
5. Free
6. Easy to remember
7. Free
I'm in the hole of the broadband donut.
SQLite is targeted at a totally different audience.
SQLite is tiny SQL engine, easily embedded (and also scripted) from within an application. Its single data file concept is more along the lines of M$ Access.
My immediate reference to playing with SQLite was a direct replacement in Linux of the VB+Access application space.
Its a neat tool, very usable, portable, easy to work with. But not a competitor in any way to MySQL.
http://www.sqlite.org
JoeR
I can give you the reason why MySQL is so popular: practitioners are ignorant of data management fundamentals (perennial links: Unskilled and Unaware of it and Database Debunkings).
If you don't understand or know the necessity of things like constraints and tying business logic close to the data then you don't care that MySQL can't do them. It's obvious that MySQL developers do not have a clear understanding of the relational model, either.
And how is this elitist? Is it elitist to require that engineers who build bridges know the physics behind bridge building? Would you go to a doctor that didn't know the science of human physiology? Why do we not expect the same level of competence from people who build databases?
As computer professionals we need to hold ourselves to the same standards that we require other professionals. I'm not suggesting, or even think it's a good idea, to license developers but we need to get out of the mindset that it's acceptable to eschew formal ideas (predicate logic/set theory and the Relational Model) for ad hoc junk science (XML, UML, virtually every SQL DBMS product, etc.) all in the nebulous name of 'performance'.
Thanks,
--
Matt
Running postgresql in Windows is nearly impossible.
The trolls have already sounded off about MySQL's lack of transactions and the like. Fine. But if you're getting started with SQL and need a database that has thorough documentation and some speed under the hood for that niche of folks, then MySQL is da bomb.
And that's just the point. Database needs have left the castle walls of the big iron, elitist enterprise. Lots and lots of personal and SOHO solutions to meet, and MySQL can be the tool for those people. Get over it.
I repeat: the MySQL documentation is what draws a lot of people in.
Renaming PostgreSQL to YourSQL
Oh come on now!
You're a Oracle DBA so of course Oracle is just as nice as MySQL for "ease of use". But please! Oracle is the worst, most painful, most obfuscated piece of shit software I have ever seen with regards to administration!
It's terminology is obtuse, it's "help" is a joke, it's fragile as shit unless you know exactly what you're doing, and it can crash horribly and not come back up.
Please.
Not everyone wants to have to pay a damn DBA (nothing personal mind you) to run a simple DB-driven app. It's sad watching all the haters moan about how MySQL isn't this, isn't that... all things it's not MEANT to be.
MySQL is easy to install. I develop on Windows because I have to support lots of legacy products. MySQL has a windows setup exe. Download, run, it's installed. Simple, easy. It's not ACID compliant, but most people I know still thing MS Access is a Good Thing. Microsoft and McDonalds prove people don't want quality, they just want to get by easily. Ease of use wins most every time.
Windows still has 90% of the market and if it's not easy to install on those computers then how can any software program hope to achieve a large user base?
PostgreSQL does have a "windows proof of concept" that requires a Cygwin installation. It is a pain in the but to get running on Windows. There is a native port in the works, but it's basically replacing Cygwin with MingW.
If I want I can download source and tons of other libraries I can get a work in progress running which failes several of the regression tests. If it's challenging for me to do it though, there is no way I'm going to require clients to do it.
Check out the Windows Status Page
I have been dying for PostgrSQL to come out with a windows port. I've used it before and love it. I would love to port my MSSQL Server apps to it. ACID compliance is a real requirement in some applications, but in general people get by without it because most people don't even understand what it is.
The Good.
1 MySQL let thousands if not millions of people work with a SQL database server for the first time.
2 It is fast which means it could support a lot of people on a pretty cheap machine.
3 It is easy to setup and learn.
4 It is very good at provideing dynamic web content.
The Bad.
1 It did not support transactions or row level locking. An yes you need them for some applications. It is possible to program around the lack of these features but why?
The Lie
"You could also achieve efficient locking without row-level locks; in fact, supporting row-level locks took so much overhead that the application was almost better without them." ummmm.... No you are wrong. Okay you might notice that he said that applications where "almost" better off without them. That means that they are better off with them.
Don't get me wrong MySQL is a great product and does what 90 percent of the people that want to do. I wish them all the best.
My other pet peeve right now is the over use of MySQL in free programs. Does a cd catalog really need a SQL database server? Or an address book? Come on folks lets us BerklyDB or even a flat file for goodness sakes. Sometimes a SQL datase server is just over kill.
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
Couldn't you have done the work with a FOSS database and then import to Access for presentation? Or use ODBC to use Access as a front end to a FOSS database? Would anyone have noticed?
These days my attitude is "get the job done, and if they want to fire me for it, fine."
Download DB2, Oracle or SqlServer. I'm not 100% srue about SqlServer but DB2 and Oracle allow you to download their software for free (with much better documentation) if you only use it for self-education.
"Thanks to the remote control I have the attention span of a gerbil."
My database is free.
;)
Ahh yes but my database is bigger.
Nope my database is faster.
Yeah but my database works on all platforms.
Replace database with wang and there you have it.
I mean come on guys put them away after all we all know its not the size of your database that matters it's how you use it
Read the article again as to why MySQL has had enormous acceptance. It really is a good read. The article's intention was not to say the MySQL is the answer to any and all RDBMS questions. Point being - MySQL works because it's light-weight and fast enough to support even large websites. For the vast majority of general web scripts and even small applications, MySQL does the job - and does so quite nicely.
If you, in particular, need row-locking capability - look elsewhere. The beauty of open-source is that you have a choice, whether to use or go without. So as far as your "bad" point - MySQL would not be the answer would it?
To address your peeve, the nice thing about MySQL is that it provides a structured, easy-to-interface method to store a large amount of data for a variety of applications. Sure, you could use a flat-file or BerkleyDB - but then you constrict yourself to how you can access that database.
MySQL (not to say it's the only one) allow you to connect via a variety of interfaces, a local socket or across a network (standard or encrypted). Having a networked database allows for all kinds of uses for applications that may or may not want to store its data on the computer they are running upon.
Ayup
mainly to hide the underlying structure from users. Also, i've seen alot of very complex and long sql in views that you really wouldn't want to put into your application. As the grandparent said, it can also be used for security purposes, something which you don't want to code into your application either. Why? Because sometimes you can't guarantee users are going to enter the database via the application. Views can also be used for version control. Views are view usefull, are they required? Probably not but they sure do make life alot easier. The grandparent may not have stated his case well but there are many valid reasons as to why you'd want to use a DBMS that has views.
"Thanks to the remote control I have the attention span of a gerbil."
1. There is a main company pushing mysql in the news and striking deals with other big companies such as Veritas and SAP. They appear to have a sales force that is very active. I rarely ever see anything w.r.t. postgres in the news. 2. Postgresql doesn't really support windows. I know, you can get it to run under Cygwin but most people don't want to hassle with that. They want native support. Is postgresql a better database? IMHO it wins handsdown but as we know there more factors to whether or not software gets adopted.
"Thanks to the remote control I have the attention span of a gerbil."
Now, I think he meant to simplify, but that's such an oversimplification that it's just wrong (and it's wrong in such a way that, by misunderstanding, he would stand to profit).
Anyone can choose to license MySQL using the GPL, which grants the freedom to earn as much money using or distributing MySQL as you like (so long as the other license provisions are followed).
You only need to pay for a license if you want to do something that the GPL doesn't allow, like "distribute without offering source".
" Pardon my ignorance, but what is it exactly that MySQL is good at that Postgresql isn't at least equal or better at?"
Completely amazing that no one has *adequately* answered you on this question. i see responses of people whining that "you are not everyone" - yeah, not shit, genius. Or, "by god the package that i wanted to use needed mySQL" - nice. Way to *not* answer the question asked, fella. You didn't ask why people *chose* mySQL, rather what it does *better* than postgreSQL.
Once again, Slashdotters have missed the point entirely, correcly answered the question *not* asked and generally been useless except reminding you that you are not everyone...like, maybe you didn't already know that or something.
Seriously people, buck the fuck up and answer this question:
What is it (exactly) that mySQL does that is better, faster, or more stable than postgreSQL?
Leave your little app-requirements and need-it-for-legacy whinings out of it. Answer the question.
Its the administrators. I hate to say it but alot of people who run/support databases aren't DBA's! They were either thrown into supporting it, or had an interest but its not their 'job'.
I've been a DBA for 8 years or so now and I encounter this problem all the time. Once I had a dev. group's call a meeting with us to find out what services we offered. The developers obviously didn't want to be there and were very vocal that they didn't need our services.
My first question was how did they backup their database? (They were running Oracle..)
Their response, "Oh, we let the filesystem backup catch it."
I responded, "Do you shutdown your database first?"
Them: "No"
Me: "You need us."
Save yourself the hassle, if you have a database that is critical to your business, hire someone that knows the internals. Whether its mysql, postgresql, db2, oracle, mssql, your going to save yourself alot of headaches.
Yeah, I know, DBA's are cool and its fun pretending but seriously, save this stuff for the experts.
I'm of the opinion that alot of database applications could run just as effectively off of flat files because most apps don't use the advanced features of RDBMS's. Thats why mysql is popular if you ask me.
"Thanks to the remote control I have the attention span of a gerbil."
Damn, if I hadn't posted to this discussion I would have modded you up. You hit the nail on the head... Alot of people in IT don't understand the big picture... Whether its through sheer ignorance or systems being so complex that you just can't know it all. And i'm afraid, seeing how software development is proceeding, its only going to get worse.
.Net etc, etc. The list grows more each day.
When I was in university people coded in C/C++ but now its Java, JDBC, SOAP, CORBA, XML, STRUTS, EJB's,
"Thanks to the remote control I have the attention span of a gerbil."
Well, having set up postgres on cygwin rather recently, I can say it's not as simple as all that. If you want it to run as a service, for example, there are quite a few hoops you have to jump through.
I have a positive modifier on Troll. When I mod someone Troll their karma should go UP!
Postgres seriously lacks decent replication. MySQL has kick ass replication.
You are so right.
/etc/init.d/postgresql start
I guess I can see the argument for Windows, but *nix boxes? Is everyone trying to install from source. Obviously this is not the audience we were talking about. Nevermind that by source is not all that difficult either, with a package manager, it's downright embarrasing how easy it is.
Step 1: Install
% su (or sudo with the command)
% apt-get install postgresql-server
- or with apt-rpm -
% apt-rpm install postgresql-server
- or with just any old RPM -
download the RPMs and run
% rpm -Uvh postgresql*?
Step 2: Start the postgresql server.
% service postgresql start
- or -
%
Step 3: Add your username to the postgres group.
Step 4: Become the normal user again.
Step 5: Create a database as that user
$ createdb <dbname>
Step 6: Connect to the database
$ psql <dbname>
Step 7: Start making SQL queries -- standard SQL99-compliant queries at that.
Can a MySQL advocate please explain how it would be easier to install MySQL? Please?
Which brings me to another point that MySQL folks love to make: there's more documentation available for MySQL. Okay, we've established that installation is a non-issue. What about usage? With both, you connect via a client and make queries. MySQL has some weird syntax and tragic quirks, therefore it's a good thing that there's a lot of documentation. PostgreSQL? Sure there are comparatively fewer books with "PostgreSQL" on the cover. But then, since it closely follows the well published SQL92 and SQL99 specs, most books titled with "SQL" should suffice. Take the books that teach to the spec versus books that teach MySQL's dialect and the scales tip in PostgreSQL's favor.
Has anyone else considered that PostgreSQL books simply aren't as necessary as MySQL? Books solely on MySQL should be renamed to another popular O'reilly series: the series with "Windows XP Annoyances."
I guess the reason they don't is that MySQL diverges so much from both SQL92 and SQL99 that you might as well not compare the two; It doesn't look too good to describe a complete product as an annoyance.
- I don't need to go outside, my CRT tan'll do me just fine.
BWHAHAHAHA... "The first disadvantage to using Foreign keys is that we don't support them."
How exactly is that a "disadvantage", and not a "our software isn't up to snuff"??!?!
MySQL is easy to install
Bullshit. Postgres is easier to install.
What you are talking about here is a preference.
It is a pain in the but to get running on Windows.
OK, there you have a point. But then Postgres isn't a Windows app. You should have just said "Postgres doesn't support Windows", and left it at that.
Scalability isn't a database feature; it's a total app feature. Most people can't write scalable code (heck, no one can for a given value of "scalable"); thus, the advantages of Oracle (or even PostgreSQL) are wasted on them. For these apps, MySQL has no significant drawbacks, and quite a few advantages.
Remember, there are a lot more "little times" than "big times".
Design does matter. Usually it won't be noticable until some specific event, but when that event happens (and it will), you'll get burnt.
What you do after you get burnt is entirely up to you. Some change products, some deal with loss of information, some work to recover what they had, some didn't have data important enough to bother with anyway.
The more work you do to discover "why" the more you'll view MySQL's rationale as excuses instead of revolutionary minimalisim. Soon the banter of "work around the problem", "Not necessary if you do this and then that", "Bad for performance when you could just do this", etc. will come off as shallow excuses for fundamental problems that have been solved since the 1980's.
Lacking good design doesn't matter until failure. Good design is what you apply to prevent failure or at least mitigate it's effects. In the Ford Pinto's case, the car's inherit ability to turn into a ball of flame didn't matter until someone hit it from the rear.
Professionals (in any profession) are held to a higher standard. Arguing that a "good" design is wrong is one thing, arguing that a "good" design is irrelevant is tantamount to negligence. Compromises to "good" design should be made, but only when they are understood and "give" you something in return.
Choosing MySQL gives you little (speed) and asks for a lot (you do the work an RDBMS would in your code) in return. New DB people won't know the difference, until it's too late.
They amount to a trap door into an unknown amount of code for an insert or update. Sort of like the "COME FROM" construct in INTERCAL. In large database systems involving multiple development groups they can become an interaction nightmare; killing performance and having strange exceptions bubbling up from previously working code.
An esoteric scratched itch:
Homeworld Map Maker Tool
I am not singling you out to be jibed, but this is the third time in the past week or so that somebody has used "jive" rather than "jibe". In fact, I believe that this post is the first on /. to use the word "jibe" properly.
To counter this very un-/. behavior, I have left my misspelliongs intact.
http://dict.die.net/jibe/
http://www.wsu.edu:8080/~brians/errors/gibe.html
My god, you can't even do subqueries? What the hell? No views?!
Visit MySQL Gotchas for a list of the stuff you don't hear about mySQL around here.
MySQL is popular because it's easy to learn because it doesn't have all those "complicated" advanced features real databases have, so people who learn MySQL suddenly think they've become DB admin experts. Then they try Oracle or PostgreSQL or one of the other big boys, get confused and overwhelmed, and fall back on MySQL because it's easier for them despite having reduced functionality, often without them knowing that if they learned a real database they could do some incredibly powerful things with the braindead SQL they write to get MySQL to work. I've had to translate some Oracle single queries into as many as four for MySQL (!).
Seriously, that's why.
replication is a lot easier when you don't have to worry about transactions and data integrity.
You can buy decent replication for Postgres if you need it, for now.
Because Microsquish and Orihole are just too damn greedy on per seat licensing. Anything more than 5 seats I use MySQL for.
SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
It's not that the fact it doesn't support basic features of other databases that bothers me, it's the fact that the developers openly discourage the need for those procedures, thereby pigeonholing you into coding their way and removing your choices.
What if I want to use stored procedures, even if they think I don't need them? You can implement them and still tell me they're bad (we're ignoring the fact that such an opinion is laughable), while still giving me the CHOICE to use them if I want to. They're friggin' standard SQL.
If a feature's not implemented because you haven't gotten to it yet, that's fine--I can understand that. It's free software. But don't sit there with a thumb up your ass telling me I don't need it when I say I do.
This strikes me as the kind of stupid shit people are trying to get away from when they leave commercial databases behind. The "pay for GPL software because we say so" thing could get pretty interesting as MySQL becomes powerful enough to actually do wonderful things like sue their customers.
But I'm sure a software company would never do anything like that.
Now before I get modded down, I be to remind whoever might read this that what I am saying is FACT. - bogaboga
I think it does have a lot to do with the name.
MySQL, maybe it is My-Ess-Que-Ell or maybe it is My-Sequel, but Postgresql? Postgr-ehz-Que-Ell? Postgreh-Sequel, Postgray-Que-Ell?
I'm sure it was said in jest, but 30 seconds of "research" gives us the following...
From MySQL manual, "The official way to pronounce MySQL is ``My Ess Que Ell'' (not ``my sequel''), but we don't mind if you pronounce it as ``my sequel'' or in some other localized way."
From the PostgreSQL FAQ, "PostgreSQL is pronounced Post-Gres-Q-L."
MySQL was probably the "best" available free "RDBMS" with decent performance during the dotcom times.
msql? Didn't try it, but MySQL appeared to be a superset of msql (not MSSQL).
While more sophisticated, Postgres95 just didn't cut it performancewise- I tried both MySQL and Postgres95. Postgres95 was just too slow for what I wanted to do. Was slow for reads, was slow for writes even with fsync off.
Things changed dramatically with Postgresql 6.5.3 (ok for reads still slow for writes) then 7.0, 7.1, 7.2 etc.
Now I have far fewer reasons to use MySQL over Postgresql 7.3 or 7.4.
MySQL's new licensing scheme doesn't help either.
Too much trouble to figure out when it is GPL and when it isn't, or whether that sort of thing is even valid.
Granted it's slow, but you can code a relation database with the above UNIX tools. Why bother with SQL for small applications without rigorous speed requirements.
Maybe you should pay attention to the logical parts of his argument rather than the rhetorical ones? Like:
Stored procedures provide a higher level of performance, and provide *MUCH* more scalability. It's just common sense - moving *all* of the data away from the DB, passing across the network, and to business logic in the application will always be slower than having the logic in the DB itself (where it can be processed without having to move it across the slowest link in the chain.)
I don't have mod points but I do have database experience with enterprise databases as well as with MySQL and I think I'd side with ajs on the subject of stored procedures.
--LP