Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Data Storage Businesses Software

Why MySQL Grew So Fast 621

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.)"
This discussion has been archived. No new comments can be posted.

Why MySQL Grew So Fast

Comments Filter:
  • Pretty simple. (Score:5, Insightful)

    by Maul ( 83993 ) on Tuesday April 20, 2004 @11:59PM (#8925397) Journal
    1. MySQL can be installed without cost.
    2. MySQL is easy to install and learn.
    • Re:Pretty simple. (Score:5, Interesting)

      by ciroknight ( 601098 ) on Wednesday April 21, 2004 @12:04AM (#8925429)
      3. A very clean and easy to use API, in a language that is universally understood and almost universally portable (C) for incorporation into other products such as PHP, Perl, Python, Apache itself, and an endless amount of other applications.
      • Re:Pretty simple. (Score:5, Insightful)

        by mabu ( 178417 ) on Wednesday April 21, 2004 @12:14AM (#8925497)
        4. A tight, clean system that isn't bloated with crap that is superfluous to its main objective.

        5. A package that doesn't morph into a different product every six months with a new, catchy name, or divided into umpteen modules scientifically designed to require you to get every possible option in order to finish your application.

        6. A software package that isn't so ridiculously complicated to install and use that companies make more money selling training and support than they do implementing applications.
      • Re:Pretty simple. (Score:5, Insightful)

        by kpharmer ( 452893 ) * on Wednesday April 21, 2004 @01:12AM (#8925832)
        > 3. A very clean and easy to use API, in a language that is universally understood and almost universally portable (C) for incorporation into other products
        > such as PHP, Perl, Python, Apache itself, and an endless amount of other applications.

        Portable - only in the context of its ability to compile & link. Not very portable in the sense that its users require it.

        MySQL has a nearly complete disregard for ANSI SQL standards - which results in the least portable syntax of any relational database I've used. This list includes:
        * mysql
        * postgresql
        * oracle
        * informix
        * db2
        * sql server
        * sybase

        Additionally, since it's the only entry on the above list that is missing or has limited support for transactions (yes I know - you can get it with its slower innodb file system now), views, etc - much of the sql written is brain-dead compared to other databases. So, one query in oracle/postgresql/etc can easily turn in three in mysql. This mapping queries between mysql and other databases causes considerable performance problems - since most other databases provide the best performance (in most cases) with given a single query to perform a unit of work.

        So, if the non-ansi syntax isn't a big enough pain-in-the-butt, having to rewrite the queries and application to get reasonable performance often is. Amazingly, I've found that it's easier to convert an application from SQL Server to Oracle than from MySQL to Oracle.

        Ah well. I suppose much of this will improve over time as they rewrite their engine to include more and more of that functionality that nobody wants.

        But in all seriousness - there's not much to analyze about its popularity guys. It pretty much boils down to:
        right place at the right time
        It owned the light, easy and free niche four years ago. It's a different ballgame with postgresql now, but mysql has built up quite the following in the meanwhile.
        • Re:Pretty simple. (Score:5, Insightful)

          by Ed Avis ( 5917 ) <ed@membled.com> on Wednesday April 21, 2004 @03:23AM (#8926403) Homepage
          The reason for its success: Worse is better [jwz.org].

          What you say about disregard for SQL standards is true, see MySQL Gotchas [sql-info.de]. Doing the wrong thing is not so bad, it's *silently* doing the wrong thing that you absoultely do not want in a database system. See also Why not MySQL [openacs.org], which is now rather dated (MySQL has grown some features since), but is a good introduction to what a database should do.

          Note also that anyone can write a database system with complete transactional integrity: you simply lock the whole database for every single operation and run only one query or update at a time, one after the other. The challenge is in getting the semantics of serialized database access but with good performance. This is what schemes like row-level locking and multi-version concurrency are for.
        • Re:Pretty simple. (Score:5, Interesting)

          by Eric Savage ( 28245 ) on Wednesday April 21, 2004 @04:56AM (#8926692) Homepage
          A tuned query set is pretty much unportable no matter what DBMS you are using. Once you start getting into maintenance tasks, vendor-specific performance boosting options (which are often the reason you've chosen a vendor), and basically anything beyound the most basic selects and inserts, you code becomes tied down to a server. Also the general disregard most servers have for ANSI means that it is only a standard in theory, not in practice.
        • Re:Pretty simple. (Score:5, Informative)

          by ajs ( 35943 ) <ajs.ajs@com> on Wednesday April 21, 2004 @09:43AM (#8928141) Homepage Journal
          Additionally, since it's the only entry on the above list that is missing or has limited support for transactions

          Just flat-out untrue.

          I know - you can get it with its slower innodb file system now

          Actually, Berkeley DB and InnoDB both support transactions, but InnoDB is more complete, which is also (of course) why it is slower. In order to do propper transactional support, you have to inject a lot of overhead, and that's why MySQL has always been blazingly fast.

          The great part is that you can still fall back on the MyISAM table type (which implements everything you need in terms of atomic inserts and updates, as long as that atomicity is not required across several statements) if you want that speed, because MySQL is modular enough to support that. Imagine that, a modular database... who'da thunk.

          views

          The lack of views is directly related to the lack of sub-queries, which is being addressed, but is still a questionable feature. Ultimately, I've never seen a query that used a sub-query that didn't actually need to be optimized through judicious uses of de-normalization. Views are just a hard-coded sub-query, and as such give tremendous flexibility to the programmer, but are nearly impossible to correctly optimize, and the performance bottlenecks aren't always obvious on the first pass.

          Once sub-queries and views appear, I would still caution STRONGLY against their use.

          So, if the non-ansi syntax isn't a big enough pain-in-the-butt

          Well, that's really not fair. The syntax is no more deviant from ANSI than, say, Oracle or Sybase, but those databases' extensions have become so widly accepted that we don't think about how non-ANSI they are anymore.

          Granted there are a few places (especially in the types arena) where MySQL does not yet implement some ANSI features, but I've never run into a significant problems in those regards. My applications port fairly cleanly when I want them to, but in many cases, I've choses in the architecture to rely on some key features of MySQL that aren't standard, and I've benefitted greatly from having done so. Sure, I could port to something else later, if I had to, but it would be a pain, and I'd lose functionality.

          I suppose much of this will improve over time as they rewrite their engine to include more and more of that functionality that nobody wants

          It's not that nobody wants it, it's that most of the people who want it aren't actually providing reasons as such. They are just whining about x, y or z metric to which their pet database conforms, and MySQL doesn't. That game is not interesting. Transactions were required for certain applications, so they were added. Sub-queries less so, and so they will be added, but much slower. Things like full ANSI type compatibility are required only if a) you don't use an ODBC layer that translates types for you or b) you want to just take your native SQLServer app and re-point it to a MySQL database.

          Stored procedures and other similar features are just bloat, and gain you no real advantage (other than making a bridge between languages, which is the wrong place to solve that problem... after all it doesn't help you with your network protocols...).

          The bottom line is that MySQL is a fairly low-level database. If you want something higher level, cool, go for it. But, in programming langauges you don't say "C is useless because it doesn't have all of the features of ADA", you just use the right tool for the job. Why is this so different?
    • Re:Pretty simple. (Score:5, Informative)

      by DAldredge ( 2353 ) <SlashdotEmail@GMail.Com> on Wednesday April 21, 2004 @12:13AM (#8925486) Journal
      3: MySQL SILENTLY ignores portions of the SQL spec and doesn't inform the applicaion that it doesn't do what the apps need it to.
    • 3. ??? 4. Profit!
    • Re:Pretty simple. (Score:5, Informative)

      by Chexum ( 1498 ) on Wednesday April 21, 2004 @01:49AM (#8926015) Homepage

      Interestingly, nowadays no one seems to remember that in '97-'98, there were basically three usable databases: Postgres95: sometimes difficult to compile and set up; mSql from Australia, which was popular, but was for non-commercial use only (thus they excluded themselves from many "markets"), and mysql, which at the time looked like a buggy clone of msql, but free to use.

      Most of the people at that time usually heard about apache + msql, and then stormed over to apache + mysql. Me, I managed to get Postgres95 to work, and never longed for anything else :)

      mSql, aka minisql tried to make a comeback lately, but I they botched their opportunity years ago with this "non-commercial use" stuff.

      • Re:Pretty simple. (Score:5, Informative)

        by Jack Porter ( 310054 ) on Wednesday April 21, 2004 @02:04AM (#8926081)
        Parent is dead right.

        I moved from mSQL to MySQL in 1997 for a PHP2 project, because of mSQL's licensing restrictions. It was trivially easy to move because the API was almost identical (add a y in all the function calls).

        This dropin replacement for mSQL is what gave MySQL the start it needed in the web-backend market.
    • by DrMrLordX ( 559371 ) on Wednesday April 21, 2004 @02:27AM (#8926163)
      1. Bovine growth hormones in its milk
      2. Possible steroid abuse
    • Re:Pretty simple. (Score:5, Insightful)

      by sasha328 ( 203458 ) on Wednesday April 21, 2004 @02:58AM (#8926298) Homepage
      It is actually quite simple. When I started to use an SQL database, I did not "choose" the engine. That was chosen for my by ht eproject I wanted to do.
      Basically, I wanted a Problem tracking system. Did some searching and stumbled on the excellent: MantisBT at sourceforge. It needed MYSQL. So I started using MYSQL. If it said it needs POSTGRESQL, I would have used that.
      I think that is the main reason why MYSQL is more popular. It's not the "price" or the "licence". I knew both were "free".
      I started my DB development using FileMaker about 10 years ago. I wait eagerly for the day it is fully ported to Linux, not just the server.
  • Why? (Score:4, Interesting)

    by Daengbo ( 523424 ) <daengbo@gmail. c o m> on Wednesday April 21, 2004 @12:03AM (#8925420) Homepage Journal
    But MySQL's very simplicity made it so small and fast that it quickly won over small users who wouldn't even understand what they were missing and how to use the fancy features offered by "real" database engines. In particular, MySQL proved ideal for the exploding area of dynamic Web content.
    We can talk about this one for hours.
    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.
    • Re:Why? (Score:5, Funny)

      by jaaron ( 551839 ) on Wednesday April 21, 2004 @12:11AM (#8925476) Homepage
      Please don't mention MS Access again. It makes my skin crawl just thinking about it. MS Access lets everyone think they can be a DBA. And then they want to run enterprise level warehouse tracking, inventory, payroll and who knows what else from the little database they whipped up between Solitare games.

      Sorry if I sound bitter but MS Access has given me more than one headache.
      • Re:Why? (Score:5, Interesting)

        by Vellmont ( 569020 ) on Wednesday April 21, 2004 @12:28AM (#8925597) Homepage
        I think Access is great, for what it's intended for. It's perfect for small databases where someone would otherwise use flat files. It's also a great reporting tool to use to connect to other databases via ODBC.

        The problems with Access is just that people often don't know what they're doing and create awfull legacy systems that they then expect to keep extending. That's a problem that lies between the keyboard and chair, not with Access.

        If you want a database to complain about, complain about FileMaker Pro. It's an ugly, non-relational database that seems to ecourage people to make terrible, ugly systems.
      • MS Access from hell (Score:5, Interesting)

        by Safety Cap ( 253500 ) on Wednesday April 21, 2004 @01:24AM (#8925896) Homepage Journal
        And then they want to run enterprise level warehouse tracking, inventory, payroll and who knows what else from the little database they whipped up between Solitare games.
        My last assignment at a Big Oil Company was to produce a list of files on the shared drive, grouped by person, age, and total size. As all work at the BOC was billed, and my project was budgeted only for my time, I was not allowed to have a DBA create either an Oracle or MS SQL DB (something that would've only taken 5 minutes). I had to use MS Access; suggesting the use of FOSS would be like saying you wanted to summon Satan to get your work done.

        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.

    • Re:Why? (Score:5, Insightful)

      by LostCluster ( 625375 ) * on Wednesday April 21, 2004 @01:07AM (#8925804)
      Access is the database sibling to Visual Basic... in fact, a code module in a .mdb file is Visual Basic for Applications... which aside from the fact that it depends on having Microsoft Access present is just about as powerful as Visual Basic itself. Access projects can even be compiled into .mbe files which locks down the forms and code users can't see or change your source.

      It's a great cheap tool when what you've got to do is open up a bunch of flat files, grab some data from each of them, and then output a pretty-looking report. You can then get it down to a push-button interface so that a newbie can run your tool, and you can go on to something more important.
  • My Theory? (Score:4, Funny)

    by Anonymous Coward on Wednesday April 21, 2004 @12:03AM (#8925422)
    People recognize what "MySql" is.

    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.

  • inmy opinion (Score:3, Insightful)

    by minus_273 ( 174041 ) <aaaaaNO@SPAMSPAM.yahoo.com> on Wednesday April 21, 2004 @12:03AM (#8925425) Journal
    2 reasons. LAMP and the fact that not everyone can afford or require for their tasks Oracle
  • by Anonymous Coward on Wednesday April 21, 2004 @12:08AM (#8925451)
    Because PostgreSQL takes longer to type :-)
  • by Anonymous Coward on Wednesday April 21, 2004 @12:09AM (#8925456)
    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.
    • by Anonymous Coward on Wednesday April 21, 2004 @12:46AM (#8925689)
      The issue isn't really the lack of the feature set, but the fact that the MySQL devs used to be clueless idiots about it. Here's what the docs used to say about foreign keys:

      5.4.5.1 Reasons NOT to Use Foreign Keys constraints

      There are so many problems with foreign key constraints that we don't know where to start:

      Foreign key constraints make life very complicated, because the foreign key definitions must be stored in a database and implementing them would destroy the whole ``nice approach'' of using files that can be moved, copied, and removed.

      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.

      There is also a need to hold locks on many more tables when updating one table, because the side effects can cascade through the entire database. It's MUCH faster to delete records from one table first and subsequently delete them from the other tables.

      You can no longer restore a table by doing a full delete from the table and then restoring all records (from a new source or from a backup).

      If you use foreign key constraints you can't dump and restore tables unless you do so in a very specific order.

      It's very easy to do ``allowed'' circular definitions that make the tables impossible to re-create each table with a single create statement, even if the definition works and is usable.

      It's very easy to overlook FOREIGN KEY ... ON DELETE rules when one codes an application. It's not unusual that one loses a lot of important information just because a wrong or misused ON DELETE rule.

      The only nice aspect of FOREIGN KEY is that it gives ODBC and some other client programs the ability to see how a table is connected and to use this to show connection diagrams and to help in building applications.


      At this point anyone with RDBMS experience is rolling on the floor. THAT is why MySQL gets no respect.
    • by jesterzog ( 189797 ) on Wednesday April 21, 2004 @02:57AM (#8926293) Journal

      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.

      Pardon my ignorance, but what is it exactly that MySQL is good at that Postgresql isn't at least equal or better at? I'm all for using the right tool for the right job, but every time I've used at MySQL I've frequently encountered all sorts of crazy problems [sql-info.de] with no killer features to justify the change, that aren't already provided by both postgres and other databases. Maybe it's my application bigotry speaking, but I honestly can't see how MySQL is better at anything.

      The only things I can think of are the familiarity aspect, for people who are already very knowledgable about MySQL not wanting to switch, and possibly some minor issues with moving database files around on the underlying file system.

  • by Trevor Goodchild ( 187368 ) on Wednesday April 21, 2004 @12:10AM (#8925465)
    Mr. Oram's long-winded screed on MySql, while interesting, really makes the situation sound much more complicated than it is. You don't need to over-analyze this thing. The truth is simple and readily clear to everybody already.


    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.

    • by Daniel Dvorkin ( 106857 ) * on Wednesday April 21, 2004 @12:19AM (#8925532) Homepage Journal
      What doesn't MySql do well? For starters, it's much slower than Oracle, MS-Sql, and even Foxpro.

      I've never used MS SQL Server or Foxpro. But having very recently developed a project on two DBMS tracks (Oracle and MySQL) I can tell you that identical queries on identical schemata with identical data are provably faster with MySQL than with Oracle.

      It has no row locking, no transaction support,

      This is no longer true.

      minimal cross-platform compatibility

      Huh? I've successfully migrated several complex databases, and the associated applications, between MySQL servers on Linux, Windows, BSD, and Mac OS X with no problem. And I mean no problem; in most of these cases, I haven't had to make a single change to the architecture, data, or application code. Everything just works.

      If you want to criticize MySQL, there are plenty of legitimate grounds to do so. (E.g., the lack of support for views, which in my primary job as a MySQL DBA drives me nuts at least once a week.) Don't just make stuff up.
      • by TheRealSlimShady ( 253441 ) on Wednesday April 21, 2004 @12:38AM (#8925651)
        I can tell you that identical queries on identical schemata with identical data are provably faster with MySQL than with Oracle

        ...provided the MySQL server isn't under load. Watch those queries get slower and slower the more users you add. With Oracle, watch the queries perform the same under a far greater load than MySQL will handle.

        • by LostCluster ( 625375 ) * on Wednesday April 21, 2004 @12:56AM (#8925742)
          Watch those queries get slower and slower the more users you add. With Oracle, watch the queries perform the same under a far greater load than MySQL will handle.

          Of course, most of us who run on MySQL dream of the day that we'll have enough users to have to upgrade to another database engine. Afterall, it's much cheaper to throw MySQL onto a faster box than to bring in Oracle. :)
        • So what? With MySQL, it is cheap enough just to add another CPU or whatever. Instead of running on a Xeon, you just move to a dual or quad Opeteron.

          MySQL is a very fast database if the keys can fit in RAM. Today, RAM and CPU speed is not a problem as it once used to be. Differences between MySQL and Oracle are blurred.

          Sure, if you need 20,000 connections to the same database, maybe MySQL is not what you want. But MySQL licensing terms (for commercial usage) are much more flexible than Oracle's, especial

        • by Anthony Boyd ( 242971 ) on Wednesday April 21, 2004 @02:39AM (#8926218) Homepage
          With Oracle, watch the queries perform the same under a far greater load than MySQL will handle.

          I call bullshit. In e-Week's tests, Oracle and MySQL were dead even under load [eweek.com].

      • by dtfinch ( 661405 ) *
        As far as speed, both MySQL and Oracle have their place. MySQL has a good price/performance ratio, while Oracle scales well. There are situations where one server with a couple processors and lots of ram just isn't enough for a single database. It could take hundreds of servers, several processors each, sharing hundreds of disks, and Oracle can supposedly handle that fine while still guaranteeing transactional consistency and zero down-time when one of them bites the dust.
    • by mcrbids ( 148650 ) on Wednesday April 21, 2004 @12:21AM (#8925549) Journal
      I mean really, how many people out there can truely justify the cost of a full featured, robust database like MS-Sql? 10%? 5%?

      How about 100%!?!? Ever hear of PostgreSQL? [postgresql.org]

      ACID compliance, features that compare very nicely against MS-SQL/Oracle, foreign keys, triggers, transactions, embedded function definitions, the whole shebang.

      About the only thing that it lacks (for free) is decent clustering/replication capability - and you can buy that fairly easily in the form of patches.

      I've been using it for years, and it's a joy to work with!
      • by killjoe ( 766577 )
        Postgres is great. Too bad it's not multi threaded though. That kind of limits it's performance.
      • Postgre might be Free, but converting an existing project that's already designed for MySQL to any other database engine has its costs.
    • by Osty ( 16825 ) on Wednesday April 21, 2004 @12:35AM (#8925628)

      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

      Before all of the MySQL zealots jump all over you, I should point out that MySQL does have transaction support (with the proper table type, and so long as it's built in, and you're using a current enough version, and you made sure to tag your tables with the right syntax to make sure they are of the right table type, etc), and does cross-platform well enough (better than PostgreSQL, as much as I love that engine). I don't know about row-level locking, but I'm sure it can't be far now.


      The biggest problem with MySQL is inconsistencies in both the engine itself and the development community. For years, the MySQL community told developers, "You don't need [transactions | foreign keys | triggers | stored procedures | subselects | ...]! You can work around those limitations in your application code and be better off for it!" Only they then go and implement those features that developers "don't need". That would be fine, except that the implementation of the features often leaves something to be desired, and have too many quirks. For instance, I mentioned above that you can only get transactions and referential integrity if you're using the correct table type. However, that table type is not the default, and even if you do create your tables properly to take advantage of those features, MySQL doesn't fail if the table type is not supported, choosing instead to make your table an inferior type. Now you think you have transactional support and referential integrity because your database built just fine, but what you don't know is that your hosting provider didn't build that table type into their deployment of MySQL, and you really don't have those features at all. Good luck trying to figure out why your data is corrupted even though you had proper transactioning in your code.


      MySQL has other problems [sql-info.de] as well. For example, if I want a column to be NOT NULL, I want any code that tries to insert a NULL into that column to fail. I don't want the engine to try to pick some default value for me. If I wanted a default, I would've added a default. That's why default constraints exist. By that same token, if I want a column to allow NULLs, I want to be able to put a NULL in the column. I don't want the current date/time instead of a NULL. If I define a column as auto-incrementing, I want to get an error if I try to insert something into that column. I don't want it to quietly succeed.


      There's plenty more on that page, though most MySQL apologists will tell you either that the problem is fixed (which is fine, except that being fixed in the latest beta is far different from being fixed in the most widely-deployed versions from different hosting providers and such), or that it "will be in the next release". These are the same people that will tell you that stored procedures are unecessary, and anybody that thinks they are is stupid (or they'll tell you that the performance gains from being able to compile your SQL code is negligible, while completely ignoring all of the other benefits of stored procedures ... *COUGH*security*COUGH* ...). And so on. MySQL is fine for what it does, but it's not the end-all of SQL software. Far from it.

      • by Safety Cap ( 253500 ) on Wednesday April 21, 2004 @12:49AM (#8925697) Homepage Journal
        For years, the MySQL community told developers, "You don't need [transactions | foreign keys | triggers | stored procedures | subselects | ...]! You can work around those limitations in your application code and be better off for it!"
        Couple that with this quote from the article:
        But MySQL's very simplicity made it so small and fast that it quickly won over small users who wouldn't even understand what they were missing and how to use the fancy features offered by "real" database engines.
        And you get the problem of people using a RDBMS that have little idea what they are doing. Stored procedures for speed/security? Not needed. Normalization (3+)? Academic exercise only. And so on.

        MySQL is good enough exactly because it is good enough. For enterprise-class applications, or systems that need to be maintained though several generations of DBAs/Developers, taking the "good enough" shortcuts will end up killing you in the end. Pushing the data integrity code to the app instead of asking the RDBMS to do all the heavy lifting will come to bite you in the arse when scalability becomes important.

        If MySQL works for the majority of installations, so be it. You never get to be number one in your pack by following the pack. You have to innovate and do what you do really well. "Good enough" only gets you outsourced.

        • by Osty ( 16825 ) on Wednesday April 21, 2004 @01:15AM (#8925858)

          Pushing the data integrity code to the app instead of asking the RDBMS to do all the heavy lifting will come to bite you in the arse when scalability becomes important.

          Hell, I don't even care about scalability. How about simply being able to trust your data? I'm currently working on a database-backed project that has aboslutely no foreign key constraints at all (among other problems, though the SQL engine is not MySQL and we are slowly but surely fixing the issues). We're constantly trying to clean up our data sets (not fun when you're talking about several tens of millions of rows) and track down the offending code so we can add constraints and then handle the insert errors properly, but it's been a long and arduous process. We're actually at the point where we're willing to throw away the current system and start over (or, well, run side-by-side for a while). It's not fun.


          If MySQL works for the majority of installations, so be it. You never get to be number one in your pack by following the pack. You have to innovate and do what you do really well. "Good enough" only gets you outsourced.

          Very true. Let me also add for those who think that MySQL is a good learning tool -- it's not. While MySQL does support much of the ANSI standard, you're going to run into problems (some of which are MySQL's fault, some aren't):

          • The tricks and hacks you have to do to work around MySQL's limitations (subselects, views, stored procedures, triggers, etc) are unnecessary in a real RDBMS, but you won't know that because you only know MySQL.
          • More importantly, the hoops you have to jump through in MySQL often lead to suboptimal SQL code. You may not really notice this on the light data sets where MySQL excels, but you will as soon as you try to migrate this knowledge to a larger system.
          • MySQL gives you a false sense of performance. Your data sets are small (ideally, otherwise you're going to be in for some shit with MySQL), and so you don't care about proper indexing, whether you're doing index seeks versus table scans, whether your data is well-normalized versus normalization trade-offs for performance, etc. What performance tuning you do learn from MySQL likely won't translate well to other systems.
          • MySQL has its own non-ANSI syntax additions that don't apply to other RDBMSs (AUTO_INCREMENT column type, for example)
          • Similarly, other RDBMSs have their own set of specific keywords, so you still have to put in the time to learn them (do you know how to do an auto-incrementing column in SQL Server? MySQL won't teach you that)

          If you want to learn, get yourself a real RDBMS. Microsoft's desktop engine version of SQL Server is free [microsoft.com], and Oracle has free downloads [oracle.com] available as well. If you don't qualify for either of those or don't agree with the licensing, at least use something more robust like PostgreSQL. If you're trying to learn, you'll be much better off learning on any of those platforms than you will with MySQL.
  • by rimu guy ( 665008 ) on Wednesday April 21, 2004 @12:10AM (#8925466) Homepage

    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 [mysql.com]. I want to start using it. And 4.1 has been out in alpha for over a year now [mysql.com]. 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 [rimuhosting.com]

    • MySQL has always been fast.

      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.

    • by Anonymous Coward on Wednesday April 21, 2004 @12:22AM (#8925552)
      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.
  • I like MySQL (Score:5, Insightful)

    by Anonymous Coward on Wednesday April 21, 2004 @12:11AM (#8925475)
    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!
    • I dislike MySQL (Score:5, Insightful)

      by Osty ( 16825 ) on Wednesday April 21, 2004 @01:34AM (#8925945)

      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.)

      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).

  • ASUG 2004 (Score:3, Informative)

    by webword ( 82711 ) on Wednesday April 21, 2004 @12:14AM (#8925491) Homepage
    I'm mainly interested in the SAP and mySQL connection because I simply didn't know about it until I read this [oreillynet.com]. I know it is a bit offtopic, but I recently attended ASUG 2004 [asug.com] (America SAP User Group) and I posted news about it to my site. Perhaps you'll be interested.

    JavaScript, DOM, and Page Reloads [webword.com]

    Usability Interview with David Clark of TandemSeven [webword.com]

    More Observations on ASUG 2004 [webword.com]

    ASUG 2004 and RFID [webword.com]

  • by Vellmont ( 569020 ) on Wednesday April 21, 2004 @12:17AM (#8925517) Homepage
    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.
  • by kcbrown ( 7426 ) <slashdot@sysexperts.com> on Wednesday April 21, 2004 @12:17AM (#8925519)
    MySQL is an interesting example of how you can be wildly successful if you're at the right place at the right time with a product that's just good enough for the mission people have in mind.

    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.

    • by GooberToo ( 74388 ) on Wednesday April 21, 2004 @01:31AM (#8925925)
      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.

      The 3rd party replication solution was donated to the project a release or two back. It's now freely available. Having said that, internal code changes continue to take place to support better, faster, stronger replication capabilities in the future. No known ETA.

      I believe nested transactions as getting some low priority cycles. No known ETA. It is nice to know that it is are on their radar.

      Point-in-time recovery is being actively worked on and has been for some time. Expect it in the next major release or two. Probably will be in the next major release but may slip. It has slipped before. They elected to get better infrastructure in place so they wouldn't have to shoehorn it in. That's fine by me. That means a rock solid implementation with no major surprises down the road.

      things which MySQL is not likely to get anytime soon

      Too true. PostgreSQL is working on "enterprise features" and occationally someone stops to try to optimise here and there. As is, PostgreSQL is pretty fast. Performance is generally regarded to be in league with the big boys of the RDBMS world. PostgreSQL makes an attempt to adhere to SQL specifications. MySQL is pretty far from being conforming to any specification and is missing very basic RDBMS features. It will be years and years before MySQL is as feature rich as PostgreSQL is today.

      I believe other items which are getting some attention include distributed queries and two-phase commits. Along those lines, the protocol that PostgreSQL uses has been getting attention to better support more complex communication requirements (two-phase commit, distributed queries, etc).

      Lots of cool stuff is comming out of the PostgreSQL pipeline. Sadly, it just won't all be available tomorrow. :(
  • by jwbrown77 ( 526512 ) on Wednesday April 21, 2004 @12:32AM (#8925612)
    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.
    • by Anonymous Coward
      Use PgAdmin. Its a GUI to administering postgre databases. It makes managing privileges a joy.

      Postgres also stores users in a table which is editable like any other table (this is nice, but obviously dangerous). You don't have to do it through SQL-ish commands. All of this is made very simple by PgAdmin though.
  • Simplest database (Score:4, Interesting)

    by mnmn ( 145599 ) on Wednesday April 21, 2004 @12:48AM (#8925694) Homepage
    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.
  • by linuxtelephony ( 141049 ) on Wednesday April 21, 2004 @12:53AM (#8925720) Homepage
    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.
  • by l0ungeb0y ( 442022 ) on Wednesday April 21, 2004 @12:54AM (#8925725) Homepage Journal
    "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.
  • by Anonymous Coward on Wednesday April 21, 2004 @12:57AM (#8925748)
    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.
  • by linuxhansl ( 764171 ) on Wednesday April 21, 2004 @01:01AM (#8925772)
    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.
  • by yem ( 170316 ) on Wednesday April 21, 2004 @01:25AM (#8925900) Homepage

    .. the day it returned a date column with the value '2309-46-39'.

    (that, retarded access control system and the random data corruption..)

  • by astrashe ( 7452 ) on Wednesday April 21, 2004 @02:06AM (#8926092) Journal
    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?
  • MySQL doesn't scale (Score:5, Informative)

    by Siener ( 139990 ) on Wednesday April 21, 2004 @02:54AM (#8926279) Homepage
    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.

  • Right On (Score:5, Insightful)

    by Caiwyn ( 120510 ) on Wednesday April 21, 2004 @03:59AM (#8926520)
    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.
  • by vallis ( 773184 ) on Wednesday April 21, 2004 @04:19AM (#8926580)
    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???
  • by Qbertino ( 265505 ) <moiraNO@SPAMmodparlor.com> on Wednesday April 21, 2004 @04:24AM (#8926599)
    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.
  • Easy answer... (Score:5, Insightful)

    by MattRog ( 527508 ) on Wednesday April 21, 2004 @09:36AM (#8928056)
    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 [apa.org] and Database Debunkings [dbdebunk.org]).

    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'.

Beware of Programmers who carry screwdrivers. -- Leonard Brandwein

Working...