Slashdot Mirror


MySQL 5 Production in November

thatoneguyfromphoeni writes "CIO.com is reporting that MySQL AB is eyeing Nov. for the production release of MySQL 5. 'The company is calling version 5 its most significant upgrade yet. It adds a handful of features considered important for enterprises that have long been available from market leaders Oracle Corp., IBM Corp. and Microsoft Corp. Chief among them are triggers, views and stored procedures.'"

286 comments

  1. Dupe? by Spy+der+Mann · · Score: 1
    1. Re:Dupe? by OneSeventeen · · Score: 1

      Maybe, maybe not. It's nice to see a proposed release month, which was not mentioned in the other article. This was a welcome and informative headline in my RSS reader.

      ...And just one month after I switched to PostGres for those features!

      --
      "Now the trouble about trying to make yourself stupider than you really are is that you very often succeed." -C.S. Lewis
  2. MySQL has finally caught up by Michalson · · Score: 5, Insightful

    MySQL has finally caught up to the state of the enterprise relational database industry...as it was in 1999. Points for effort, but everyone else is still ahead with core features like integrity, leaving them free to build on new and better features. Bundling with PHP will only get you so far.

    1. Re:MySQL has finally caught up by tcopeland · · Score: 3, Informative

      Yup, and meanwhile PostgreSQL is prepping an 8.1 release with shared row locking, table partitioning, and better SMP support. Draft press release is here.

      Anecdotally, RubyForge got 240K hits yesterday on a GForge site backed by a PostgreSQL 8 database with no problems; good times. PostgreSQL is good enough that our problem is bandwidth, not server load.

    2. Re:MySQL has finally caught up by bani · · Score: 1

      I thought there was supposed to be an endlessly moving target so that you could continue bashing mysql because it's fashionable and PC.

      It doesn't matter what feature set actually mysql has, it's just hip to bash it just like it's leet to bash linux when you're a (free|open|net)bsd fanatic.

    3. Re:MySQL has finally caught up by ThaFooz · · Score: 1

      everyone else is still ahead with core features like integrity

      I've heard a lot of complaints regarding MySQL integrity. For the record proper transactions have been around for ages, and 5.0 has largely corrected the remaining integrity problems with triggers and the Server Mode variable (options to prevent the insertion of 'bad' data). IMHO, it's the most important new feature. Why they haven't made a bigger deal about it is beyond me...

      And we need to stop saying "everyone is ahead of MySQL" when the only valid comparison is Postgres. The difference isn't that huge these days, they're both great products. To anyone who thinks Postgres is better across the board, I say 'vaccum'.

    4. Re:MySQL has finally caught up by temojen · · Score: 1
      To anyone who thinks Postgres is better across the board, I say 'vaccum'.

      AutoVacuum

    5. Re:MySQL has finally caught up by Anonymous Coward · · Score: 0

      At our company we have a regular non-HT P4 with 1gb of ram delivering around 60 pages/s using MySQL 4.1 over Coldfusion... And the only problems we have are buggy updates by Macromedia >_

    6. Re:MySQL has finally caught up by hey! · · Score: 1

      MySQL has finally caught up to the state of the enterprise relational database industry...as it was in 1999.

      1999 is a bit late for these features to be state of the art -- more like mid 80s I'd say. But it doesn't matter. Phrases like "Ready for the Enterprise" is a slogan, not a measurable property. There are many small enterprises (or parts of large enterprises) that muddle along with capabilities that are primitive by 1999 standards. Primitive 1999 MSQL stanards: I'm talking all those unforutnates who are using Access, FoxPro etc. Unfortunately, nobody is going to make their lives any better because it would canniblize the next step up in the product line.

      MySQL's good for a lot of things, and it's about to get a lot better. PG SQL is increasing its appeal to more and more users as well. Bottom line: progress is progress; especially if a project has a large installed based.

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    7. Re:MySQL has finally caught up by cardpuncher · · Score: 1

      Quite.

      I've had the dubious privilege of attempting to convert a web app that was originally designed to use Microsoft Access (don't laugh, it's a surprisingly capable performer for web applications provided you use the OLEDB driver) to both postgreSQL and MySQL. On the whole, the postgreSQL port was relatively painless (apart from the fact that the ODBC driver sometimes returns spurious null rows) and allowed some of the application logic to be simplified by making use of triggers and stored procedures. The MySQL port turned out not to be worth the effort at the time (MySQL version 4.1) since the lack of subqueries and views would have meant an inordinate amount of change to the application code.

      The "new" additional features in MySQL don't make it "enterprise class" - they're nothing to do with scale - they simply make it possible to use MySQL for a wider range of real-world problems than has hitherto been possible.

    8. Re:MySQL has finally caught up by cybpunks3 · · Score: 1

      So what--the current version of SQL Server is vintage 2000.

    9. Re:MySQL has finally caught up by killjoe · · Score: 1

      Not quite yet. It is missing point in time recovery, robust replication, replication of subsets, failover and clustering (with on disk table types), multi version concurrency, domains, and a dozen other features. I haven't checked to see if it has nested transactions yet either.

      Don't get me wrong, I think it's great they are adding features and catching up to firebird, postgresql, ingres and other open source databases. They really should tackle replication next though, right now only ingres has comprehensive and robust replication although postgresql is coming along.

      --
      evil is as evil does
    10. Re:MySQL has finally caught up by akac · · Score: 1

      The thing I would really like to see is a way to in a fool proof way, move databases from MySQL to Postgres and have all of our PHP scripts (not custom, some commercial, some custom, and none with time for us to go and find every little change required) just work.

      That's one thing I LOVED about Tango (now WiTango). It was a RAD web app development system that for the most part was 100% database agnostic. I know many others are too, but PHP is my favorite as a language. And I know if all the scripts we used would be written to use different libs they would be too, but they aren't and I think frankly this should've been a language feature, not a library necessity.

      I'd love an actual PHP API module that I could use which I could do a 100% search/replace for that would let me use Postgres or MySQL without any code changes.

    11. Re:MySQL has finally caught up by Osty · · Score: 2, Informative

      For the record proper transactions have been around for ages, and 5.0 has largely corrected the remaining integrity problems with triggers and the Server Mode variable (options to prevent the insertion of 'bad' data).

      Why oh why are not many of these new modes not on by default? For example:

      • STRICT_TRANS_TABLES: Why would you ever want to insert bad data? If you try to insert bad data, your insert should fail. (where "bad" is defined in several ways, such as "violates a foreign key, check, or unique constraint", or "does not match the data type, like trying to insert a bigint value into an int column.") As for rolling back transactions on such a failure, I'm indifferent. I could go either way, letting the DBMS roll back for me and immediately abort, or allow me to catch the error (have you seen SQL Server 2005's try/catch semantics? Sweet!) and rollback or continue as I choose.
      • ANSI_QUOTES: Double quotes (") do not define string literals in any SQL language. Don't use them as such. Use single quotes (') like you're supposed to. Double quotes are used when you need to reference a table or column that you unfortunately named the same as a reserved word, or even more unfortunately named with a space (e.g., I could have a table called "select" or "table with a space", and the only way to refer to either is by quoting). While other engines are as bad as MySQL in that they provide their own quoting characters (for example, SQL Server uses square brackets ([ and ])), they also generally allow ANSI quotes by default. So should MySQL.
      • ERROR_FOR_DIVISION_BY_ZERO: What? I have to enable this? If I divide by zero, something's wrong. Fail. Fail, dammit!
      • NO_AUTO_CREATE_USER: GRANT should never create users. GRANT grants permissions. It should not have a side effect. If you need a user created, create the user (through whatever database-specific method you must).
      • NO_ENGINE_SUBSTITUTION: This is another stupid mode. Why would you ever want MySQL to silently choose a different engine? If you mark your tables as InnoDB (don't even get me started about how that's not the default, and how it's stupid that you have to explicitly mark what tables you want to be transactional), chances are you meant that you really want them to be InnoDB. If InnoDB is not available, you need to fix your MySQL deployment. Otherwise, all of the work you did expecting transactions to work correctly is now out the window.
      • STRICT_ALL_TABLES: Goes along with STRICT_TRANS_TABLES, but why would you need two modes for this? This also goes with NO_ENGINE_SUBSTITUTION. If you set STRICT_TRANS_TABLES and mark all of your tables as InnoDB, but InnoDB is not available and you forgot to set NO_ENGINE_SUBSTITUTION, not only do you lose your transactional capabilities but you also run the risk that your inserts will not work in strict mode and thus may insert bad data. This is just stupid.

      Don't get me wrong, it's nice to have these options. I just think that it's silly that some of the more important modes aren't set as the default. Thus, even though the option is there to change it, the default behavior is the same as what people have been complaining about for a long time now, and just having the option to change it is not a full fix.

      And we need to stop saying "everyone is ahead of MySQL" when the only valid comparison is Postgres.

      That comparison is only valid if the criteria is, "Freely available open source database engines."

    12. Re:MySQL has finally caught up by poot_rootbeer · · Score: 1

      The thing I would really like to see is a way to in a fool proof way, move databases from MySQL to Postgres and have all of our PHP scripts (not custom, some commercial, some custom, and none with time for us to go and find every little change required) just work.

      You will only be able to make a foolproof migration if the commercial PHP/SQL scripts weren't written by fools in the first place.

      If they use the PEAR libraries (which SHOULD be the built-in default methods for DB interfacing in PHP, but the MySQL libs have history and inertia on their side), switching platforms should be as easy as replacing the DB connect string.

      If they use the builtin MySQL-specific functions, but all the SQL code is standard, it'll take some search-and-replacing, but it's not TOO much work to migrate.

      If they use nonstandard SQL extensions, there's not much you can do but refactor everything by hand.

    13. Re:MySQL has finally caught up by Anonymous Coward · · Score: 0

      Why does everyone love MySQL so much? It completely reminds me of Paradox and Access... Why not use something with transactional control and the ability to put some business logic at the database level?

    14. Re:MySQL has finally caught up by Anonymous Coward · · Score: 0

      Oh christ. You set the options once in the configuration file on installation, and don't worry about it again. Stop nitpicking.

    15. Re:MySQL has finally caught up by akac · · Score: 1

      I think the only MySQL specific function is the insert ID function (can't remember what it is). And PEAR is what I'm talking about not liking. It shouldn't have to be a library. PHP should have ONE database access function that works like PEAR. Especially with some of our commercial PHP apps which are "compiled" using the Zend optimizer, we can't change the source.

    16. Re:MySQL has finally caught up by rycamor · · Score: 1

      You hear a lot of complaints regarding MySQL integrity because MySQL still is only a bit player in that game. Even with all the strict options set, you still have certain problems such as invalid date values. But more importantly, you don't have two of the most useful data integrity tools known to SQL: a) the CHECK constraint, and b) domains. Not to mention, MySQL also doesn't have custom datatypes. For many serious applications, such as GIS special datatypes--along with special operators--are of paramount importance.

      Don't get me wrong... progress is still progress, and MySQL has made some serious progress, but facts are still facts.

    17. Re:MySQL has finally caught up by Anonymous Coward · · Score: 0

      Yup, and meanwhile PostgreSQL is prepping an 8.1 release with shared row locking, table partitioning, and better SMP support. Draft press release is here [pgfoundry.org].

      And yet it still lacks a nice native replication feature.

    18. Re:MySQL has finally caught up by RegularFry · · Score: 1

      It's an unfortunate fact of life that a large amount of their potential customers will be trying to run legacy applications on their shiny new MySQL 5.0 database. If those customers find they have to do *anything* to get their app to work properly (including change default settings), it's a black mark for MySQL, and it may be a big enough problem that they go for something else.

      --
      Reality is the ultimate Rorschach.
  3. Just in time... by Martin+Blank · · Score: 5, Interesting

    Sneaking in just in time before MS SQL 2005 can get out the door (or perhaps just after) is good for this.

    I recently showed the latest rev to the SQL devs here, and they were most impressed. Most of the complaints about it were gone; the new GUI is miles beyond what they had before, and the new features (views, stored procedures, better VARCHAR support) have people thinking that for smaller projects, MySQL will work out just as well as MS-SQL, and at a fraction of the cost, if any cost at all.

    --
    You can never go home again... but I guess you can shop there.
  4. InnoDB bought by Oracle by Anonymous Coward · · Score: 0

    What is the real impact on MySQL 5.0 now that Oracle has bought InnoDB?
    http://www.eweek.com/article2/0,1895,1869989,00.as p

    1. Re:InnoDB bought by Oracle by Kemuri · · Score: 1

      And if you read the comments, you will see there are some big errors in
      that article. Arjen explains it in one go:

      "The key 5.0 features such as triggers, stored procedures, update-able views, etc
      are available from all storage engines."

      So, not only InnoDB! The features are working fine for MyISAM for example!

    2. Re:InnoDB bought by Oracle by jadavis · · Score: 1

      But not ACID transactions or Foriegn keys, both of which are critical for any database trying to call itself "enterprise class".

      The only storage engine that supports those things now belongs to MySQL's competitor. Not. Good. At. All.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    3. Re:InnoDB bought by Oracle by davegaramond · · Score: 1

      There's also BDB, but we can consider it dead (it's been dead for long, actually). So yeah, MySQL is heavily dependent on InnoDB. The best alternative, should Oracle decide to refuse licensing or extort money from InnoDB licenses in the future, is to fork InnoDB and encourage community development.

    4. Re:InnoDB bought by Oracle by larry+bagina · · Score: 1
      MySQL AB (and InnoDB) are released under 2 licenses:
      1. GPL
      2. non-GPL
      In order for MySQL to dual license, they need complete copyright. Obviously, they don't have a copyright on the InnoDB, but they license a non-GPL version from InnoDB.

      If Oracle raises the InnoDB prices, or refuses to license it, MySQL still has access to the current GPL code, but they can no longer sell a closed source version with InnoDB included.

      If they wish to keep selling a closed source version, their best option is to develop their own alternate table type that doesn't suck. Given their track record ... they should be glad that PostgreSQL is BSD licensed.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    5. Re:InnoDB bought by Oracle by jadavis · · Score: 1

      The best alternative, should Oracle decide to refuse licensing or extort money from InnoDB licenses in the future, is to fork InnoDB and encourage community development.

      That is the worst thing that MySQL AB can do. They would not be making any money from it because they couldn't sell it commercially. The commercial product would then be worse than the community version. And MySQL would have to live with the PR equivalent of a black eye.

      That makes no more sense than Oracle supporting PostgreSQL development.

      However, that may be good for the MySQL community. The community would have to restructure itself so that it wasn't based around a single commercial company. It would be tough to really progress for a while, but at least the existing users could be supported.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
  5. Re:Great! by bcat24 · · Score: 3, Informative

    See the MySQL documentation for triggers, views, and stored procedures, respectively. To answer your question, if you don't know what they are, you probably don't need them.

  6. Stored Procedures by matr0x_x · · Score: 0

    For any developers that use stored procedures on a regular basis, you will appreciate how significant a step forward in the right direction this is! The investor in me thinks Oracle stock might be a good thing to buy :)

    --
    LINUX ONLINE POKER: Linux Poker
    1. Re:Stored Procedures by Anonymous Coward · · Score: 0

      Larry? I didn't know you read slashdot.

  7. Re:MySQL has been, and always will be sub standard by TinyManCan · · Score: 4, Insightful

    Not everyone needs the same set of features in their database product. Some people want something that is very lightweight and fast.

    Other people want bulletproof "unbreakable" databases with thousands of features. Some people want something right in the middle.

    Having a variety of solid choices is not a bad thing. You should't be affraid of a little competition, as it is good for the entire market.

  8. Re:MySQL has been, and always will be sub standard by thewils · · Score: 0, Offtopic

    Kinda odd that they'd make such an earth-shattering announcement on a 404 page?

    --
    Once I was a four stone apology. Now I am two separate gorillas.
  9. Still Not an Enterprise Solution by WhoDey · · Score: 3, Insightful

    As much as I love (and use) mySQL, it's still not, nor will it likely ever be (never say never) an enterprise solution. Prove to me that mySQL is robust enough to be the backend service for a major bank's mortgage application, for example. It's simply not. As a previous poster already mentioned, mySQL has finally caught up to the base set of features that all major DBMS's had years ago. Now, after that rant, I will say this. mySQL is great at what it's designed to do. I use mySQL as the backend for personal websites and applications. It's (relatively) lightweight, simple, easy to administer, and, best of all, free as in beer (not withstanding products purchased from mySQL AB). So before you get all huffy about what I said in the first paragraph, just remember that mySQL is great at what it's made for, it's just not made to be an enterprise solution.

    1. Re:Still Not an Enterprise Solution by gtoomey · · Score: 4, Insightful
      You can't compare Oracle (a Boeing 747) to MySQL (a Cessna). But there are a lot more Cesnas sold than Boeings.

      There's a very big niche for smaller DBMSs. Plus MySQL tends to be fast and the feature set is growing.

    2. Re:Still Not an Enterprise Solution by Anonymous Coward · · Score: 0

      For someone who loves and uses MySQL, you really don't know how to spell it ;)

    3. Re:Still Not an Enterprise Solution by Circuit+Breaker · · Score: 2, Insightful

      Ahhmm.

      Most likely, your bank is running its mortgage application on a seven year old database. Many of these apps are actually running on much older hardware/software combinations. I don't think mortgages have changed that much in the last 10 years or so.

      Newer != Better, New Features != Required Features.

    4. Re:Still Not an Enterprise Solution by cayenne8 · · Score: 1
      "You can't compare oracle (a Boeing 747) to MySQL (a Cessna)."

      I think a better comparison would be:

      Oracle compares to PostgreSQL as

      MS Access compares to MySQL.

      Although grant it..with the new things they're adding...MySQL is now steps above MS Access.

      --
      Light travels faster than sound. This is why some people appear bright until you hear them speak.........
    5. Re:Still Not an Enterprise Solution by Dehumanizer · · Score: 1

      You're wrong. Nothing, but absolutely nothing is worse than Access.

      --
      The Tlog - a technology blog
    6. Re:Still Not an Enterprise Solution by jaseuk · · Score: 1

      Nah, access was fine for what it was.

      When you grew out of access the database could easily be ported to either SQL Server or Postgres, there are not a great deal of differences particularly if you move up.

      Trying to move from a database written in any of those three back to MySQL was almost impossible though, due to lack of views and subselects, while those were not essential for an app written from scratch, they are essential if you want to port back from a database that has been using them.

      It'll be interesting to see how the new version of MySQL shapes up, it's always been a good performer but without some of those features it was always a choice with most business apps of Postgres or SQL Server for us, of course mysql has been used for simpler apps (When you've got more than 30 tables views tend to become essential). and we've never had any problems with it.

      Jason

    7. Re:Still Not an Enterprise Solution by Anonymous Coward · · Score: 1, Informative
      Prove to me that mySQL is robust enough to be the backend service for a major bank's mortgage application, for example.

      I used to work on a site that got millions of hits per month. Most of the content was published static, but there was a fair amount of dynamic content. The same MySQL database was used for their content management system. It ran flawlessly. I'm not arguing that MySQL is better than PostgreSQL, but this company (should I name it) was the biggest in their industry. I would classify their use as "enterprise" level.

      Don't NASA and Yahoo use MySQL for some things? They're pretty big, but they're not banks. How about we use the best tool for the job?

      Our organization (although not big enough to be considered "enterprise" level) uses MSSQL for mission critical stuff, but we have a MySQL database that runs a lot of internal apps. I have no complaints.

    8. Re:Still Not an Enterprise Solution by Decibel · · Score: 1
    9. Re:Still Not an Enterprise Solution by cayenne8 · · Score: 1
      "Nothing, but absolutely nothing is worse than Access."

      I stand corrected. I've often thought that Access should, by law, be wiped from the face of the earth. I can't tell you the number of times I've seen...some PHB or other similar type, with no education of RDBMS design, has started a little Access db (I hate to call it a database), only to hand it out...have it grow...become an important tool of the company...and THEN, they need to port it to a real RDBMS. Then, I get it. What a gawdawful mess...one or two large tables...mixed case naming, imbedded CR/LF's in free form text fields...etc.

      Its prevalence for 'creators' of this tripe is an abomination.

      And frankly, I dunno how those who use it can get a decent GUI out of the tools provided...unless you do everything in wizards...well, the time I was forced to try to use it....couldn't hardly find any good documentation how to do a custom gui for it with Access tools...and I'm pretty good at ferreting out info.

      Anyway, yes...I was totally wrong in comparing MySQL to ms access. I DO have more respect for MySQL than that....

      :-)

      --
      Light travels faster than sound. This is why some people appear bright until you hear them speak.........
    10. Re:Still Not an Enterprise Solution by einhverfr · · Score: 1

      You can't compare Oracle (a Boeing 747) to MySQL (a Cessna). But there are a lot more Cesnas sold than Boeings.

      So you are calling MySQL a hobbyist database manager?

      --

      LedgerSMB: Open source Accounting/ERP
    11. Re:Still Not an Enterprise Solution by poot_rootbeer · · Score: 1

      Most likely, your bank is running its mortgage application on a seven year old database.

      Yes, but that database system is a relatively bulletproof monster with a 25-year pedigree.

      And while the production systems may be running a 7-year-old version right now, you can be sure they have a test machine with a 1-year-old version of the same DBMS on it, getting it certified so that when the old version is end-of-lifed they will be able to migrate seamlessly.

    12. Re:Still Not an Enterprise Solution by hobuddy · · Score: 2, Informative

      You're right, and it's fine for MySQL to be a Cessna.

      But for many years, MySQL proponents have, in blatant defiance of the facts, claimed that their Cessna could seat 275 passengers and cross the Pacific in one hop. If MySQL lacked a feature, proponents claimed the feature was unnecessary fluff. As soon as the feature was added, they announced that "MySQL is ready to run with the big dogs." When the features in question were utterly fundamental to effectively exploiting the power of the relational database model, this tactic made MySQL proponents look like they were either ignorant or unabashedly dishonest.

      That's why so many people today have a negative gut reaction to MySQL: the history of blatantly distortionary marketing, not the entirely justifiable choice of market segment.

      --
      Erlang.org: wow
    13. Re:Still Not an Enterprise Solution by mw · · Score: 1

      >I used to work on a site that got millions of hits per month. Most of the content was published static, but there was a fair amount of dynamic content. The same MySQL database was used for their content management system. It ran flawlessly.

      A friend of mine used to drive without safety belt. It work flawlessly for 50000km. Now he's dead.

      Rethink your arguments.

    14. Re:Still Not an Enterprise Solution by bedessen · · Score: 1
      it's still not, nor will it likely ever be (never say never) an enterprise solution. Prove to me that mySQL is robust enough to be the backend service for a major bank's mortgage application, for example.

      I hope the irony of this being a comment on slashdot is not lost on anyone else.

      (That would be slashdot, the site which is powered by a mysql database, the site that serves around 50 million page views per day and is consistently in the alexa top 1000. And yes, I am aware that the usage pattern of a forum/web log site is very different than that of a bank. I'm no mysql fanboy, I don't pretend that it's ready for critical data of an enterprise. I just find it funny that these threads always seem to take place on the very database that everyone loves to hate.)
    15. Re:Still Not an Enterprise Solution by StrawberryFrog · · Score: 1

      But there are a lot more Cesnas sold than Boeings

      And if both were free at your local store and could fit in your garage would that still be the case? It's a mystery to me why there's so much more mySQL than postgreSQL around.

      --

      My Karma: ran over your Dogma
      StrawberryFrog

    16. Re:Still Not an Enterprise Solution by Anonymous Coward · · Score: 0

      Hasn't Slashdot always used MySQL in the default "produce wrong answers quickly" mode? If you use sane (ACID compliant) settings, how fast is MySQL then? For that matter, do you consider Slashdot to be robust? I see outages pretty frequently.

    17. Re:Still Not an Enterprise Solution by bedessen · · Score: 1

      Slashdot uses the InnoDB engine and not MyISAM2. I'm pretty sure wikipedia uses InnoDB as well.

      InnoDB is the one that actually supports transactions, row-level locking, foreign key constraints, triggers, etc. The "produce wrong answers quickly" engine would be MyISAM2, which is much faster but generally does not come close to ACID compliancy. The typical MySQL line is that for a lot of uses "you don't need all that fancy stuff." I guess I agree to a certain extent that for crap like guestbooks and blog entries and light-duty web apps it's appropriate.

      And no I don't consider slashdot to be the paradigm of uptime and robustness.

  10. Re:Great! by LochNess · · Score: 4, Informative

    A trigger is something that is invoked on the database server when a predefined even occurs. For instance, an update to table 1 in database A could make the database server update table 2 in database B automatically.

    A view is a way of making a pseudo-table. You can create something that looks like a single table, but can contain columns from multiple tables. If you have table 1 with columns A, B, C, D and table 2 with columns E, F, G, H , you can create a view 3 with columns A, C, F, H.

    A stored procedure is something that is precompiled and put on the database server that performs a number of actions when called by a client. It can replace a complex series of SQL statements, say, in such a way that performance is much improved over having separate statements that would need to make multiple calls to the server.

  11. Playing catchup... by slashname3 · · Score: 2, Insightful

    So they finally add features that postgresql has. And don't forget the more difficult to use licensing they have imposed compared to postgresql.

    1. Re:Playing catchup... by bani · · Score: 2, Insightful

      Yeah, because all the world is a nail and postgresql is the hammer.

      It's always easier when you view the entire universe in black and white.

    2. Re:Playing catchup... by gwhalin · · Score: 1

      Seriously!!! That GPL licensing is insanely hard to figure out! Baffling?! I just gave up and installed Access.

      --
      Greg Whalin
      greg@whalin.com
    3. Re:Playing catchup... by mdielmann · · Score: 2, Interesting

      Please give me an example where mySQL is a better choice for an application as opposed to PostgreSQL. I can only think of two, neither of which point to mySQL being a superior product.

      --
      Sure I'm paranoid, but am I paranoid enough?
    4. Re:Playing catchup... by Anonymous Coward · · Score: 1, Interesting

      Can you please elaborate on what mysql does better than PG as a DB server? And what it does better than SQLite as an embedded database?

      From my testing, it is not stronger on any counts: Features, performance, scalability, resource use, licensing, support costs.

      I am not bashing, I just have never found a good use for mysql myself, I just use it because so much PHP code requires it.

      I am sure I will be modded a troll for this, but the mysql devs did say that triggers, views, even transactions were unnecessary!

    5. Re:Playing catchup... by jrumney · · Score: 2, Insightful

      It's not the GPL that is the problem, it is MySQL's interpretation of it (distributing your program on the same media as MySQL is listed in their FAQ as a reason why you would need a commercial license), and the fact that they GPL the client APIs.

    6. Re:Playing catchup... by Anonymous Coward · · Score: 0
      So they finally add features that postgresql has. And don't forget the more difficult to use licensing they have imposed compared to postgresql.

      So I guess that makes MySQL useless then. Too bad PostgreSQL is a PITA to install on Win32.

      I'm betting PostgreSQL also has a lot of features Microsoft Access or SQLite don't have, but there are a still a lot of people who like to use them.

    7. Re:Playing catchup... by Kent+Recal · · Score: 1

      Please give me an example where mySQL is a better choice for an application as opposed to PostgreSQL.

      Web applications. Mostly very simple queries (e.g. no joins over more than two tables) with high concurrency, very few writes. MySQL more often than not outperforms postgres in such a scenario. A custom database (e.g. tdb, bdb or even from scratch) can often do it even faster but designing and maintaining such a beast is rarely reasonable (loss of flexibility).

      I can only think of two, neither of which point to mySQL being a superior product.

      What the heck do you consider a "superior product"?
      Last time I checked all that mattered was: Use the right tool for the job.

    8. Re:Playing catchup... by bani · · Score: 1

      What the heck do you consider a "superior product"?

      Anything that's the fad of the moment. You get your badge of leetness by bashing mysql.

    9. Re:Playing catchup... by davegaramond · · Score: 1

      Too bad PostgreSQL is a PITA to install on Win32.

      Wake up. This is 2005, not 1999. Postgresql-on-Cygwin era is over man. Read this. PostgreSQL is easiest to install, easier than MySQL or Oracle!

    10. Re:Playing catchup... by davegaramond · · Score: 1

      Hey, at least Postgres is a better hammer than MySQL. And it's fREE (as in beer and speech and more).

    11. Re:Playing catchup... by kevinadi · · Score: 1

      Another is better support for matlab connectivity. Granted, it's not created by Mysql, but the matlab connectivity in postgres is just total hell. I use matlab for simplicity, wrapping postgres' C functions in matlab doesn't make it an interface. And no, writing the interface myself is NOT an option.

      Also, better windows support. You people that think everything should be done in UNIX needs to get out more.

      This Mysql bashing trend really make me sick. You OSS supporters should be supporting OSS, no? Everyone's been saying postgres is the best thing since Jesus was here, but that is simply not true. Both databases could only get better with competition, killing Mysql by advertising it as a bad product everywhere is counterproductive.

      Don't even start with the licensing issue with me. Some Mysql bashers have an undeniably large reserve of excuses. First, it was the triggers, stored proc, etc. Then it was data integrity (which was solved by InnoDB). Then the license. Probably their mascot after this. They probably don't even know why they don't like it in the first place.

      Also, don't tell me since it's OSS I can write my own goddamn function and extend the goddamn program. That is simply not an option to many people, I actually start to think that people keep saying those mantra as an excuse but never actually DO it.

      As for myself, I prefer to use simple tools to help with my work and not get bogged down trying to learn how to use the tools in the first place. Some OSS zealots may get weird sensations in their sensitive part by trying to comprehend what this source code's doing, but that's just not normal for a lot of people, including me.

      In short, Mysql does what I need right now. Postgres does not. In the future that might be reversed. If everything have to be perfect, then use the goddamn Oracle for everything.

    12. Re:Playing catchup... by bani · · Score: 1

      so what exactly is mysql preventing you from doing?

      i think the postgresql supremacist attitude explains a lot about why it's not used, sorta like how djb's neutron-star-dense ego turns people away from qmail.

    13. Re:Playing catchup... by slashname3 · · Score: 1

      Quoting kevinadi: "As for myself, I prefer to use simple tools to help with my work and not get bogged down trying to learn how to use the tools in the first place."

      Now that's a neat trick! Kind of like using a hammer to drive screws. No need to learn how to use a screw driver, that simple hammer thing gets the job done with a little effort. Or do you just pile the tools on the table and push them around hoping they do something useful?

    14. Re:Playing catchup... by slashname3 · · Score: 1

      A few years ago I wrote some applications that used mysql as the database. Worked just fine for that purpose. This application was used internally to the company. Then the big change in how mysql did their licensing came around. Because of that whole discussion and the uncertainty regarding when a paid license was required it was easier to switch to using postgresql. The postgresql license is unambigous and did not put any work done internal to the company at risk unlike mysql. Personally I can use either database, but my current preference is to use postgresql. If the licensing was not an issue it would be a toss up as to which I would use. At the present time I would lean toward postgresql since I have used it more recently.

    15. Re:Playing catchup... by mdielmann · · Score: 1

      Thanks for the info about web apps. It's worth knowing. And my idea of a superior product is one that is the right tool for the most jobs, and secondarily the right tool for the jobs I do most often. From what you're saying, mySQL may be the superior product for web apps, but not in other areas. And that's okay, if you primarily do web apps.

      --
      Sure I'm paranoid, but am I paranoid enough?
    16. Re:Playing catchup... by bani · · Score: 1

      why not use sqlite then? the license is even less restrictive than postgresql's (it doesnt have the chest-beating "you must include this advert for ucb" in it).

      i'm curious what exactly was unclear about the paid license. were you distributing mysql-based software binaries to your customer or not?
      http://www.mysql.com/company/legal/licensing/comme rcial-license.html

      what exactly about the license is unclear or put you at risk?

    17. Re:Playing catchup... by slashname3 · · Score: 1

      At the time the licensing issue came up the info on the site appeared to say if you were a commercial business and you used mysql for anything that you needed a license. At the time the particular application I had setup was used by internal users only. Had no plans to distribute this program outside of the company. Not wanting to get the group in trouble for any licensing issues it was easier to just change databases where there was no question about licensing. It was tough enough to do the inventory and verification for the microsoft products we had at that time. And the switch over was not that difficult. In some ways I like postgresql better but that is more of a personal opinion. Either database could be used in this particular job. I did not have any heavy duty performance requirements in this particular case.

      At home currently I use one application that uses a mysql database extensively, mythtv. There is some work being done (or was being done) to enable the use of postgresql or other similar databases. In this case the database sits behind the scenes doing what it is suppose to do. And I don't have any license issues since this is not a commercial application or business. If mythtv had the option I would probably opt for postgresql. That's just my personal prefrence. But now that mythtv is running fine with mysql I probably won't change that any time soon.

    18. Re:Playing catchup... by bani · · Score: 1

      sounds like mythtv should switch to sqlite. it's far more suitable, has a less restrictive license than postgresql, is easier to embed, and has zero-configuration. not even postgresql can boast zero-config.

    19. Re:Playing catchup... by slashname3 · · Score: 1

      The last time I looked at the mailing list I think they were trying to abstract the whole database portion so you could use what ever database you wanted. As far as the BSD type licensing of postgresql there really is no restriction other than attribution which is not a big issue and just good form.

    20. Re:Playing catchup... by bani · · Score: 1

      keep in mind some companies business models (microsoft,sco,etc) depend on misrepresnting the origin of code. :)

    21. Re:Playing catchup... by slashname3 · · Score: 1

      And some companies use unlicensed software. Does not make it ethical or the right thing to do. :)

      A lot of people don't realize the licensing nightmares they can get into until they are responsible for certifying that their company only has licensed software running on their systems. After doing the research and inventory of systems I found that we were short a small number of visio licenses. I provided the info to upper management and told them either we had to remove the software or buy licenses. They did nothing until I also passed along the letter from Microsoft which required a VPs signature verifying that the company was in compliance. A purchase order was cut that day. Upper management should not have to have been forced to do this. And I did not like being in that position. But that was several years ago now. All bad memories.

    22. Re:Playing catchup... by davegaramond · · Score: 1

      Um, the license? Add to that: I'm tired of having my MyISAM tables corrupted, no views, no stored procedures, no CHECK constraints. Ok there's MySQL 5 but, sorry, I don't think I need it anymore. Well except when I need to install some PHP apps that insist on MySQL.

      And the primary reason qmail is not used more _is_ the license.

    23. Re:Playing catchup... by Anonymous Coward · · Score: 0

      no, the reason qmail isn't used more is because the author is a raging asshole.

    24. Re:Playing catchup... by kevinadi · · Score: 1

      That, sir, is called a hack. It can be done. Although I never tried pushing tools around the table as you suggest. Might worth trying.

      Anyway, I'm not as dumb as you suggest. I just don't want to spend time trying to tweak and learn databases when what I NEED is a good program that stores data and can arrange them according to my needs. I don't have to use super duper ultra powerful database that can do billions of requests per second since I'm the only one that access that thing. By suggesting me to dump Mysql and use postgres for its power is just overkill. Plus, postgres is more complicated to operate than Mysql. Try to grant a select permission in postgres in a database with 50 tables. You can't. You have to use script or pgadmin, whereas in mysql you can grant select permission on whole databases and its tables. Other thing is, try to get data back from postgres into matlab. You have to write a script that does looping over all the result set instead of getting them instantly into variables like mysql. I did skim the manual and the tools available of both databases, and came to the conclusion that to do research work that lean heavily on matlab (no C or whatever) mysql is the best, free tool available.

      I honestly think that some tech savvy people are using technology for ego's sake and look down upon other people that don't use the latest and the greatest and thus insult other people's intelligence without any reasoning. This is a dangerous trend that most of us have fallen into once or twice (I know I have), and need not be repeated. Case in point is that repeated post over here that called Bill Gates an idiot because of whatever he's trying to do. Well, if he's dumb then he won't be the richest man in the world, would he? On other topic it reminds me of a remark a guitarist in Jet said about Eddie Van Halen, saying Van Halen can't play guitar with feeling. I never laughed so hard in my life and never care to listen to Jet anymore, not with their high opinion of themselves.

    25. Re:Playing catchup... by bani · · Score: 1

      you are a perfect example of what's wrong with the postgresql community.

    26. Re:Playing catchup... by bani · · Score: 1

      Don't even start with the licensing issue with me. Some Mysql bashers have an undeniably large reserve of excuses. First, it was the triggers, stored proc, etc. Then it was data integrity (which was solved by InnoDB). Then the license. Probably their mascot after this. They probably don't even know why they don't like it in the first place.

      Yep. It's fashionable and leet to bash mysql, like it's fashionable and leet for bsd users to bash linux. And as you pointed out, it doesn't really matter what mysql can or can't do, they will come up with some bogus reason-du-jour. It gets even better when the people bashing don't even use mysql _or_ postgresql, they just read a couple articles on the web and jumped on the bashing bandwagon to make themselves feel leet.

      They dont seem to understand they don't win converts by calling them idiots. Then they feverishly wring their hands wondering aloud why nobody seems to use postgresql. Then they go back on /. and call some more people idiots.

    27. Re:Playing catchup... by slashname3 · · Score: 1

      Say again? When did I ever state that I represented the postgresql community? kevinadi apparently does not waste time trying to learn how to use tools. His words not mine. Regardless of the database you use it usually a good practice to spend some time learning how things work. His statements indicate that he expects things to just work. Postgresql is not harder to use that Mysql. I've used both. My personal preference currently is postgresql for most things. I don't harbor any strong negative feelings toward Mysql, I just find the licensing provided by Postgresql easier to deal with than some of the ambigous information published on the mysql web site concerning their licensing. As such it is easier for me to justify and defend the use of postgresql for projects used in a business, no risk of running into any licensing issues.

      What other people use for their database is up to them. I don't really care. But silly statements along the lines of

      kevinadi wrote: "I prefer to use simple tools to help with my work and not get bogged down trying to learn how to use the tools in the first place."

      should be called out. He probably also has a shelf full of technical books that have never been opened, why should he spend time getting bogged down reading about a subject when he can just get along with what he already knows?

    28. Re:Playing catchup... by slashname3 · · Score: 1

      kevinadi wrote: "Might worth trying. Anyway, I'm not as dumb as you suggest."

      You actually think that suggestion was serious? Did not really suggest you were dumb but now I am having serious doubts. :)

      BTW: I don't think I ever suggested you dump mysql. Your project, you pick the tools you are familiar, happy with to complete that project. I don't really care. As to your examples I think if you spent a little time learning postgresql you would find that anything you can do in mysql can be done in postgresql as well as the other way around. Will the implementation be exactly the same, no, but they will have equivalent results. But then you don't want to get bogged down in learning anything so I guess you closed that door already.

    29. Re:Playing catchup... by Anonymous Coward · · Score: 0

      your posts and replies prove that no, you really do care, contrary to your claim.

    30. Re:Playing catchup... by kevinadi · · Score: 1

      Sorry if I sound too frontal, it was late in Australia and I was quite tired, so no hard feelings or anything :)

      But anyway, I do want to use the best AND most reliable tool available to me. I've been having doubts about mysql's reliability (with Innodb of course) and instead I found that postgres survived the pull-the-plug test intact while I've been unable to see the same result for mysql. Since my data is on multiple databases and involves millions upon millions of rows, I can't afford to let an error creep through.

      I just simply came to the conclusion that day that while postgres' integrity might be what I need, mysql has better connectivity option available to me. But on to the point of my original post:

      I think what's happening in the OSS world currently (postgres vs mysql, bsd vs linux, etc) is not productive and misses the point. If this keeps happening, Bill Gates don't have to worry about OSS at all since we will destroy ourselves by petty bickering and unreasonable side-taking. ESPECIALLY about mysql's license. Remember that this license was oh-so praised a while ago, now it became public enemy #1 just because some people like the free ride too much and demands everything to be free for their own selfish reason, like including a free database program into their own for-profit adventures, the practice of which have been sneered upon in the past.

      Now this hit me like a double standard in ourselves. We don't want companies to use OSS stuff for their profit, but if we want to do so it's within our rights. I remember everyone here called foul when a company was discovered using GPLed stuff for their product. At the same time, GPL was judged to be too restrictive as it requires derivative works to include the source. The posts about mysql have been around this point lately, with lots of posts claiming that postgres is "freer" and attempts at any cost to discredit mysql. I'm not surprised if the OSS movement is dead in 20 years if this continues.

      As for myself, I'm happy to do my part. If using mysql means that I have to release the source code of my experiments, then so be it. I just don't think people would enjoy reading it since over time it's become quite a spaghetti code full of hacks that even I have problem understanding sometimes :)

    31. Re:Playing catchup... by kevinadi · · Score: 1

      Exactly the point. That, and the name "postgresql" does sound more leet than "mysql" :)

      I guess no matter what philosophy we hold dear, nothing can get in the way of human nature of jumping on bandwagons.

    32. Re:Playing catchup... by bani · · Score: 1

      I'm not surprised if the OSS movement is dead in 20 years if this continues.

      And people like slashname3 and backslashdot and mcrbids will have the dubious honor of having played a part in killing it. And all for what, a group facial of software-supremacist-bukkake from all that mental masturbation. Hope it was worth it guys. BillG has nothing to fear from OSS with people like you around, you hurt OSS more than BillG ever could.

    33. Re:Playing catchup... by kevinadi · · Score: 1

      Let's just forget about the whole thing and start with an open mind instead. There are valid criticism coming from postgres people, and valid defenses from mysql people. However, some criticism aimed toward mysql are ridiculously out-of-date and irrelevant and start to degenerate into "mysql sucks because it is" category. THIS is the attitude that's destroying us. Another case in point is the "windows is unstable toy OS" thing. Guess what, windows now is stable. All the security holes will eventually be closed or minimized with Bill's billions. We can't live in the past where linux is more superior since now it is, simply, not true anymore. Living in the past and ignoring the current facts are a dangerous combination that'll do nothing good. And friends, this is how Bill Gates will beat us to the punch. I'm sure he already realized this fact and is working toward this.

      Another case in point, many critics were trying to prove over and over again about mysql's "guessing" behavior and table-locking. This is simply not true anymore. Innodb doesn't use table locking, but uses a similar multiversioning approach like postgres.

      Also, mysql CAN be configured to be as restrictive as you like. Those "guessing" behavior is the default, which any knowledgeable DBA would disable immediately. Granted, it's a pretty moronic default, but it's changeable nonetheless.

      I've seen some so-called DBA posting with impressive resume and cool-looking terminal dump with dubious results here. Too many people are calling themselves DBA with millions of years of experience with terabytes of data, where they testing databases against one another using its DEFAULT setting, which is, useless in my opinion. You don't compare NT vs linux using their default settings, no? Contrary to popular belief, NT is actually very stable with proper setting.

      My advice is simple. Before dropping judgment on whatever database/text editor/OS you're comparing, take some time to actually learn the feature set of the contenders. Most of the complaints and examples of errors about mysql I've seen are NOT repeatable once I properly set my own install. Zealotry toward one program won't do any good and would look childish in hindsight.

    34. Re:Playing catchup... by bani · · Score: 1

      Let's just forget about the whole thing and start with an open mind instead.

      On /. ? You must be new around here.

      You'll be about as successful convincing postgresql fanatics to fairly evaluate mysql, as you would be to convert militant islamists to judaism.

      Forget it. Ain't gonna happen, especially not on /. It's wasted breath, wasted effort.

    35. Re:Playing catchup... by slashname3 · · Score: 1

      Don't misconstrue healty discussion as being detrimental to OSS. It is by discussing the good and bad points of different ways of doing things that all sides advance. Typical leap frog effect, one product develops a novel solution to a problem. Product B improves on novel solution and includes it in their product. Product A learns from Product B and further improves on the solutions. It goes back and forth like that. The idea is to have such free exchange of ideas and have discussions about them. Nothing bad about that, it is actually healthy. So predicting the death of OSS in 20 years is a little silly.

      Stating facts about these two databases is not attempting to discredit mysql at "any cost". It is simply stating the facts. Mysql has used a unique interpetation of the GPL which if applied in how they interpet it would require a company that has built an application for internal use to release all of the code for that application. I respected their rights to interpet the GPL that way and as such I chose to use a different database. Nothing more or less.

      Personally the definition of derivative works in regards to the GPL needs to be clarified. Simply linking to libraries is not in my opinion create a derivitive work. If you modified those libraries for your own use then that is a derivitive work and according to the GPL should be published. This allows others to look at your modifications of that library and decide if your changes are better and if they should be included by default in future versions. But that is my opinion only.

      I'm not the first engineer to move away from mysql because of their interpetation. A database by itself is not really that useful. You have to have code that uses that database to do something. The programmer for that piece of code should decide if they want to release it under the GPL or not.

      And remember one of the ideas behind OSS is freedom of choice. You personally get to decide between the options available what you want to use or don't use. No one is forcing you to make that choice.

      BTW: I have read many things indicating that postgresql is more reliable than mysql. I always take such reports with a grain of salt. Your experience seems to validate those items. But in some cases reliability may not be a major factor. You get to decide that. I have one application running that uses a 1TB file system using LVM across four drives. If/when one of those drives fail I fully expect to lose all the data on that file system. If I was concerned about that I would setup the drives in a raid configuration. But in this case I chose not to since that is not a high priority concern to me. We all get to make such choices. That is what makes this stuff interesting. :)

    36. Re:Playing catchup... by kevinadi · · Score: 1

      I agree with your points. Derivative work as you say is reasonable and that's what us non-lawyer would tend to think. I'm not as concerned about people that's been posting in this thread since we all hold reason in high regard, but in general there's been increasing trend of bashing something away without due process, and this is what's been bothering me greatly about what's wrong in OSS today. As I mentioned, some of the comparisons doesn't even make any sense or based on faulty premises, and I'm afraid it's quite contagious to people new to the scheme of things.

      But anyway, your points about databases in general is well said. Your application is different than mine. Where you (might) focus more on the coding side, I focus on the connectivity and ease of management side. Both of us want reasonable data integrity protection. But I'm afraid we get quite sidetracked :)

      I'm all for free exchange of ideas and good constructive criticism. I'm just sick of hearing really bad criticism that degenerates into name-calling. It is not reasonable to compare A and B where A is a version from 5 years ago. As far as I'm concerned, I'm keeping my option open and I have both postgres & mysql running in my comp. I know the facts supports postgres as the better product overall for some needs, but until a decent matlab connectivity option is available, I have to stay with mysql whether I want to or not. It's just that people from both camps are incredibly stubborn about their choice and won't even listen.

      I'm not a good coder. In fact I'm not a coder at all, so extending the functionality of any program is not an option. I would most likely be screwing some things instead of fixing them. People just need to remember that there are many, many people like me out there that want to use OSS software but with zero ability to fix/improve/create something. This thread have been my personal frustration over the state of affairs in OSS.

      BTW you might want to look at mysql, the beta, now. It's all coming together now and look hell of a lot better than it was a year ago. I'm also looking forward to the new postgres, although they don't seem to bother with ease of management or connectivity options in the new version.

    37. Re:Playing catchup... by Anonymous Coward · · Score: 0
      Those "guessing" behavior is the default, which any knowledgeable DBA would disable immediately.
      That's a good step. However, since MySQL has been notorious for silently ignoring requests for restrictions it doesn't yet implement, is it possible to write client code that reliably detects whether the DBA has switched to sane default error checking and that those error checks are actually performed in the server build?
  12. Re:MySQL has been, and always will be sub standard by Scoria · · Score: 2, Informative

    Oracle has just announced that they are open sourcing their famous database platform. Long live free software.

    The above post is factually incorrect. Oracle acquired Innobase Oy, the firm responsible for InnoDB, a database engine commonly used with MySQL. Many people are obviously skeptical of this acquisition.

    It's highly unlikely that they would ever donate their enterprise product to the open-source community. Suffice it to say that the shareholders would not be pleased with a bankruptcy filing.

    --
    Do you like German cars?
  13. Re:Great! by wmshub · · Score: 1

    Errr, ok I'll bite. Anybody correct me if I'm wrong, since 99% of my SQL work has been MySQL 4.xx these are all things that I've heard of but never used so I may be off by a bit:

    Triggers Automatic stored procedures executed on some change to the database. Views Basically a persistent select/join that looks like a separate table. Any changes to the view are "copied through" and made to the underlying separate tables. Stored procedures Code that lives on the database backend that can be call RMI-style by your application. Usually pushed there by the application at some point. Stored procedures can sometimes make changes more efficiently than the application itself because the data doesn't need to flow back and forth between your layers as much.
  14. Re:MySQL has been, and always will be sub standard by bcat24 · · Score: 1

    I agree. Many people don't need an enterprise database. For, say, a blog, forum, or a simple access-restricted website, MySQL is more than good enough.

  15. No, it hasn't by Anonymous Coward · · Score: 2, Insightful
    1. MySQL still requires you to choose a particular (non-default!!) table type in order to have ACID
    2. MySQL still has non-standard syntax and semantics
    3. MySQL still has a non-standard and broken user/permission system
    4. MySQL Still doesn't have nested queries

    I was using all of these in PostgreSQL in 1999.

    1. Re:No, it hasn't by mgkimsal2 · · Score: 1

      MySQL still has non-standard syntax and semantics

      What 'non-standard' syntax are you talking about? Something like postgres' allowing LIMIT support in SQL statements? What 'standard' does that follow?

    2. Re:No, it hasn't by Overly+Critical+Guy · · Score: 1

      Its handling of NULL, for starters.

      --
      "Sufferin' succotash."
    3. Re:No, it hasn't by Michalson · · Score: 3, Interesting

      Almost every database out there impliments an ISO or similar SQL standard as it's base (SQL-92 in most cases). They then build on top of that by adding their own features, while still supporting the common SQL syntax. It's not about being a barebones implimentation of a standard, it's about supporting the standard as your base.

      PostgreSQL supports SQL-92, while adding it's own extra features (which describes most other databases like Oracle and MS SQL too), including the support of the "LIMIT" statement. MySQL doesn't support any standard base, instead existing as an arbitrary mish mash of standard and propritary SQL. It wasn't until the current version, 4, that MySQL even bothered to add support for UNION.

      With every other database you can start working safe in the knowledge that while having it's own extensions, you're working with a normal "SQL" database. MySQL, while posing as SQL, has little if anything in common (in particular see threads about optimization - getting fast code in MySQL means learning an entirely new system filled with quirks and vomit inducing workarounds to solve language faults)

    4. Re:No, it hasn't by prockcore · · Score: 2, Informative

      MySQL Still doesn't have nested queries

      Yes it does. It has for 2 years now.

    5. Re:No, it hasn't by drdink · · Score: 2, Interesting

      Try reading this to understand just how broken MySQL (and others) is.

      --
      Beware, Nugget is watching... See?
    6. Re:No, it hasn't by jadavis · · Score: 4, Interesting

      MySQL still requires you to choose a particular (non-default!!) table type in order to have ACID

      And with Oracle's purchase of InnoBase, maker of InnoDB, there is a reasonable chance that MySQL will end up dropping the InnoDB storage engine. After all, since InnoDB is GPL, MySQL AB only has a right to distribute InnoDB under a commercial license because of a contract with InnoBase. Here are the possible outcomes:

      (1) Oracle renews the contract, and nobody worries until next time it comes up for renewal.

      Unlikely. Why do you think Oracle bought InnoBase? Not to be nice, that's for sure.

      (2) Oracle doesn't renew the contract, MySQL continues development, and drops it from their commercial version.

      Approximately 0% chance of happening. What's in it for MySQL aside from the bad PR of having a commercial version worse than the GPL version?

      (3) Oracle doesn't renew the contract, MySQL drops support for InnoDB, and the MySQL community forks, and MySQL develops another storage engine.

      Could happen. I have my doubts that would go very smoothly in the timeframe allowed. Most likely some functionality would change, breaking compatibility with existing InnoDB applications.

      (4) Oracle doesn't renew the contract, MySQL drops support for InnoDB, and the MySQL community forks, and MySQL doesn't develop another storage engine.

      Seems likely, although they lose ACID and foreign keys, which are the most important "Enterprise" features of all.

      So, it seems pretty much like #3 or #4, neither of which is good for the MySQL users. Expect MySQL AB to start preparing by warming up to BerkeleyDB to see if they can make that storage layer work. Expect MySQL AB to start spreading propoganda about how foreign keys and ACID really aren't necessary and only slow the database down (they can just un-rewrite some history and the propoganda is already there!). And expect them to try to make something out of SAP DB / MAX DB in a hurry. They'll try to get MySQL 5 out ASAP so that the impending problems with InnoDB don't take steam away from their release.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    7. Re:No, it hasn't by unoengborg · · Score: 1

      I really can't see why the parent have been modded "Insightful". Some of the statements are plain wrong even if we talk about the current production version of MySQL. The article is talking about the soon MySQL 5.0x soon to be ready for production that have most of the features a real database should have. It is still lacking compared to other free databases such as PostgreSQL and Firebird, but version 5 is a real improvement. Now you have things like triggers, stored procedures, views and sub-queries. If you use strict mode integrity checking will work reasonably.

      What I'm currently miss the most in the new version is that it can't handle domains and the ability add check constraints as you create tables is somewhat lacking. So, even if MySQL have done a tremendous job improving their product I would still go for PostgreSQL, or Firbird any day both for technical and legal reasons. Both Postgresql and Firebird also seam to be better at internationalization.

      The fact that Oracle just bought the company that supplies the default MySQL storage engine doesn't spell good for the future. Even though MySQL could continue to use InnoDB in the future under the GPL licence it is in Oracles power to raise the licence fees for commercial use. That would mean less incomes to MySQL AB and that could hurt their ability to develop the product further. However, at the time Oracle have not said anything about raising the prices other than that the licence deal with MySQL is going to be renegotiated next year. To me that sounds a bit ominous.

      So, if you are going to hate or dismiss MySQL do it for the right reasons, and not for their technical failures in the past.

      --
      God is REAL! Unless explicitly declared INTEGER
    8. Re:No, it hasn't by jadavis · · Score: 2, Interesting

      Silently truncating strings inserted into a varchar(x) field.

      Allowing dates like Feb 31st.

      Truncating numbers silently.

      Strange NULL handling.

      A lot more.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    9. Re:No, it hasn't by einhverfr · · Score: 1

      Well here are some real things:

      1) Innodb bloat. (Like PostgreSQL without vacuuming)

      2) User permissions module with very little scalability possible (no groups, roles, etc)

      3) Foreign keys can be defined in such a way that MySQL silently ignores them in 5.x Example:
      create table table2(
      id int autoincriment,
      fkey int references table1 (id)
      );

      4) Strict mode can be turned off.

      Most of their technical problems in the past are unfortunately still there in some way shape or form, I'm sorry to say.

      --

      LedgerSMB: Open source Accounting/ERP
    10. Re:No, it hasn't by vitalyb · · Score: 1

      And at least in the 4.1 version the whole MySQL service used to crash when I tried to EXPLAIN a nested query.

      But it DOES run them, I suppose :-x

    11. Re:No, it hasn't by arjenlentz · · Score: 1

      As Brian Aker wrote weeks ago, MySQL 5.0 can be strict about those things.
      Which is good.

    12. Re:No, it hasn't by Anonymous Coward · · Score: 0

      more and important .... Dynamic SQL is not allowed in SP!

    13. Re:No, it hasn't by harlows_monkeys · · Score: 1
      I was using all of these in PostgreSQL in 1999

      Cool...and if you started with PostgreSQL in 1999, maybe your queries will finish soon!

    14. Re:No, it hasn't by bedessen · · Score: 1

      You forgot:

      (5) InnoBase doesn't renew contract with MySQL AB. MySQL developers maintain a fork of the last licensed version of the InnoDB engine before the contract expired, fixing and improving as necessary. They spend the money they saved on the InnoBase licensing to hire more programmers to develop their fork of InnoDB. Neither commercial nor GPL users are affected in the slightest, except perhaps the pace of InnoDB refinement slows. InnoBase scratches their heads wondering what the hell they're supposed to do now with their main meal ticket gone. Oracle execs then inform InnoBase that they were purchased to be dismantled and fire everyone.

      From the GPL standpoint, they are absolutely allowed to do this, since the GPL guarantees it. On the commercial side of things it's not a given that they would have the right to do this, as there is a chance that the contract they signed causes them to lose all rights to sell InnoDB commercially when the contract expires. However, if they were smart they would have had language in their contract that allows them perpetual commercial licenses to past versions, such that they could fork it and continue to dual license it without needing further contracts with InnoBase.

    15. Re:No, it hasn't by MullerMn · · Score: 1

      You miss the point. If MySQL is distributing InnoDB in a closed product, then they must have it under a non-GPL licence, as they wouldn't be allowed to do that if they had the code solely under the GPL. They can't 'fork' that codebase, atleast not in the sense of changing the licencing conditions.

      If Oracle don't renew that non-GPL licence then MySQL would have the option of taking the GPL licenced code and continuing its development, as you suggest, but they wouldn't be able to put that code in their closed source product as that would be a GPL violation. This is what your parent was referring to when he talked about them not wanting the closed product to be inferior to the open product.

      What MySQL are allowed to do with the commercial licenced code they have from InnoDB would depend on the terms of that licence. They might not be allowed to modify it. They certainly couldn't release their modified source as GPL (as this would be changing the licence on code they do not hold the copyright to), meaning it couldn't be included in the OSS product. They have the same code under two different licences, and even assuming they are allowed to modify the closed code by their licence they certainly won't be 'unaffected in the slightest'.

    16. Re:No, it hasn't by bedessen · · Score: 1

      Maybe you should try reading the second paragraph of my response.

      They most certainly could release the modified InnoDB as GPL, because it's already dual licensed GPL+commercial. So, no matter what, it will always live on in GPL form and anyone can fork it. The question is whether their agreement allows them the right to continue distributing past versions under the commercial license after the contract expires. If they have a perpetual right to do this then they can fork and continue the dual license, since any modifications/features they add will be their own work, and they are free to release that work under the same dual license.

    17. Re:No, it hasn't by jadavis · · Score: 1

      as there is a chance that the contract they signed causes them to lose all rights to sell InnoDB commercially when the contract expires.

      I would assume that it's more than a chance. The contract is what gave them the right to sell InnoDB commercially in the first place. And it will expire next year. Therefore, unless it's renewed, they have no right to continue selling it.

      However, if they were smart they would have had language in their contract that allows them perpetual commercial licenses to past versions

      I doubt that InnoBase would allow MySQL AB to sell InnoDB commercially in perpetuity without additional royalties. That's absurd. That would effectively be like MySQL owning the copyright for themselves.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    18. Re:No, it hasn't by bedessen · · Score: 1

      I suppose it is a bit of a longshot. But then again, we're talking about the main database engine of the crown jewel of their flagship product. If MySQL AB loses the rights to commercially license the InnoDB engine, that would be an extremely serious dent in their business model. Thus I'm going under the assumption that their contract gives them perpetual rights.

      It's kind of like when SCO tried to revoke IBM's right to sell AIX, but IBM's claim was that their contract gave them a perpetual and irrevokable license to the SysV code in AIX (or whatever the details were.)

    19. Re:No, it hasn't by jadavis · · Score: 1

      You could be correct. I'm guessing that we'll all find out soon enough.

      I think that MySQL will face huge problems because of this. It's damning that MySQL AB hasn't even spoken up about it.

      It may be that there is some way for MySQL to get it's customers out of this mess. However, if I were a MySQL user, I would certainly be planning for the worst. After all, things look bad. It's almost certain that Oracle did this to quash MySQL, and they wouldn't spend the money if they didn't think it would succeed.

      MySQL left itself vulnerable as a company. The MySQL user community left itself vulnerable by relying entirely on one company, with no real developers outside MySQL AB. It looks like it bit them.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
  16. Holy Crap! by Anonymous Coward · · Score: 0

    MySQL is just *now* releasing stored procedures? Unless I'm missing something, that means that client applications have been sending dynamic SQL to the server all this time. Dynamic SQL means poor query optimization, table-level SELECT, UPDATE, and INSERT privs, and a much easier vector for SQL injection attacks.

    Feel free to chime in if that's wrong, but to me it sounds like in this case, free = vulnerable.

    With Love,

    AC

    1. Re:Holy Crap! by Anonymous Coward · · Score: 0
      MySQL is just *now* releasing stored procedures?

      MySQL was designed to be small and fast. You want feature-rich, use PostgreSQL or, if you can afford it, Oracle. That's the great thing about having a choice.

  17. Re:Great! by jeremedia · · Score: 1

    Thank you, much appreciated. :)

  18. Attention! by Slashdiddly · · Score: 3, Interesting

    You have attempted to launch a SQL injection attack on slashdot.
    You have failed.
    Please try again with the correct schema.

  19. That's only 3 hits/second. by CyricZ · · Score: 4, Interesting

    What sort of hardware is behind RubyForge?

    240000 hits/day is just under 3 hits/second, after all.

    When you consider the power of today's hardware, it should be able to cope with such a load, even when doing fairly heavy database activity.

    --
    Cyric Zndovzny at your service.
    1. Re:That's only 3 hits/second. by temojen · · Score: 1

      It probably wasn't evenly distributed.

    2. Re:That's only 3 hits/second. by CyricZ · · Score: 1

      No, unfortunately. I wish I knew where TripMaster Monkey went, as well. I miss his insightful comments and his occasional funny post.

      --
      Cyric Zndovzny at your service.
    3. Re:That's only 3 hits/second. by tcopeland · · Score: 2, Informative

      Sorry for the delay in replying, here's a description of the hardware.

      I should really do an analysis of how many queries the DB processes per day/hour/whatever; that would be more useful.

    4. Re:That's only 3 hits/second. by Momoru · · Score: 1

      He didn't go anywhere, he is still wasting everyone's bandwidth with his posts, and spending his days refreshing to get that sacred first post, why here's yet another useless one from today: http://developers.slashdot.org/~tripMaster%20monke y

    5. Re:That's only 3 hits/second. by jrumney · · Score: 1
      240000 hits/day is just under 3 hits/second, after all.

      Load is never that consistant in the real world. I wouldn't be surprised if 240000 hits/day meant peak loads well into the hundreds per second.

    6. Re:That's only 3 hits/second. by eh2o · · Score: 1

      With an average hit rate of 3 per second, approximatly once in 100 seconds the hit rate will meet or exceed 8 hits per second. So to ensure a smooth experience 99% of the time the server needs to have about three times the 3-hits-per-second capability on hand. This does not take into account the slashdot effect, which is not Poisson distributed.

    7. Re:That's only 3 hits/second. by jonadab · · Score: 1

      > 240000 hits/day is just under 3 hits/second, after all.

      Average, yeah. What's the standard deviation? What's the peak? (I don't know anything at all about the site in question, I'm just saying, averages don't tell the whole story.)

      --
      Cut that out, or I will ship you to Norilsk in a box.
  20. Views! by burrows · · Score: 1

    Not having them has made me a better designer, but I've bitched and moaned the entire way. Will I become more effective? Will I get lazy? Will I care?

  21. Bye Bye Innodb!! by Anonymous Coward · · Score: 0

    In case you haven't already heard, Oracle purchased the makers of Innodb! Bye Bye InnoDB

    1. Re:Bye Bye Innodb!! by bcat24 · · Score: 1

      Is there an echo in here?

    2. Re:Bye Bye Innodb!! by toriver · · Score: 1

      MySQL don't mind that - plus, they got SAP's DB, now called MaxDB.

    3. Re:Bye Bye Innodb!! by davegaramond · · Score: 1

      MaxDB is dead. Do many people really use MaxDB nowadays? Is it actively developed today? No and no. There's a reason SAP dumped SAPDB, it was unmaintainable and it was crap. It still is.

      MySQL *does* depend a lot on InnoDB and InnoBase. It's the strongest, most featureful storage engine for general use. MyISAM doesn't support row locking, foreign key checking, MVCC, or even *transaction*, for Christ's sake. It's been developed for many years by MySQL AB yet still lacks so many features. So we can probably guess how competent MySQL AB is in writing storage engines...

  22. Re:SQL by Evangelion · · Score: 2, Funny

    ERROR 1064: You have an error in your SQL syntax near '5
    )' at line 6

  23. MySQL's biggest problem by ShatteredDream · · Score: 3, Funny

    It makes no sense why they didn't buy out Innobase a while ago. Now that Oracle owns Innobase, they are ultimately at Oracle's mercy for much of their development since MySQL uses Innobase's code for a lot of their work. They really should have bought them out a while ago and integrated them into MySQL as a company before Oracle could get their hands on them.

    1. Re:MySQL's biggest problem by rnicey · · Score: 2, Interesting

      I'm hoping, because they didn't need to.

      From what I understand there are several developers at MySQL who understand the innodb codebase extremely well. The first smell of trouble from Oracle and they fork the last GPL version and take it from there.

      I personally believe that Oracle bought Innobase to get their hands on the developers hoping to starve development on innodb. I hope that that isn't the case, or even possible.

      Innodb, imho, is a seriously nice transaction engine. It's very very Oracle in it's design. I'm still not entirely sure why they haven't thrown out MyISAM in favour of it. It performs just as well and has no downsides. The old myth of keeping it lean and fast in favour of MyISAM is a bunch of rot. InnoDB is extremely fast.

    2. Re:MySQL's biggest problem by Decibel · · Score: 2, Informative

      The first smell of trouble from Oracle and they fork the last GPL version and take it from there.

      And can't use it in their commercial product.

      If they can't get their license for InnoDB renewed, their commercial sales are in big trouble.

    3. Re:MySQL's biggest problem by lawpoop · · Score: 1

      I know you are allowed to sell GPL code. Would their use of GPL InnoDB code in a commercial version of MySQL violate the 'linking' clause of the GPL? If so, could they get around it by modularizing or otherwise seperating the InnoDB code from the rest of MySQL in a GPL friendly fashion?

      --
      Computers are useless. They can only give you answers.
      -- Pablo Picasso
    4. Re:MySQL's biggest problem by rnicey · · Score: 1

      Do they need to? I thought they could sell GPL code as long as they provide the source code to their own linked product, which they already do.

    5. Re:MySQL's biggest problem by jadavis · · Score: 1

      They can't use their current commercial license with InnoDB unless the copyright holder of InnoDB code gives them permission. They can only distribute it as GPL, which would mean that any commercially-licensed code would be less featureful than the GPL version.

      I doubt that MySQL will continue to pay for development on a product that they can't sell effectively.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    6. Re:MySQL's biggest problem by davegaramond · · Score: 1

      From what I understand there are several developers at MySQL who understand the innodb codebase extremely well. The first smell of trouble from Oracle and they fork the last GPL version and take it from there.

      Are these the same developers that develop MyISAM? Then I wouldn't count on it. MyISAM has been developed for what, 10, 15 years? And yet it's still so crappy, no transactions, no row-level locking, no foreign key checking? The only good thing about it is full text indexing. So how in god's name would these MyISAM developers suddenly master InnoDB?

  24. Re:MySQL has been, and always will be sub standard by rgigger · · Score: 1

    I know that much has been said on the subject and each side has some valid points. Basically if you don't need anything that mysql doesn't have then it's great. But here are two questions that I am honestly intersted in hearing some answers to:

    1) You always hear about people who moved from mysql to postgres and "never looked back." I definitely fit into that category and it's pretty obvious to me after using both system why I would never ever ever want to switch back to mysql. I can't even count the number of times I need to do something in postgres that mysql either doesn't do or doesn't do well and I don't even know what I would do if I were still on mysql. So the question is: is there ANYONE who has made the move from mysql to postgres and then regretted it? Even for little things like full text search that doesn't require setting up a separate module?

    2) Is there ANYONE who has made the switch from postgres to mysql and stuck with it and not regretted it?

    I know you have to be careful with anecdotal evidence but I have simply never heard any story from any person ever that has regretted the move to postgres from mysql and I have never heard of anyone who has switched from postgres to mysql.

    Is there anyone out there with a story that fits into one of those categories that would paint mysql in a posative light?

  25. Re:MySQL has been, and always will be sub standard by Zathrus · · Score: 1

    Not everyone needs the same set of features in their database product. Some people want something that is very lightweight and fast.

    Agreed. If you're not going to use feature X, Y, or Z then there's no point in buying a product that has it over one that doesn't. Just be damn sure that you won't ever need those features though -- if you discover that you do then you may be in for a world of hurt.

    That said, the free RDBMS's are covering 90-95% of most people's needs at this point. If you need non-relational, or much more advanced replication/scalability capabilities then you're much better off sticking with the "big boys".

    Other people want bulletproof "unbreakable" databases

    The one nit I wanted to pick -- sorry, but a bulletproof "unbreakable" database is not an optional feature. If the database backend isn't solid and reliable then you should not use it for anything beyond toy programs or data. I believe MySQL long ago put data corruption issues behind it, so I'm not slamming them, but data loss (or rather, non-data loss) isn't something you should ever consider optional.

    Yes, you still have to backup, archive, etc. your data, no matter what vendor you use. But that should be for disaster recovery scenarios and hardware failure only -- not for "oh fuck, a bug ate my db". Or, even worse, "What do you mean the database has been corrupted for the past 3 months?".

    You should't be affraid of a little competition, as it is good for the entire market.

    You say that merely because you aren't king. King's generally disagree with the idea. :)

  26. sure, if hits are uniformly distributed by jbellis · · Score: 2, Insightful

    they never are, though.

    it's probably more like "8 hits per second for 8 hours; 1 hps for 16."

    which is still a joke for static content, but for dynamic, it's respectable.

    1. Re:sure, if hits are uniformly distributed by CyricZ · · Score: 1

      Even going with a conservative estimate of 8 hits/second at times, that's still something that a modern server should be able to handle without issue.

      --
      Cyric Zndovzny at your service.
    2. Re:sure, if hits are uniformly distributed by Anonymous Coward · · Score: 0

      Yep. Even Apache should handle that load.

    3. Re:sure, if hits are uniformly distributed by Trigun · · Score: 1, Insightful

      Oh shut the hell up. Seriously. Why not ask intelligent questions, instead of just blurting out your modern hardware bullshit? Here, I'll loan you a few.

      Q) Are you currently using stored procedures to serve your web content?
      Q) If so, under what circumstance?
      Q) what was the perfomance increase from using stored procedures?
      Q) Are you using transaction?
      Q) How many database queries are there per page?
      Q) Do the database lookups span multiple tables?
      Q) If so, how many? Two? Three? More?
      Q) Are you using persistent database connections, or are you creating and destroying them per page view?
      Q) What is the size of your database?
      Q) What is your hardware platform? If using Raid, which level, why did you choose it, and what is your cluster size?
      Q) How many instances of apache (I assume that's what you're using) do you have running?

      There you go.

    4. Re:sure, if hits are uniformly distributed by jrumney · · Score: 1
      Yep. Even Apache should handle that load.

      You mean Derby right? Because in case you didn't notice, we're talking about databases here.

    5. Re:sure, if hits are uniformly distributed by Doc+Ruby · · Score: 1

      Who cares what the answers to those questions are, if the answer is "my server handles the load with enough surplus for a few quarters' projected growth"? All those questions are to be answered after answering the first question "is the server bottlenecked at only 3 hits:sec?"

      --

      --
      make install -not war

  27. only so far, indeed by vena · · Score: 2, Interesting

    I mean, I never see a host offering MySQL. all they offer is PostgreSQL!

    1. Re:only so far, indeed by compass46 · · Score: 1

      I mean, I never see a computer/electronics store offering a PC with Linux. All they offer is Windows!

  28. Re:MySQL has been, and always will be sub standard by A+beautiful+mind · · Score: 2, Insightful

    So maybe people will clean up Oracle's _nightmarish_ security track record, because unfixed critical bugs for years is not an uncommon sight in Oracle land. I'd take security over features anytime.

    Don't get me wrong, i know you're just a troll, although MySQL was/is lacking in some ways, as i'm perfectly aware of that, but nothing compares to not giving a sh*t about security especially in case of an enterprise level software costing so much in cash and resources.

    These Oracle issues are well known as a lot of security experts prove it day by day.

    --
    It takes a man to suffer ignorance and smile
    Be yourself no matter what they say
  29. not a troll by jbellis · · Score: 1

    Does MySQL5 make their default table type ACIDic, or do you still have to use InnoDB if you want that?

    It seems silly (well, dangerous) to have triggers, etc. without transactions, so I'm inclined to think they finally went ACID. But if that's the case, who cares if Oracle bought Inno, so I'm inclined to think they didn't.

    Anyone actually know?

    1. Re:not a troll by Anonymous Coward · · Score: 0

      InnoDB has been the default DB Type since 4.0 I believe...

      I haven't built a MyISAM table for ages except for aggregating search data for Fulltext indices. This is an unfortunate part of MySQL I would like to see solved ASAP. However, with 5.0 at least I can create triggers to keep my MyISAM Fulltext search table up to date without having to do it in application logic or in crons.

    2. Re:not a troll by Kemuri · · Score: 1

      MyISAM is still 'out of the box' default storage engine. But you can configure MySQL to use InnoDB
      for newly created tables by default. ISAM is gone, MyISAM stays ofcourse.

      InnoDB has been in MySQL 3.23 and up and is ACID (and -has- transaction support!). Nothing changed
      in that regards in 5.0.

  30. Data Dependencies & Reliability by MOBE2001 · · Score: 1

    MySQL has finally caught up to the state of the enterprise relational database industry

    One of the things that is missing in most if not all databases (AFAIK) is an effective mechanism to deal with data dependencies. A data dependency exists whenever two or more applications of components share read/write access to the same records in a database. We need a simple to use mechanism that will notify relevant applications of changes in a shared record. Resolving dependencies in a timely manner is extremely important to system or network reliability. Data dependency problems also exist within applications but that's a slightly different issue, one which is made all the more hard to deal with by the algorithmic nature of software.

    1. Re:Data Dependencies & Reliability by Evo · · Score: 1

      Don't be silly. PostgreSQL has had this feature for ages (atleast since 7.x days) implemented via NOTIFY, which interested listeners can register to be notified of. I'm sure all the big databases have similar functionality.

    2. Re:Data Dependencies & Reliability by MOBE2001 · · Score: 2, Insightful

      Don't be silly. PostgreSQL has had this feature for ages (atleast since 7.x days) implemented via NOTIFY, which interested listeners can register to be notified of.

      Thank you. But that is not what I meant. There should be a software mechanism that automatically identifies dependencies and resolves them. Leaving it to the programmer does not solve the problem because programmers come and go and may not be aware of old dependencies. The problem is especially annoying in legacy systems. Modifications made to a complex system can have unforeseen consequences if programmers are not aware of the dependencies.

    3. Re:Data Dependencies & Reliability by Anonymous Coward · · Score: 0

      No database has this feature, since it is not for the database to decide what constitutes a dependency.

      PostgreSQL and Oracle have an advanced MVCC trasaction engine and support client triggers (like LISTEN/NOTIFY). This is all that is needed to support all relational data integrity.

    4. Re:Data Dependencies & Reliability by poot_rootbeer · · Score: 1

      There should be a software mechanism that automatically identifies dependencies and resolves them.

      I still don't understand what you're trying to suggest.

      Say Application X writes to Tables A, B, and C. Application Y writes to Tables A and D. Under what circumstances would App X need to know that data in Table A had been put there by App Y, or vice versa? How do existing database systems fall short of satisfying such a need? Keep in mind that table- and row-level locking, access control rules by account or schema, and NOTIFY-type triggers already exist in most modern SQL systems.

      Modifications made to a complex system can have unforeseen consequences if programmers are not aware of the dependencies.

      While true in a general sense, I'm not sure the correct solution to the problem is to add ADDITIONAL complexity the the system.

    5. Re:Data Dependencies & Reliability by jadavis · · Score: 1

      This is not a well-thought-out feature at all. How is the database supposed to know what data an application *might* access? The database provides all the necessary isolation and notification systems. That's all it can do.

      Also, how is the database supposed to notify the application? Would it throw an exception/error/warning/notice the next time you executed some SQL? Would it be a separate API call (in which case, why not just use LISTEN/NOTIFY)? Would it signal your process (thereby killing it if you don't have a handler)?

      And the idea of "resolving" these dependencies would require a huge amount of knowledge that the database has no way of knowing.

      I think you misunderstand the role of the database, and the relational model. The relational model is designed to minimize "unforseen consequences" by separating data storage from data access.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    6. Re:Data Dependencies & Reliability by MOBE2001 · · Score: 1

      Say Application X writes to Tables A, B, and C. Application Y writes to Tables A and D. Under what circumstances would App X need to know that data in Table A had been put there by App Y, or vice versa? How do existing database systems fall short of satisfying such a need?

      No. There has to be read access to a shared table in order for a dependency to exist. The reading application is the dependent component.

      While true in a general sense, I'm not sure the correct solution to the problem is to add ADDITIONAL complexity the the system.

      Complexity is not the cause of failure, IMO. The problem is a lack of timely communication between parts of the system. This is true both at the system or network and the program level. Oftentimes, a variable is modified by one part of the program unbeknownst to some other part which may crucially depend on the state of the variable. Only a non-algorithmic, signal-based approach to software construction can solve this problem.

    7. Re:Data Dependencies & Reliability by MOBE2001 · · Score: 1

      This is not a well-thought-out feature at all. How is the database supposed to know what data an application *might* access? The database provides all the necessary isolation and notification systems. That's all it can do.

      Well, maybe it's not the database's job. Maybe it should be part of the data access layer that connects the database to the applications.

      Also, how is the database supposed to notify the application? Would it throw an exception/error/warning/notice the next time you executed some SQL? Would it be a separate API call (in which case, why not just use LISTEN/NOTIFY)? Would it signal your process (thereby killing it if you don't have a handler)?

      It makes no difference what the actual mechanism is. In the system that I envision, every dependent app should provide a handler for automatic notification.

      And the idea of "resolving" these dependencies would require a huge amount of knowledge that the database has no way of knowing.

      I don't think so. It's just a matter of associating write accessors to read accessors of the same record.

    8. Re:Data Dependencies & Reliability by gfody · · Score: 1

      foreign key constraint?

      --

      bite my glorious golden ass.
    9. Re:Data Dependencies & Reliability by jadavis · · Score: 1

      It makes no difference what the actual mechanism is.

      That's because you don't actually have a mechanism. You have yet to give an example. You have yet to even really define what problem you're trying to solve.

      I suspect that if there is anything of value along the lines of what you're talking about, it is already easily covered by triggers and listen/notify.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    10. Re:Data Dependencies & Reliability by RegularFry · · Score: 1

      That sounds like an Observer pattern appropriately implemented on the web service that's exposing your database to me, but maybe that's a little optimistic :-)

      --
      Reality is the ultimate Rorschach.
  31. if not having views made your design better by jbellis · · Score: 1

    I hope I never have to maintain any database you're responsible for...

    1. Re:if not having views made your design better by burrows · · Score: 1

      I was joking. That having been said, I hope you never have to maintain my databases either. Where would that put me?

  32. Performance wise.. by CyricZ · · Score: 1

    Performance wise, how does this new release of MySQL compare with other open source databases like PostgreSQL, Firebird and perhaps even SQLite?

    --
    Cyric Zndovzny at your service.
    1. Re:Performance wise.. by commanderfoxtrot · · Score: 4, Informative

      Very few (recent) comparisons around. From my experience, however, if you're running a simple web site with many SELECTs over a single table then MySQL may well suffice. If you're doing serious stuff with multiple table/view joins then you should move up a gear and use PostgreSQL.

      I've moved completely to PostgreSQL (works beautifully on core Drupal too) and have found complex queries complete in a fraction of the time. I had a complicated application which had multiple threads inserting, updating and reading all at the same time- complete run-time was reduced to a tenth by using PostgreSQL.

      It works for me- just make sure you use ADODB in PHP or Perl/DBI to make switching easy when you hit the MySQL limits.

      One more thing: I work with serious mainframe DB2 during the day. MySQL just doesn't compare. Postgres feels closer.

      --
      http://blog.grcm.net/
  33. What were banks using years ago... by mgkimsal2 · · Score: 2, Interesting

    Yes, mostly mainframes, but I've no doubt that some industries were running
    "enterprise" apps 5 years ago on platforms that aren't as robust as MySQL5 is now. Yes, software has become more demanding in the past few years, but the fundamentals haven't changed. If you could run 'enterprise' solutions on SQL Server 6.5 (and I saw companies doing it - and gosh, they didn't even have row level locking!) surely some "enterprise" industries can use MySQL5 today.

    1. Re:What were banks using years ago... by gbjbaanb · · Score: 1

      Row level locking isn't mandatory for scalability, performance and even less necessary for reliability. Stop reading the Oracle marketing :)

      As for 'enterprise' apps - believe me when I say many industries are running their serious enterprise apps on platforms that *are* much older than 5 years old (remember the y2k 'bug', think of all those COBOL programs that are running... 30 years old and still going. I'd say something that runs for 35 years is the very definition of robustness).

      The fundamentals are the same - MySQL is just catching up to what the serious players had way back.

    2. Re:What were banks using years ago... by mgkimsal2 · · Score: 1

      I completely understand that row-level locking isn't a mandatory item - I'm not reading the Oracle marketing either! :)

      What struck me about this was that I worked at a company in '98 using SQL Server 6.5 for most work. I was asking if we could use MySQL for some projects - we were doing unix/perl and NT/ASP. The NT devs all got to use SQL 6.5, and the Perl guys were only allowed to use flat files, no SSI on Apache, etc. Gave the NT devs an upper hand in being able to be more productive.

      When I'd asked about using mysql, I got a couple nasty emails back from people who stated it 'sucked' because it 'didn't have row level locking'. One of them had just come back from a preview of SQL Server 7 which - surprise - had row level locking. The fact that we had a dozen LARGE clients (one doing > $500 million a year in ecommerce on our servers) running on a database server (MSSQL 6.5) without row-level locking seemed to escape pretty much everyone there but me. I'm *NOT* saying that MySQL would necessarily have been a good replacement for SQL6.5 at that time, but row-level locking was not the reason. :)

    3. Re:What were banks using years ago... by gbjbaanb · · Score: 1

      good point, but... what was MySQL like back in the days of SQLServer 6.5?

      I know its good now, and I've been using v3 for a while (yes, I upgrade to v4 and its immediately superseded. just my luck :) )

    4. Re:What were banks using years ago... by kpharmer · · Score: 3, Informative

      > Yes, mostly mainframes, but I've no doubt that some industries were running
      > "enterprise" apps 5 years ago on platforms that aren't as robust as MySQL5
      > is now.

      Ah, good question. Here's how to look at this:

      1. mysql is just now in v5 putting in pieces that most commercial products had 10-20 years ago:
              - views (been around since something like 1981 in db2 & oracle)
              - triggers (been around since around 1995)
              - subselects (been around in db2/oracle since 1981 or so, in mysql for what? 1 year?)
              - transactions (been around in db2/oracle since around 1981, in mysql via innodb for 2 years)
              - online backups (been around 10 years? mysql still requires a separate product)
              - stored procs (been around 10 years? mysql just getting to it)

      2. data quality - mysql has:
              - silent errors
              - silent data truncations & conversions

      3. standardization - mysql has:
              - quite a few deviations from ansi sql - everything from comments to weird create statements
              - historically the lack of views, transactions, stored procs, triggers, and poor join performance meant that many queries had to be completely rewritten for mysql

      4. performance
              - mysql's performance reputation was built upon easily-cached data that could be easily looked up using simple indexes on mysql. Its performance of large queries (select many/most rows) stank, and its write performance was horrible - since required table locking.
              - mysql's performance on innodb was better for mixed environments, but innodb has a bloat problem that can get serious.
              - no support for query parallelism, partitioning, etc - isn't 1/40th the speed of a commercial product for many queries.
              - mysql's optimizer is trivial - and can't be relied upon for complex queries (> 5 tables)

      No, you can live without row locking - as long as you've got at least page-level locking. It's the accumulation of all the other stuff that makes you want to run from it.

    5. Re:What were banks using years ago... by Decibel · · Score: 1

      Actually, if you're going to use read-locking for ACIDity then row-level locking pretty much is mandatory unless you're completely read-only or single user.

      Note that this has nothing to do with the row-level shared locks that PostgreSQL added.

      Personally, I think MVCC is a far superior approach than read locking.

    6. Re:What were banks using years ago... by arjenlentz · · Score: 1

      Indeed there used to be an issue with many-table joins. Has been resolved in MySQL 5.0 with a greedy optimization algorithm.

      By the way, MySQL's optimizer is way less trivial than you may think. Don't believe everything other people tell you ;-) But heck, you could even look at the code yourself and find out....

  34. Re:Great! by pvera · · Score: 1

    I would like to add to your third definition. A stored procedure is nothing more than a pre-parsed and pre-planned SQL command. Whenever you send a SQL command your RDBMS has to waste precious time figuring out if the SQL command is valid, then how to execute it properly. When you use a stored procedure, it is already parsed and planned, so when you call it it will go straight to the first step of the execution plan. This is why stored procedures are so much faster than interpreted SQL even when it is just one query. While yes, one of the things you get is the ability to run a bunch of commands at a time, what makes it special is that these commands are already validated and planned.

    --
    Pedro
    ----
    The Insomniac Coder
  35. Sour grapes... by Anonymous Coward · · Score: 0

    Let's see... All the heavy hitters that are making use of MySQL are using it because... it's such a shitty database? Tell me this againe? Me thinks the stagnation of PostgreSQL in the enterprise market has some people stamping on sour grapes...

  36. InnoDB not the only game in town by woodsrunner · · Score: 1

    What has always been nice about mySQL is the ability to use different table types for different needs. If you can't use Inno, use Sleepy Cat's Berkeley DB.

    Just do an ALTER TABLE with a TYPE clause.

    ALTER TABLE table_name TYPE = BDB;

    It's that easy.

  37. Re:Great! by SpeedyGonz · · Score: 1

    In synopsis, these three things make DBMSs more intelligent, and allow them to be the repository of business rules while your client apps remain simpler and easier to maintain.

    I see Views (duh) as a versatility tool.

    You can have a view that merges several tables in whatever way you see fit to solve a problem, then at call time You have to write less, You can make more concise SQL code.

    Let's give you an example: You have the sales detail info for your company's retail stores, and given the data's size you have individual tables for each year or semester, you could use a view so when coding that gargantuan report of pencil sales from 1999 to 2004 summarized by minute (*grin*) you only have to build the SQL statement as if it were a single table. In this case, by wrapping your jumbo SQL instruction in a view, you've made your life easier.

    Triggers are useful because you can program the DB to react to certain data and execute something. You could program a trigger to react when an employee record goes to certain status (say, he/she is fired or quits) and change the status of this employee's records all over the database to 'immobile' or 'retired'. You could do it on your client code, but it's not always much elegant. It's better to abstract these operations so the client code doesn't gum out in this kind of details. Also, care must be taken to keep the triggers light, or not use them at all when perforance is paramount.

    Stored procedures also give you the ability to abstract operations. Say you have the previous example, If you issued the operation with explicit sql it might look like " UPDATE employee SET Status = 9 WHERE Employee_Id = 73829992 ", with a stored procedure you could make it look more mnemonic, self documenting: " spChangeEmployeeStatus @Id=73829992, @NewStatus=9 ". This update SQL is a one liner, so maybe it's not the best example, the more complex ones are better candidates. In a performance - conscious application you might want to zap those triggers and instead put all the logic in stored procedures and execute them as needed.

  38. Catch up?! Really? by oringo · · Score: 1

    According to mysql.com, only the paid version of mysql (network) will get the enterprise-level tools. The free (community edition) is not certified for enterprise operation, hence still (far) inferior to postgresSQL.

  39. SCO litigation risk by Anonymous Coward · · Score: 1

    SCO may claim they paid mySQL Corp. solely to ensure to MySQL database runs on SCO Unix, and they will then turn around and sue saying mySQL added enterprise features to mySQL using SCO funds/resources that were supposed to be allocated to it running on SCO (and they'll make up BS on how mySQL doesnt run properly/optimally on SCO cause of the resource diversion).

    Seems ridiculous that they would sue. But, we all know the track record.

    mySQL is tainted by SCO money (unless the corp decides to reurn money and cancel agreement), so use postgresql instead.

  40. Yeah, but BDB doesn't cut it (yet) by adnonsense · · Score: 1

    It's nowhere near as mature as InnoDB, at least so it could be used as a drop-in replacement:
    "Even though Berkeley DB is in itself very tested and reliable, the MySQL interface is still considered gamma quality. We continue to improve and optimize it."

      (http://dev.mysql.com/doc/refman/5.0/en/bdb-storag e-engine.html)

    The people at Sleepy Cat see a possible opportunity though:
    http://devtoe.blogspot.com/2005/10/oracle-buys-inn odb-will-fork-save.html

    1. Re:Yeah, but BDB doesn't cut it (yet) by davegaramond · · Score: 1

      Sigh, they have been "improving and optimizing" BDB for years, but still it's so slow compared to MyISAM and InnoDB. Try filling a BDB table with a million+ rows... I guess you really need a storage engine that's specifically designed for relational database. BerkeleyDB is basically just a hash/key-value pair transaction storage.

  41. Re:MySQL has been, and always will be sub standard by vfwlkr · · Score: 1

    For blogs, SQLite would be more appropriate. I believe MovableType already supports SQLite. This would allow people to run blogs on cheaper hosts.

    --
    If you're not using firefox, you're not surfing the web, you're suffering it.
    ---
  42. I still can't believe .. by Hohlraum · · Score: 0, Offtopic

    that whole SCO/MySQL partnership thing. WTF are they thinking? http://www.eweek.com/article2/0%2C1895%2C1855483%2 C00.asp

    1. Re:I still can't believe .. by Kemuri · · Score: 2, Informative

      Totally offtopic I guess. But..

      I hope the interview on Groklaw with Marten Mickos (MySQL AB CEO) will help you
      out of your missery..

          http://www.groklaw.net/article.php?story=200510112 11450706

    2. Re:I still can't believe .. by fred+fleenblat · · Score: 1

      Just the fact they they have a CEO tells me everything I need to know about their software.

  43. Re:MySQL has been, and always will be sub standard by TinyManCan · · Score: 1

    Personally, I don't think that my personal blog needs an unbreakable database back-end. I only have 64MB of RAM on my server which has to hold the kernel and the entire LAMP stack. I can tweak and tune MySQL to run very, very quickly on less than 12MB of RAM. In my case, lightweight and functional outweigh any feature or reliability constraints. If you plan for failure, it doesn't hurt nearly so bad. That is why I perform regular backups, and gasp, even practiced a recovery scenario a few times. I certainly don't doubt that there are many cases where having 100% data reliability is the most important thing. My blog and personal websites don't fall into that category though.

  44. Still no "device"/single file support by Twillerror · · Score: 3, Insightful

    One of the biggest advantages of enterprise level dbs is that they are not file based. That is there is one or more files that can store many table/indexes/etc.

    Postgres recently added tablespaces, which allow you to specify a sub folder for these files. This is better then before, but not nearly where it needs to be.

    There are advantages to having single files versus a larger file, but most are administrative in nature. It can also lessen the effect of corruption. A sinlge table might fail and would not effect others. If a big database file corrupts it can damage a lot of data.

    Having a single files allows quite a few things.

    First it greatly reduces File system level fragmentation. The file grows once and the sectors are right next to each other. When you have 10+ gigs of data this is a real concern.

    Second it create a unified caching mechanism. The big file is broken into pages, generally 8k, which in turn store data rows. The data is not only user data, but indexes, system information. Other pages are used to store stats about other pages, and have header information about the file itself. Why is this important to caching, because you simply have a cache table, everytime a page is loaded it gets cached. Writing to page happens in memory and then written to disk. Enterprise dbs have huge caches. This is why 64 bit is so important for dbs, so we can have larger then 4 gig caches.

    Third is backing up. Some might say the file backup is easier, I beg to differ. Especailly when it gets big. When you go to backup you backup each page in the file. You mark each one as being backedup. At the end of the backup you backup the write ahead log. This allows you to restore to exactly the time the backup finished. Lastly, a diff backup simple looks at each page that has changed since the backup and backs only those pages up. Diffs can be very fast and faster to restore then a write ahead log.

    Also, single files on different drives arrays to increase performance. This is also capable with tablespaces. The good part is that the database knows only the file id that tables go on, and then file id corresponds to a file name on any path. With the right tool you can move the files around easily.

    Replication is also easier because writes are to a file id and page id. The replica database can have files place on any drive at any map point as long as the data.

    Both mysql and postgres got a way to go, but they are very nice products and one day can easily compete with the big boys. Although it will be a while before they are able to run high end clustered box with shared storage and super high speed interconnects, but if you need that kind of power, you've probably got the money...actually you absolutly do if you can afford the hardware.

    1. Re:Still no "device"/single file support by Anonymous Coward · · Score: 0

      Use a good filesystem (like XFS), and all of the problems you mentioned are gone. Having many files actually becomes an advantage since the MVCC can sync specific sectors of the disk to ensure data integrity without syncing the whole disk (which can be very slow). Many large files also improves caching (have a look at the page cache code in the xfs sources... it is optimized heavily for many files since this is the most common usage pattern). Backup is no problem - snapshot the fs and do whatever. For realtime backups use Slony replication.

      As for tablespaces, I put all my indexes on a raided LVM block device with a HUGE ram cache on the controllers to speed up lookups. There is no performance problem whatsoever. The load on the machine rarely goes above 8 (this is a quad CPU machine, so 8 is ideal).

    2. Re:Still no "device"/single file support by rnicey · · Score: 1

      What are you smoking? You can use files, partitions etc.

      Creating the InnoDB Tablespace:
      http://dev.mysql.com/doc/refman/5.0/en/innodb-init .html

      Using Per-Table Tablespaces:
      http://dev.mysql.com/doc/refman/5.0/en/multiple-ta blespaces.html

    3. Re:Still no "device"/single file support by MBraynard · · Score: 1

      So is MS SQL file based? All the files for each database is in a single file? I think your comm skills are getting in the way of what you are trying to say.

    4. Re:Still no "device"/single file support by Sentry21 · · Score: 1

      Curious - are you referring to using raw devices for the tablespace? MySQL has had this since 3.23.41 for InnoDB (which is the storage engine that you're most likely to use if you're shooting for 'enterprise-level').

      Definitely something you want to consider if you want to play in the big leagues, and a critical feature. Fortunately, it's one that MySQL has.

  45. Re:MySQL has been, and always will be sub standard by holviala · · Score: 1
    2) Is there ANYONE who has made the switch from postgres to mysql and stuck with it and not regretted it?

    Well, I didn't switch. But as a shared server admin who's been running MySQL for years and years, I did take a looong look at PostgreSQL. It had all the features that MySQL didn't have, and that was good. However, the authentication stuff sucked badly, so I retreated back to MySQL for the 50+ users needs.

    Truth to be told, the server runs both. It's just that I don't want to create new users for PostgreSQL - I personally only want to deal with MySQL. Another admin handles PG.

  46. PostgreSQL has 2PC! by jgardn · · Score: 1

    I see the one huge thing in PostgreSQL 8.2 is 2 phase commit.

    What this means is you can run a multi-master replication system of databases. MySQL, eat your heart out!

    Other things of note: One guy claims he sees a 20%-40% improvement in speed in smaller queries. That is breath-taking.

    And the equivalent (and frankly, better implementation of) table partitioning is here! Now there is NO REASON to use Oracle over PostgreSQL. Oracle has lost all of its competitive advantages when 8.1 is released!

    Predictions: New Oracle installations drop significantly. PostgreSQL becomes the new DB of choice among the illiterati in the DB community. Salaries for PostgreSQL admins and developers increase significantly, causing a huge demand in PostgreSQL training. News articles about people implementing PostgreSQL and having problems (man bites dog is no longer implementing PostgreSQL, but NOT.) IT costs drop significantly. Oracle lowers licensing fees and relaxes their strict licensing terms. Oracle begins shifting focus from the database itself to the apps running on the database.

    --
    The radical sect of Islam would either see you dead or "reverted" to Islam.
    1. Re:PostgreSQL has 2PC! by ocelotbob · · Score: 2, Informative
      --

      Marxism is the opiate of dumbasses

    2. Re:PostgreSQL has 2PC! by jadavis · · Score: 1

      I am a big fan of PostgreSQL, but one thing needs to be set straight:

      8.1 introduces "Constraint Exclusion" (CE) which is a very simple form of table partitioning. It is a good foot in the door, but it's far from a full implementation of table partitioning options. In fact, CE is not even enabled by default, because of some potential problems (although the problems seem far fetched and theoretical to me). Look forward to some more advances in the 8.2 release.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    3. Re:PostgreSQL has 2PC! by Anonymous Coward · · Score: 0

      No it will not, read the FAQ you linked to. The data integrity is not maintained. You can only issue queries which will not cause conflict for it to work, making it useless since all the benefits of transactions are lost. Also all forms of locking are unavailable.

    4. Re:PostgreSQL has 2PC! by nconway · · Score: 1
      I see the one huge thing in PostgreSQL 8.2 is 2 phase commit.


      Actually, 2PC will be in PostgreSQL 8.1 (which is currently in beta).
    5. Re:PostgreSQL has 2PC! by Kent+Recal · · Score: 1

      Other things of note: One guy claims he sees a 20%-40% improvement in speed in smaller queries. That is breath-taking

      Yea, as breathtaking as me saying "The other day I cut down the response time for this one query in our MySQL DB by 90% just by rephrasing the SQL". In short: your statement is meaningless without context.

      And the equivalent (and frankly, better implementation of) table partitioning

      Can you elaborate?

      Predictions:

      Well, I love postgres and I sincerly *hope* that something like that happens, too.
      But unless the performance improvements are really as drastic as your anecdote suggests I guess the process is going to take a bit longer.

      Everybody knows postgres as that one very solid but unfornationally pretty slow and at times cumbersome (vacuum) rdbms.
      This has also been one of its main strengths: It matures slowly but what works, really works.

      This new version will more likely be another babystep into the right direction.
      Without even looking at it I'm sure that it will still not be as fast as MySQL for those really-dumb apps and it will
      still lack many of the essential and convenience features Oracle has for the big guys.

      I'm not trying to talk postgres down, just have my doubts about your level of enthusiasm.

    6. Re:PostgreSQL has 2PC! by krow · · Score: 1

      Hi!

      MySQL 5.0 has 2PC with XA support, our Java driver already exposes it and we exposed it in the SQL layer so languages like perl and PHP can make use of it. Further, we use it internally to communicate between multiple storage engines.

      MySQL has been doing master to master replication for several years now. We also have support for setting all sequences for the entire database so that they don't clash with those also doing replication. This saves you the trouble of having to set it up on each and everyone of your tables.

      Cheers,

            -Brian

      --
      You can't grep a dead tree.
    7. Re:PostgreSQL has 2PC! by mw · · Score: 1

      Are you sure about MySQL doing Multi-Master replication? Really? You can write to any database, and every database will get the same data, even in case of a crash? Thats new to me, please give me a link to some documentation. I know MySQL is doing Master-Slave replication, but that's a different story.

  47. mySQL seems to be the one not cutting.... by woodsrunner · · Score: 2, Informative
    Read the whole doc and they tell how solid the tables are:

    Sleepycat Software has provided MySQL with the Berkeley DB transactional storage engine. This storage engine typically is called BDB for short. Support for the BDB storage engine is included in MySQL source distributions is activated in MySQL-Max binary distributions.

    BDB tables may have a greater chance of surviving crashes and are also capable of COMMIT and ROLLBACK operations on transactions. The MySQL source distribution comes with a BDB distribution that is patched to make it work with MySQL. You cannot use a non-patched version of BDB with MySQL.


    It works quite nicely and I hope they take the opportunity to improve from both mySQL and Sleepycat sides. It's always been my favorite table choice with mySQL.

    Mostly I bring it up to get out of the Oracle bought InnoDB rut because one of the cool features of mySQL is the availability of tables to use. And I guess that is one of the great features of open source in general.
  48. MySQL has no niche left by jgardn · · Score: 1

    Some people want something that is very lightweight and fast.

    Which is why they are switching to PostgreSQL.

    Your assumptions about the footprint and speed of PostgreSQL are way out of date.

    PostgreSQL is much easier to administer, much easier to develop for, and much better solution that it used to be for high-performance and low-performance shops. It has grown from its niche and began occupying the niches owned by MS SQL, MySQL, and Oracle.

    --
    The radical sect of Islam would either see you dead or "reverted" to Islam.
  49. Innodb is out by Anonymous Coward · · Score: 0

    Isn't Innodb providing all the advanced features (ACID) for MySQL? What good is 5.0 when Innodb is walking with Oracle now? Where can they dig up yet another engine?

    1. Re:Innodb is out by Kemuri · · Score: 1


      InnoDB is available as Storage Engine in 5.0, just like it was in previous versions.

  50. Re:MySQL has been, and always will be sub standard by Anthony · · Score: 1

    Off Topic? Did the moderator lose his funny bone? Does the moderator know who John Titor is? Humor related to the story is never off-topic.

    --
    Slashdot: Where nerds gather to pool their ignorance
  51. The negative comments have gone from... by puppetman · · Score: 4, Insightful

    "MySQL doesn't have triggers or stored procedures and views" to "Even if it does have triggers, stored procedures and views, it's still not a real database like Postgres/Oracle/SQLServer".

    We have two websites, Boats.com and Yachtworld.com - Boats has an Oracle backend databsae, and YW has MySQL using the InnoDB engine.

    The uptime is about the same for the two. We've had some issues on the Yachtworld database box due to 3ware drivers in Linux - they were corrupting pages in the database. Guess what? Innodb recovered without any lost data. Twice. This was a driver/hardware/linux issue, not a MySQL issue. We now appear to have a stable set of drivers, and I expect the MySQL database to hit 100% uptime pretty much every month.

    Yachtworld gets several million distict page views per day, whereas Boats.com gets half a million.

    Our MySQL database runs on a dual-opteron server, with 8 gig of RAM, with 6 gig of it allocated to the innodb block buffer pool (it caches row and index data so you don't have to go to disk).

    Try doing that in Oracle 10g on Linux. The SGA (Shared Global Area) can't get larger than 1.7 gig unless you,

    1) Use memory as a temporary file system so that Oracle can cache a bit more, and you also get the benefit of dicking around for several days, trying to configure your machine to try to take advantage of it (if it even can - we were never successful).
    2) Remap all the shared libraries so that they load in a lower memory address, to squeeze another few hundred meg of memory.

    Postgres (last I checked) preferred to let the OS do the data-caching. Thanks, but no thanks. And no 64-bit version (though I've read a few people have managed to compile one, I wouldn't trust it unless Postgres gave it the thumbs up).

    MySQL with InnoDB is straighforward (it's use of tablespaces, replication, tuning, and even compiling from source - someone with mediocre Linux skills like myself can do it without issue every time).

    MySQL with InnoDB is very fast, very reliable, and has awesome support via the MySQL mailing lists.

    MySQL is very well documented, with lots of great third party books that don't cost an arm and a leg (unlike an Oracle library).

    MySQL does not have stored procedures, triggers, and views in the current production version.

    Here's what I think of that:

    1) Triggers are hidden application logic that are very hard to debug, and are easily overlooked or forgotten by developers. Business logic (other than defensive logic like unique indexes, primary keys, foreign keys, not-null columns) does not belong in the database. They belong in the middle tier. They also make it much more difficult to move to another database.

    2) Stored procedures are like PERL - it's very easy to make a mess unless you are very careful. They are also hidden logic, and very difficult to debug. And again, keep that logic out of the database. They also make it much more difficult to move to another database.

    3) Views are a nice feature, but most often used to support business and reporting. I don't like managers connecting to the database to run queries (SELECT * FROM very_large_table_1, very_large_table_2; and suddenly you have cartesian join that results in tens of millions of rows coming back, bogging everything down). To do reports, views aren't necessary.

    If you think MySQL is not a "real" database, it is, and has been since 4.0. As an Oracle (and now MySQL DBA), I can honestly say that I can't wait to dump Oracle and get the Boats.com website over to MySQL.

    And for the few people who made comments like, "Do you really want your bank running on MySQL?": many banks run on old, legacy hardware and systems. Transactions are written out in many places (with geographic diversity) to ensure that a hardware or software crash is recoverable. There is no reason why you couldn't put MySQL in a situation like that, so long as the same precautions are taken.

    1. Re:The negative comments have gone from... by Anonymous Coward · · Score: 0
      2) Stored procedures are like PERL - it's very easy to make a mess unless you are very careful. They are also hidden logic, and very difficult to debug. And again, keep that logic out of the database. They also make it much more difficult to move to another database.


      This is a very wrong-headed assertion. If you've got a requirement to individually process each of fifty million rows, which is better - pulling them all across the network to the client app, processing, then pushing them back to the DB, or doing the processing on the (big, powerful, local) DB?


      3) Views are a nice feature, but most often used to support business and reporting. I don't like managers connecting to the database to run queries (SELECT * FROM very_large_table_1, very_large_table_2; and suddenly you have cartesian join that results in tens of millions of rows coming back, bogging everything down). To do reports, views aren't necessary.


      This is so wrong I can only assume that all of your database experience comes from running single-application website databases. Views were specified in the very earliest of Codd's papers, and are absolutely fundamental to relational database concepts. Lacking this "feature" is a serious failing indeed.

      You've discovered that MySQL excels at one thing: running fast, single-application website databases. There's a whole lot more to the database world than that.

    2. Re:The negative comments have gone from... by mgkimsal2 · · Score: 1

      1) Triggers are hidden application logic that are very hard to debug, and are easily overlooked or forgotten by developers. Business logic (other than defensive logic like unique indexes, primary keys, foreign keys, not-null columns) does not belong in the database. They belong in the middle tier. They also make it much more difficult to move to another database.

      I used to think as you write here, but have modified my thinking some in the past few years. I agree with your view on the 'hidden application logic', it might not always be that situation. If the database is being used by more than one system - ecommerce where orders are coming in via web and via call center - changing multiple systems to accomodate a change in data may not be as effective as using a trigger.

      I tend to agree with you, and in situations where the entire system is in one layer - one web server, for example - triggers might not make much sense. But if anything else is ever updating that database besides your application, having triggers available can be very handy.

    3. Re:The negative comments have gone from... by farnsworth · · Score: 3, Informative
      Triggers are hidden application logic that are very hard to debug

      Triggers are hidden *data* logic, and they should be hidden. They have the added benefit of being asyncronous if you choose, so if you need to write data fast, you can still lay it out in another format, or do something else arbitrary to it.

      Stored procedures are like PERL

      Agreed. But when you need them, you need them. They also go hand-in-hand with triggers frequently.

      Views are a nice feature, but most often used to support business and reporting.

      Views are an abstracted view of data. You can have a table called subscribers with lots of columns that tell you the status of the subscriber, and a view called current_subscribers that encapsulates all that logic.

      (psuedo sql)
      create table subscribers (id, start_date, end_date, cancelled, payment_is_late, is_overdue);

      create view current_subscribers as select id from subscribers where start_date now() and cancelled = 'N' and is_overdue = 'N';

      You could argue that this logic belongs in you DAO, but that only works if you have one DAO runtime, which is not true for a lot of application environments.

      --

      There aint no pancake so thin it doesn't have two sides.

    4. Re:The negative comments have gone from... by puppetman · · Score: 1

      This is a very wrong-headed assertion. If you've got a requirement to individually process each of fifty million rows, which is better - pulling them all across the network to the client app, processing, then pushing them back to the DB, or doing the processing on the (big, powerful, local) DB?

      The data travels from our database to our application/web services layer, and it's a gigabit ethernet. It can also be done locally, on the machine.

      Many applications, in many languages, hit our databases dozens of times a day, to do many many things. And we still only use Views on Oracle for reporting, etc.

      A view may be fundamental to the mathematical relationships that are supposed to exist in a relational database, but lets be honest - there are no truely relational databases on the market. SQL isn't a relational language. We're dealing with an impure form of the relational database.

    5. Re:The negative comments have gone from... by asdfghjklqwertyuiop · · Score: 2, Interesting

      3) Views are a nice feature, but most often used to support business and reporting. I don't like managers connecting to the database to run queries (SELECT * FROM very_large_table_1, very_large_table_2; and suddenly you have cartesian join that results in tens of millions of rows coming back, bogging everything down). To do reports, views aren't necessary.


      I'd say they're more often used to implement security than for reporting these days. If you've got a table which you only want certain rows or columns to be visible to particular users, generate a query that yields the right data for them and turn it into a view. Then grant them permissions to the view but not to the underlying tables.

    6. Re:The negative comments have gone from... by hobuddy · · Score: 2, Interesting

      Views are a nice feature, but most often used to support business and reporting. I don't like managers connecting to the database to run queries.

      Yeah, what kind of crazy person would use a database engine to support managers in making business decisions. Wild, I tell you, just far out!

      The truth is that since MySQL doesn't allow you to define constraints on how long queries launched by a specific user can run, you've concluded that allowing ad hoc queries is a bad practice. That's tunnel vision, not insight.

      --
      Erlang.org: wow
    7. Re:The negative comments have gone from... by kpharmer · · Score: 4, Insightful

      Regarding memory:
      - I haven't tuned oracle memory in forever, but it sounds like you're trying to use 8 gbytes of memory
      on a 32-bit cpu. In that case oracle and db2 are both limited to 1-3.2 gbytes of memory depending
      on the os. There are ways of getting around that limitation but they are os-specific. On 64-bit
      CPUs, everything is very simple.
      - btw, putting most of your memory into a single buffer pool is seldom the best way to manage your
      memory: ideally you would create a few sets of buffer pools for different types of tables. That's
      the best way to increase your cache hits: indexes and all small tables pretty much just live in
      memory at that point.

      Regarding Innodb:
      - very fast? compared to what? writing to myisam? well, sure, but that's about it.
      - keep in mind that at a few million rows and several million queries, you shouldn't have
      a problem with this data in any database. This is small. Unless of course your queries
      are complex, are frequently reading 50,000 rows then aggregating that data into trends,
      counts, etc. Of course, if you are - then oracle's parallel query and partitioning will
      deliver great performance - possibly *dozens* of times faster than what mysql can do.

      Triggers:
      - as long as you keep it simple they are wonderful and are still easy to port. You can with
      triggers:
      - auto-populate some columns that the application doesn't require, but might be useful in
      partitioning the data (assuming your database supports partitioning).
      - populate denormalized tables strictly for reporting or searching
      - populate history tables with changes to all data in various important tables
      - capture changes in order to copy data to another database
      - etc
      - yes, you could do many of these things from within the application. but it'll be harder. Why
      make life hard?
      - and sometimes you *can't* do these things from within the app - it's closed source, but luckily
      for you it's on a database that supports triggers.

      Stored Procedures
      - again, keep it simple and they are very useful and not at all difficult to port between databases
      - when validation is performed here it allows you to *easily* enable multiple applications
      to write to the database. I'm working on a project right now in which I've got to allow another
      department to create a portal to one of our databases. The folks in this department can barely
      write SQL, and I'm not interested in them training on our dime. We're giving them stored
      procedures that they won't be able to screw up. Much, much safer this way!
      - also gives your dba the ability to change the physical database (adjust for changes in business,
      performance, security, etc) without having to change all the applications: the change can be
      encapsulated.
      - and sometimes you *can't* do these things from within the app - it's closed source, but luckily
      for you it's on a database that supports triggers.

      Views
      - again, this gives you a ton of flexibility
      - for example: in most of my databases I don't give de

    8. Re:The negative comments have gone from... by nconway · · Score: 2, Informative
      Postgres (last I checked) preferred to let the OS do the data-caching. Thanks, but no thanks.


      Well, Postgres does do its own caching in userspace (see the shared_buffers configuration parameter and related documentation). It just does that caching in addition to (or rather, on top of) the caching and I/O scheduling done by the kernel. Why do you consider this to be a problem?

      (Yes, letting the kernel do most of the caching does result in a minor performance hit, but I think that the amount of work required to implement raw I/O doesn't justify the returns, at least at this point.)

      And no 64-bit version [of Postgres] (though I've read a few people have managed to compile one, I wouldn't trust it unless Postgres gave it the thumbs up).


      This is not true: Postgres has supported 64-bit architectures for many years. The official list of supported platforms includes many 64-bit architectures (AMD64, IA64, Alpha, Sparc64, ppc64, MIPS, PA-RISC).
    9. Re:The negative comments have gone from... by Philodoxx · · Score: 2, Informative
      1) Triggers are hidden application logic that are very hard to debug, and are easily overlooked or forgotten by developers. Business logic (other than defensive logic like unique indexes, primary keys, foreign keys, not-null columns) does not belong in the database. They belong in the middle tier. They also make it much more difficult to move to another database.
      I completely disagree. First off you should have the source for the triggers stored somewhere sane, and secondly sometimes the best triggers are ones that do really mundane things like altering data in other tables so that you don't have to to do it on every insert/update/delete.
      If you think MySQL is not a "real" database, it is, and has been since 4.0. As an Oracle (and now MySQL DBA), I can honestly say that I can't wait to dump Oracle and get the Boats.com website over to MySQL.
      Nobody can blame you for not wanting to administer Oracle, but MySQL is not the way to go. I'm sure when you were learning to ride a bike, you saw no need to take off the training wheels. It's also not like you have a choice of MySQL and Oracle, there is a sea of alternatives out there.
      2) Stored procedures are like PERL - it's very easy to make a mess unless you are very careful. They are also hidden logic, and very difficult to debug. And again, keep that logic out of the database. They also make it much more difficult to move to another database
      Again, I completely disagree. First off stored procedures are compiled and optimized by your DBMS, so they are very fast. Secondly it takes load off the client computer, and puts it towards the "beefy" host. Thirdly it makes programming much more logical. Personally, I would rather put "call get_formatted_order(x)" in code, than doing all of the SQL in the program which can be just as bad as far as intelligbility goes. Oh yeah, and keep the source code for all your stored procedures somewhere handy!
      3) Views are a nice feature, but most often used to support business and reporting. I don't like managers connecting to the database to run queries (SELECT * FROM very_large_table_1, very_large_table_2; and suddenly you have cartesian join that results in tens of millions of rows coming back, bogging everything down). To do reports, views aren't necessary.
      Views are meant to abstract your business logic (in combination with functions/stored procedures) from the actual implementation of the database.
      --
      Oh, a lesson in history from Mr. I'm my own grandpa.
    10. Re:The negative comments have gone from... by rtaylor · · Score: 1

      [quote]And no 64-bit version (though I've read a few people have managed to compile one, I wouldn't trust it unless Postgres gave it the thumbs up).[/quote]

      I see you have never used PostgreSQL. You might want to try sometime. I stopped reading at this point.

      --
      Rod Taylor
    11. Re:The negative comments have gone from... by Anonymous Coward · · Score: 0

      "Real" databases...

      http://www.wintercorp.com/VLDB/2005_TopTen_Survey/ TopTenWinners_2005.asp

      The largest databases in the world are ranked here. No MySQL anywhere on the list... Sorry. Oh you mean it is good for selecting web pages from a database! Wow.

      OMFG, stored procedures in Perl? What were they thinking...

    12. Re:The negative comments have gone from... by glwtta · · Score: 1
      Guess what? Innodb recovered without any lost data. Twice. This was a driver/hardware/linux issue, not a MySQL issue. We now appear to have a stable set of drivers, and I expect the MySQL database to hit 100% uptime pretty much every month.

      That's great, but you kind of expect that sort of thing from a database. That's kind of like saying: Look! MySQL inserted and retrieved a record, twice!

      Postgres (last I checked) preferred to let the OS do the data-caching. Thanks, but no thanks.

      Why not? In what way is duplicating the OSes work a good thing here?

      And no 64-bit version (though I've read a few people have managed to compile one, I wouldn't trust it unless Postgres gave it the thumbs up).

      I am not sure what you mean. All decently recent versions (7.3ish through 8.x, I'm guessing earlier, too) build just fine on AMD64 and IA64 (and various commercial UNICES running on their own 64-bit hardware). From what I hear Postgres particularly likes AMD64, performance wise.

      MySQL with InnoDB is straighforward (it's use of tablespaces, replication, tuning, and even compiling from source - someone with mediocre Linux skills like myself can do it without issue every time).

      So's Postgres (in fact it's a little more straight-forward than MySQL for people with actual Linux skills; MySQL likes to do things the unexpected way every once in a while). I am just wondering if you shouldn't take a look at improving those Linux skills if you are running something large enough to need replication.

      1) Triggers are hidden application logic that are very hard to debug, and are easily overlooked or forgotten by developers.

      Logic that is "hidden" is what we call "abstraction", it's a Good Thing that allows you to compartmentalize your code.

      Business logic (other than defensive logic like unique indexes, primary keys, foreign keys, not-null columns) does not belong in the database. They belong in the middle tier. They also make it much more difficult to move to another database.

      And you are sure that the list of "defensive logic" you provided is exhaustive? I have plenty of logic that falls into that category (some of it in triggers, most of it in RULEs) that isn't provided as a built in construct by any database system.

      2) Stored procedures are like PERL - it's very easy to make a mess unless you are very careful.

      Yeah, programming in general is easy to mess if you don't know what you are doing. Stored procedures encapsulate and abstract common logic so it doesn't need to be replicated by multiple applications using the database. And I am guessing your experience with PERL (whatever that is) is rather limited.

      3) Views are a nice feature, but most often used to support business and reporting.

      Views are an extermely powerful database feature that is criminally underused most of the time (and has nothing to do with reporting). Oh, and MySQL's popularity probably bears some responsibility for that.

      View provide abstraction (again), reuse, portability and some performance benefits as well. Generally, there aren't that many even moderatly complex queries that aren't better implemented as views. Most of the time, there's just no reason why your application should be aware of the relational minutae of your database's design.

      If you think MySQL is not a "real" database, it is, and has been since 4.0.

      Well nice of you to settle that. As you've pointed out, version 4.0 did not have triggers, stored procedures or views - missing any one of those makes it not a "real database", even if you personally don't use those features. Version 5.0 will have those three (though it will probably take some time for those features to be "validated" in the real world), moving it three steps closer to "real database" status.

      It's great that it's getting there, and that the missing features are getting more and more esoteric: cursors, procedural langu

      --
      sic transit gloria mundi
    13. Re:The negative comments have gone from... by kbahey · · Score: 1

      Hey man.

      Thanks for a very sane post.

      Unlike those who claim that MySQL does not have tablespaces.

      I agree with you that triggers and stored procedure are often more trouble than what they are worth, and better in the middle tier.

      Views however, are a nice feature to have.

      With 5.0 coming soon, it will have all these bells and whistles for those who need them.

      What worries me is that new acquisition of InnoBase by Oracle a few days ago. I wrote about that here.

    14. Re:The negative comments have gone from... by _Sharp'r_ · · Score: 1

      "maybe $1000-$2000 one time charge for oracle + 18% / year"

      Are you kidding? Have you ever priced out a real Oracle license for a web-based application? (IE unlimited users or CPU basaed, which is what Oracle requires for anything that allows the general Internet to use it).

      --
      The party of stupid and the party of evil get together and do something both stupid and evil, then call it bipartisan.
    15. Re:The negative comments have gone from... by kpharmer · · Score: 2, Informative

      > Are you kidding? Have you ever priced out a real Oracle license for a web-based application? (IE
      > unlimited users or CPU basaed, which is what Oracle requires for anything that allows the general
      > Internet to use it).

      You're right - i was thinking of other applications. I shouldn't have since the parent had mentioned a million hits.

      Not positive on what the current unlimited users oracle license is for two cpus. But the license cost goes up steeply for unlimited users. For DB2 I think it the cheapest unlimited user license is probably $7500 / CPU (list). Even assuming a substantial discount, mysql will be cheaper.

    16. Re:The negative comments have gone from... by _Sharp'r_ · · Score: 1

      We once spent an extra $250K on hardware to buy a pair of 2 cpu Alpha boxes instead of a pair of 4 cpu Sun boxes for our Oracle RAC setup because it saved us literally about $1,000,000 bucks in Oracle licenses and at the time, the performance level between the two was similar.

      Unlimited per cpu licenses are expensive for Oracle, although they have come way down the last couple of years, they're still ridiculous.

      --
      The party of stupid and the party of evil get together and do something both stupid and evil, then call it bipartisan.
    17. Re:The negative comments have gone from... by Anonymous Coward · · Score: 0

      If you have more than one system accessing the data and you want to apply the same business rules, use CORBA or COM objects to manipulate the data. The objects should have methods to manipulate the data which enforce the integrity.

    18. Re:The negative comments have gone from... by puppetman · · Score: 1

      You're right - I see torrents for 64-bit versions. Last time I checked was the later 7.x (maybe even 8.0 beta).

    19. Re:The negative comments have gone from... by mgkimsal2 · · Score: 1

      While this approach would work in certain circumstances, there's still an assumption there that the original system was built to accomodate that sort of scenario. If it was, great. If it wasn't, then you're stuck.

    20. Re:The negative comments have gone from... by jadavis · · Score: 1

      This is a very wrong-headed assertion. If you've got a requirement to individually process each of fifty million rows, which is better - pulling them all across the network to the client app, processing, then pushing them back to the DB, or doing the processing on the (big, powerful, local) DB?

      Stored procedures are very important for many reasons, but you are making a wrong-headed decision as well. It's not about keeping logic in the database or keeping logic out of the database. What you need to do is put logic in the database if it maintains your data integrity or if it maintains the API you are providing to a client application.

      A general rule is: if it's an inherent truth that has very little chance of changing over time, and it's consistent across all your applications, put it in the database and let the database enforce it. However, if it's just a current business rule that is subject to change, put it in the application.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    21. Re:The negative comments have gone from... by rtaylor · · Score: 1

      They've had official support for 64 bit platforms for at least 5 years.

      --
      Rod Taylor
    22. Re:The negative comments have gone from... by Curly · · Score: 1

      > Yeah, but even 20 year old databases supported transactions, views, etc. And they didn't:
      > - silently truncate the amount in your account because it was too large for the column

      The article you're responding to is about MySQL 5.0, in which that misfeature can be disabled. (It's a fair complaint, but worth pointing out that it's been addressed. You may as well complain that MySQL doesn't have stored procedures.)

      > - silently install to myisam because it couldn't find innodb, then ignore
      > your attempts to rollback

      I don't know if they've fixed that, but really, how often have you incorrectly installed the system so it doesn't support innodb without immediately discovering that?

      > - silently truncate varchars (customer name) which could prevent data matches

      Same misfeature as point 1, fixed in MySQL 5.0.

      > - etc

      Please elaborate. "Etc." is FUD.

      > [the reason for using MySQL] can't be cost

      You may be surprised how much of a difference free is over a few grand for a lot of companies. Especially when experimenting with some new thing. In addition to being a difference in amount, free is a difference in kind.

      > the legal cost to confirm that will easily exceed the oracle cost.

      That's rubbish. MySQL is gpl'd, and for a gigantic number of uses that means zero cost, zero legal troubles, forever.

      The last time we priced Oracle was a couple of years ago, but the pricing was ridiculous. And on top of paying the money for the software, and the support, you have to manage licences. One of the nicest things to me about moving to open source software was that the software authors *want* you to install and use it. There's no more barrier than "apt-get install <foo>". Not having anything in the way between you and installing the software saves real money, even if the software weren't zero-cost. In an emergency you're trying to set up a new server, you don't want to be hunting for a license key or faxing for an installation key or validating something over the phone. (I've never installed Oracle, maybe it's less of a headache than dozens of other pieces of proprietary software I've worked with.)

    23. Re:The negative comments have gone from... by kpharmer · · Score: 1

      > The article you're responding to is about MySQL 5.0, in which that misfeature can be disabled. (It's a
      > fair complaint, but worth pointing out that it's been addressed. You may as well complain that MySQL
      > doesn't have stored procedures.)

      Not really - mysql manages to get into the v5.0 into the press every month with people making the exact same claim. However, it is not GA, not production, just beta. Once they actually get the product into production and it works, then the only relevant thing about this issue regards the credibility of a company that would put out such a product in the first place.

      > I don't know if they've fixed that, but really, how often have you incorrectly installed the system
      > so it doesn't support innodb without immediately discovering that?

      How would you immediately discover that? I can't remember anyone ever in twenty years of working with databases begin testing rollback functionality on a database. Even with mysql - nobody does that.

      >>
      >> - etc
      > Please elaborate. "Etc." is FUD.

      heh, not in this case. how about this abbreviated list:
      - primary key behavior is non-ansi (implicit pks, and fks that require explicit pks)
      - adding an index to an innodb table causes table to be rebuilt - which can fail if you don't have sufficient space for 2 copies of the table
      - no way to manually adjust identity column values - suggestion from mysql is to add dummy rows (!)
      - replication command LOAD TABLE FROM MASTER requires you to flip the table between innodb and myisam
      - stats - i don't think mysql gathers stats for any columns besides indexes
      - last year mysql's claim to fame for performance was 800 inserts / second. This was at the same time db2 is hitting 60,000 *transactions* a second
      - you can check on the gotchas list for quite a few more

      > > [the reason for using MySQL] can't be cost
      > You may be surprised how much of a difference free is over a few grand for a lot of companies.
      > Especially when experimenting with some new thing. In addition to being a difference in amount, free
      > is a difference in kind.

      Then i'd suggest a category shift in cost - go with genuinely free - something like SQLite or Postgresql. Both free, both high-quality products. No, they aren't up to db2/oracle/informix quality yet, but nevertheless are free of the bizarre quality and standardization problems in mysql.

      > That's rubbish. MySQL is gpl'd, and for a gigantic number of uses that means zero cost, zero legal
      > troubles, forever.

      It is gpled
      - with a license requirement with a dozen convenient exceptions, that can be easily revoked later
      - based upon a product subject to license renewal owned by Oracle (innodb)
      - with client linkage definitions (socket communication with client is linking?) that is a contradiction what is stated in the GPL
      - with recommendations to talk to them if you're not sure, or to just license if you're not sure

      > The last time we priced Oracle was a couple of years ago, but the pricing was ridiculous.
      > And on top of paying the money for the software, and the support, you have to manage licences.
      > One of the nicest things to me about moving to open source software was that the software authors
      > *want* you to install and use it. There's no more barrier than "apt-get install ". Not having
      > anything in the way between you and installing the software saves real money, even if the software
      > weren't zero-cost. In an emergency you're trying to set up a new server, you don't want to be
      > hunting for a license key or faxing for an installation key or validating something over the phone. >(I've never installed Oracle, maybe it's less of a headache than dozens of other pieces of proprietary
      > software I've worked with.)

      i partially agree with you here:
      1. Oracle's pricing has come down hugely over

    24. Re:The negative comments have gone from... by Anonymous Coward · · Score: 0

      If you're willing to give up SQL as a means of ad hoc data access, and take the performance hit for object/relational mapping, what's the benefit of using a relational database underneath the layer of crap?

      If I'm too stupid to understand the triggers, how am I going to understand the access objects which contain the same logic only obfuscated (due to not being implemented in pure SQL)?

  52. Re:MySQL has been, and always will be sub standard by Decibel · · Score: 1

    Some people want something that is very lightweight and fast.

    In which case they should use something like SQLite, which unlike MySQL doesn't claim to be more than it is, has a better license and actually sticks with standards.

  53. Problem with your predictions by truthsearch · · Score: 1

    Your predictions ignore non-technical issues. Oracle has brand recognition, massive marketing, and consultants. Large enterprises want a significant company backing their software. Oracle may be expensive, but they provide the services large companies want. Most IT managers are familiar with Oracle and have no idea what PostgreSQL is.

  54. Mysql 5 and MSSQL 2005 in Nov. by squison · · Score: 1

    Will be a busy month for us DBA types. Should be fun.

  55. SQlite? by shutdown+-p+now · · Score: 1

    Whenever MySQL vs PostgreSQL comparison comes up, there are always people who claim that MySQL still has its own niche of the "not ACID but fast" database for basic things. Is it alone there, though? How well does it compare with e.g. SQlite?

    1. Re:SQlite? by JoshDanziger · · Score: 2, Informative

      SQlite is not meant to compete with mySQL. All locking, IIRC in the most recent version is file based. Since each database is a file, this means that only a single write to a database can happen at a time. If you really need concurrent access, that's not going to scale well for large databases with many concurrent reads/writes.

      That said, SQLite is fantastic! I really mean that. I use it mostly in single-user/light-concurrency situations when a full scale DMBS isn't needed. It's great if you want to write a script/small app that deals with relational data or even a single table. It makes querying/massaging the data a breeze.

      It's also pretty good for an offline demo. If you want to demo an application that normally relies on a database server, plugging in an SQLite driver in place of, say, a mySQL driver will yield very good results. SQLite is designed to support basic syntax for a variety of databases; as long as you aren't doing anything too fancy, you should be able to just swap out the drivers and go!

  56. Re:MySQL has been, and always will be sub standard by commanderfoxtrot · · Score: 1

    Not to echo, but I made the switch and have never regretted it. Postgres is so much easier and more professional.

    --
    http://blog.grcm.net/
  57. Re:Who cares? It's still a shitty database. by dotgain · · Score: 1
    Only a fool

    You

    would trust his data

    Your comment

    to such a provable piece of shit.

    The MySQL database used to run Slashdot.

  58. Some technical complaints though by einhverfr · · Score: 1

    Suppose I create a table:

    create table my_table(
    id int autoincriment,
    fk1 int references other_table (id)
    ) type=innodb;

    Hmmm... Foreign keys are not enforced (with no warning issued by MySQL as to this behavior) but if I do

    create table my_table(
    id int autoincriment,
    fk1 int,
    foreign key fk1 references other_table (id)
    ) type=innodb;

    Now they are enforced. Why the difference?

    If I do a lot of inserts/updates/deletes on an innodb table, how do I recover space?

    If you want a real RDBMS at a fraction of the cost or no cost at all, I would suggest going with PostgreSQL. My site has a whitepapers section where we offer a MySQL to PostgreSQL migration guide.

    --

    LedgerSMB: Open source Accounting/ERP
    1. Re:Some technical complaints though by arjenlentz · · Score: 1

      MySQL 5.0 can warn or reject on such instances.

      Re the whitepaper you refer to, it contains quite a few factual errors, including the fib about MySQL not having any MVCC storage engine. Such mistakes reflect rather badly on the expertise of the whitepaper authors. Can't be good for business....

      It is so much better to compete on positive aspects of ones own product, rather than spread FUD about another. It makes one wonder.

    2. Re:Some technical complaints though by einhverfr · · Score: 1


      Re the whitepaper you refer to, it contains quite a few factual errors, including the fib about MySQL not having any MVCC storage engine. Such mistakes reflect rather badly on the expertise of the whitepaper authors. Can't be good for business....


      MVCC is a relatively late development in innodb, if I remember right. And the information I had on that area was dated. Very recently, one of our business associates provided some additional information which was reviewed and entered into the paper in this area. The new version is out now.

      --

      LedgerSMB: Open source Accounting/ERP
    3. Re:Some technical complaints though by arjenlentz · · Score: 2, Informative

      Sorry, but you're just plain wrong. MVCC is a fudamental design feature in InnoDB, and so it has been present in MySQL for over 4 years now. There's just no excuse. Facts need a source, you don't just make them up ;-)

    4. Re:Some technical complaints though by einhverfr · · Score: 1

      Sorry, but you're just plain wrong. MVCC is a fudamental design feature in InnoDB, and so it has been present in MySQL for over 4 years now. There's just no excuse. Facts need a source, you don't just make them up ;-)

      Fair enough but I found no mention in the MySQL documentation when I went through it in terms of these areas. I could have missed something though. I sent it out for review to others and this was not corrected or challenged by anyone until early today.

      Mistakes occur. I am less of a MySQL expert than a PostgreSQL expert. Please rest assured that these mistakes are not made out of malice.

      I do have one claim in there at the moment that I would like your feedback on. Those who sent me a correction early this morning mentioned that InnoDB has a bloat problem where it has trouble removing dead tuples. I have not felt like attempting to test this, but I am wondering how InnoDB recovers and reuses space in this way, and whether they simply have some odd bug that is difficult to reproduce. Please respond because I really would like a wider review of the document and greater feedback.

      --

      LedgerSMB: Open source Accounting/ERP
    5. Re:Some technical complaints though by arjenlentz · · Score: 2, Insightful

      Why would a non-expert on a topic write an whitepaper about it? Makes no sense... Sorry for being so picky, but I'm just a bit fed up with that kind of nonsense. Regardless of the intent, the result is malicious as such FUD on the net hangs around and is copied and quoted. Wouldn't you rather compete by focusing purely on the positive points that your own offering provides? Anyway, your image is yours to build or undermine. It's a choice. Space from deleted rows and old versions are automatically reused, no explicit maintenance is required for this. I don't know what that person was referring to; if he/she has a valid point, I'm sure they can be more specific about the matter.

    6. Re:Some technical complaints though by Jules+Bean · · Score: 3, Insightful
      I do have one claim in there at the moment that I would like your feedback on. Those who sent me a correction early this morning mentioned that InnoDB has a bloat problem where it has trouble removing dead tuples. I have not felt like attempting to test this

      You expect people to take your analyses seriously, but you don't feel like attempting to test...?. I suggest you leave serious comparison documentation to people who do feel like testing stuff. No offence intended.

      --
      -- Any sufficiently advanced technology is indistinguishable from a perl script.
  59. it really depends on what those pages do by jbellis · · Score: 1

    if you have a db with a few TB of data, and some complex queries going on, it would be pretty impressive to serve 8 pps.

    now, I'm sure rubyforge isn't at that level, but from what I remember about the SF code base, I doubt it's trivial either.

  60. Re:Great! by Osty · · Score: 1

    To answer your question, if you don't know what they are, you probably don't need them.

    More accurately, if you don't what they are, you probably don't know that you need them. Or even better, if you don't know what they are, I really hope you're not supposed to be a DBA, designing and maintaining database systems.

  61. Re:Great! by commanderfoxtrot · · Score: 1

    The above post is accurate, but don't be confused and think "prepared SQL" is the same thing. Prepared SQL is similarly pre-parsed and pre-planned so you get decent performance benefits. And no chance of SQL injections hacks. (Why do so few people use prepared SQL? It's not complicated!)

    Also bear in mind that a stored procedure could be *anything*. Postgres allows you to use perhaps half a dozen common languages; Oracle and DB2 similarly. I have no idea what MySQL allows- probably similar. You could write your whole application in the DB if you really wanted to.

    --
    http://blog.grcm.net/
  62. It is worth noting by einhverfr · · Score: 1

    Beta 3 is expected to be the last beta version of PostgreSQL. This month, it seems likely that PostgreSQL 8.1 RC1 will be released. I would expect PostgreSQL 8.1 to come out in November or December of this year.

    --

    LedgerSMB: Open source Accounting/ERP
  63. We have the data available to us. by CyricZ · · Score: 2, Informative

    We have the data available to us.

    http://rubyforge.org/docman/view.php/5/11/rubyforg e_site_status.html

    The PostgreSQL database contains about 3.2 million records and takes up 600 MB of disk space.

    600 MB is obviously not a few TB. It's not even 1 GB!

    RubyForge is currently running on a single machine with two 2.8 GHz Xeon CPUs, 2 GB of RAM, and a hardware RAID 5 SCSI array of 210 GB.

    They have 2 GB of RAM for a 600 MB database. Even assuming the web server, mail server, Linux, etc., take half of the available real memory (probably unlikely), that still leaves 1 GB or so for the database. More than enough for the database itself to be resident in RAM.

    --
    Cyric Zndovzny at your service.
  64. Re:Great! by Osty · · Score: 1

    You could program a trigger to react when an employee record goes to certain status (say, he/she is fired or quits) and change the status of this employee's records all over the database to 'immobile' or 'retired'.

    Bad example. If an employee quits or is fired and you have to change status in many different places, your schema is broken. It's a decent example for a trigger, but as with most uses of triggers it's not something you should actually do. Having triggers available is important, but you need to be very selective about when you use them.

    Then again, your trigger example could just be the first step in a system-wide cleanup. By mixing views and triggers, you can slowly change your underlying architecture without affecting your currently-running applications.

    This update SQL is a one liner, so maybe it's not the best example, the more complex ones are better candidates.

    In most cases, I'd still build a stored procedure for that one-liner. It simplifies your permissions model by allowing you to grant access only to stored procedures, and also allows you to give a user the ability to only change that status column (because that's all the stored proc does). If you were doing this with dynamic sql, you'd have to give UPDATE access on that table, and now the caller could change columns other than status. This also keeps status updates uniform across applications, where each app that needs to update a status calls this stored procedure rather than writing another UPDATE query. Also, using stored procedures helps prevent SQL injection by using typed arguments (you have to call the procedure using bound parameters rather than just passing the dynamic string '"exec sp_foo @id = " + myId', of course), and there is the minor performance benefit of compiling that statement so that the engine doesn't need to parse it every call.

    In a performance - conscious application you might want to zap those triggers and instead put all the logic in stored procedures and execute them as needed.

    I'd go as far as saying that in most cases you should use stored procedures rather than triggers, as the logic is more straightforward. Triggers have their place, but as I already said you should be careful about when you use them.

  65. Add to these complaints by einhverfr · · Score: 2, Informative

    1) Inconsistancy in how create statements are handled. For example:
    create table table2 (
    id int autoincriment,
    fk int references table1 (id)
    ) type=innodb;

    does not enforce the foreign key even in 5.0 while:
    create table table2(
    id int autoincriment,
    fk int,
    foreign key (fk) references table1 (id)
    ) type=innodb;

    does enforce them.

    2) Even with strict mode, any application can turn it off, allowing it to add bad data (try adding Feb 31, 20005 as a date in MySQL with strict mode off). This is a violation of Date's Central Rule.

    3) "clustering" only works on tables that are cached entirely in RAM so if you use this you must have a beefy machine.

    I know you like DB2, so you won't mind if I point out that an area Oracle has a problem is that it treats empty strings and NULL varchars as identical. Unfortunately no RDBMS is perfect.

    Now for additional information on your complaints....

    quite a few deviations from ansi sql - everything from comments to weird create statements

    One should point out specifically that operators are non-standard leading to *very* unportable code.

    mysql's performance on innodb was better for mixed environments, but innodb has a bloat problem that can get serious.

    This is caused by the fact that innodb uses something like PostgreSQL's MVCC system but lacks an ability to vacuum the tables.... And MySQL people attack PostgreSQL for the need to vacuum the database....

    no support for query parallelism, partitioning, etc - isn't 1/40th the speed of a commercial product for many queries.

    BTW, PostgreSQL 8.1 will have much more useful table partitioning, and there is a project (Bizgress) aimed at adding parallelism across nodes in business intelligence environments (we had this discussion before once on Slashdot ;-) )

    --

    LedgerSMB: Open source Accounting/ERP
    1. Re:Add to these complaints by kpharmer · · Score: 1

      > BTW, PostgreSQL 8.1 will have much more useful table partitioning, and there is a project (Bizgress)
      > aimed at adding parallelism across nodes in business intelligence environments (we had this discussion
      > before once on Slashdot ;-) )

      Yep, i remember.

      It's very cool seeing postgresql pick up some of these capabilities. It is really becoming a very cool database. DB2 and Oracle will still have an edge for five years I think, but beyond that I think that they are in deep trouble.

      I mostly make my living with db2 these days, oracle/informix/sybase/sql server in the past. But I'll gladly start working with postgresql once the BI functionality is in place. But spending any time with mysql's glaring deficiencies in data quality, BI performance, etc in the face of the marketing hype seems too much like y2k work. Yuck.

    2. Re:Add to these complaints by einhverfr · · Score: 1

      I mostly make my living with db2 these days, oracle/informix/sybase/sql server in the past. But I'll gladly start working with postgresql once the BI functionality is in place. But spending any time with mysql's glaring deficiencies in data quality, BI performance, etc in the face of the marketing hype seems too much like y2k work. Yuck.

      Keep an eye on Bizgres. Their web site is at www.bizgres.org.

      Of course nobody uses the MySQL for serious BI work.

      --

      LedgerSMB: Open source Accounting/ERP
    3. Re:Add to these complaints by Anonymous Coward · · Score: 0

      Yeah.. Bizgres 0.8 is coming soon that supports on-disk bitmap index. (experimental only)

  66. Re:Great! by Osty · · Score: 1

    I would like to add to your third definition. A stored procedure is nothing more than a pre-parsed and pre-planned SQL command.

    Slight modification: A stored procedure is nothing more than a pre-parsed and pre-planned SQL batch . You can do much more than a single command in a stored procedure. Not that you couldn't use a stored procedure for a single command, or even shouldn't. I'm a big fan of only interacting via stored procedures between my app and my database. That applies even when all I need is a "trivial" query or update.

  67. Correction by einhverfr · · Score: 1

    The create table example should read:
    create table table2(
    id int autoincriment,
    fkey int references table1 (id)
    ) type=innodb;

    --

    LedgerSMB: Open source Accounting/ERP
    1. Re:Correction by mw · · Score: 1

      Wrong. The database MUST throw an error when the users does something unsupported, and not silently ignore what the user really wanted and doing something completly different. This is broken by design.

    2. Re:Correction by einhverfr · · Score: 1

      Wrong. The database MUST throw an error when the users does something unsupported, and not silently ignore what the user really wanted and doing something completly different. This is broken by design.

      Why do you think I don't use MySQL?

      --

      LedgerSMB: Open source Accounting/ERP
  68. replication from two masters?? by pitc · · Score: 1

    Alas, I still cannot replicate one database from one server, and another database from another.

    Maybe in version 8...

    --
    aoeu
  69. Re:MySQL has been, and always will be sub standard by Anonymous Coward · · Score: 0

    SQLite!

  70. Tell That To Yahoo by Anonymous Coward · · Score: 0

    They use MySQL all over the place. Local search, shopping, finance, groups... the list goes on. These are applications that scale way beyond any enterprise application.

  71. So can it do transactions yet? by Anonymous Coward · · Score: 0

    I realise that Open Sores is the way forward, so can the much over-hyped MySQL do "transactions" yet? Oracle and Sybase have had this feature for years!!!

    If you have to ask what a transaction is, you clearly don't "get it" LOL!

    I'm serious! I work for a fortune 100 investment bank, any technological edge we can get will enhance our competitiveness at the expense of our rivals. (we even use the shareware OS Linux on some of our blade-servers!) and I hear MySQL is great for "hobbyists" but can a "shareware" solution really cut it in the Investment Banking Space????

  72. Re:Great! by Anonymous Coward · · Score: 0

    That's as wrong-headed as telling Windows users who're plagued by security problems, "If you don't know what user accounts and file system permissions are, you probably don't need them."

    Ignorance of complex but powerful features is not the same as the considered rejection of those features.

  73. Maybe this is a troll, but . . . by div_2n · · Score: 0, Offtopic

    Forgive me if I don't get excited. I don't use products from companies that make deals with the devil.

    MySQL working with SCO

  74. InnoBase and Oracle acquisition by kbahey · · Score: 2, Interesting

    What worries me is that new acquisition of InnoBase by Oracle a few days ago.

    InnoBase is the maker of InnoDB, which is the full featured dual licensed storage engine with transactions, referential integrity, hot backups and more.

    The GPL version of MySQL will not be affected should Oracle decide to misbehave.

    What may get affected is the commerical version of MySQL. Oracle can demand a hefty price for relicensing InnoDB, when the contract is up for renewal hence choking MySQL AB financially, by depriving it from the revenue stream of commerical licensing MySQL with InnoDB.

    This may in turn cause long term trouble for the community by depriving it from contributions by MySQL.

    I hope Oracle does not do that, but still, they are a corporation with no open source culture, and may have the mentality of choking the competition, using the very rules of open source dual licensing.

    Or, they may be softening MySQL to buy them cheap in the near future ....?

    1. Re:InnoBase and Oracle acquisition by Kemuri · · Score: 2, Informative


      Just for your information, InnoDB Hot Backup is not opensource and not part of MySQL.
      Rest is offtopic. :)

  75. Re:Great! by glwtta · · Score: 1
    To answer your question, if you don't know what they are, you probably don't need them.

    More likely, if you don't know what they are, and you are evaluating database engines, you are underqualified for your job.

    --
    sic transit gloria mundi
  76. Level of privileges by lamber45 · · Score: 1

    MySQL has a column-level privilege system, not a table-level privilege system. It also has never had "static SQL"; however, you're confusing stored procedures with prepared statements. MySQL has had prepared statements and a cache of query optimizations for frequently called statements since the 4.0 release.

  77. I think that's a bad analogy. by Estanislao+Mart�nez · · Score: 1
    I think a better analogy is with MySQL as a bus, and Oracle as the 747. The biggest problem with MySQL, historically, has not been that it does the same things as Oracle does but at a smaller scale (Cessna vs. 747), but rather, that it just hasn't had a lot of crucial database management features (like constraints; or more generally, the fact that MySQL just wasn't designed with data integrity in mind at all, and it's been tacked on later).

    So yeah, of course, Cessnas should definitely be more common than Boeings, but buses don't fly at all.

  78. Re:Who cares? It's still a shitty database. by larry+bagina · · Score: 1

    actually, slashdot, sourceforge, etc. use db2. They switched over a couple years ago, but they don't like to talk about it.

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  79. insulting end users by bani · · Score: 0, Flamebait

    postgresql joins qmail and openbsd in the proud and honored tradition of insulting potential end users with a supremacist attitude and ego the size of galaxies... ...and then join in the feverish hand wringing wondering why few people want to use it...

    (hint: you win few converts by talking down to them)

  80. Re:Who cares? It's still a shitty database. by paranoidgeek · · Score: 1

    I think you are just trolling.

    To being with Slashcode ( what drives this ) will *only* work with MySQL ( http://www.slashcode.com/docs/INSTALL ) and has never supported db2.

    Secondly, i have a sourceforge project and i can connect to a MySQL database from my project's sf-hosted server-side page.

    http://sourceforge.net/docman/display_doc.php?doci d=4297&group_id=1#mysql

    --
    Lima India November Uniform X-ray
  81. News at 11! bani predicts death of OSS movement.. by slashname3 · · Score: 1

    Get real! This is the same kind of predictions about USENET imploding that occured every few months so many years ago. Never happened. And since when is it such a horrible thing to express an opinion? If you look back over my posts I stated the reasons I made a particular choice. Did not say anyone else had to follow that choice. If you like mysql and it does the job for you then use it. I've been there done that and finally decided that postgresql for various reasons works better for the projects I work on. kevinadi has even stated in his own posts that he sees benefits in using postgresql. Funny what learning a few new things can do for one isn't it. :)