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

 



Forgot your password?
typodupeerror
×
Databases Programming Software IT

'Most Important Ever' MySQL Reaches Beta 632

An anonymous reader writes "The open source database company says it is 'fixing 10 years of critcism in one release', and is aiming at boosting enterprise take-up." Stored procedures. Triggers. Views. It's like it'll be a real DB!
This discussion has been archived. No new comments can be posted.

'Most Important Ever' MySQL Reaches Beta

Comments Filter:
  • by eibon ( 825176 ) on Wednesday March 30, 2005 @02:01PM (#12090517)
    TFA doesn't mention anything about foreign key relationships, but it sounds more than a little weird to implement views, triggers and stored procs before FKs. Anyone know?
  • Other DBs (Score:4, Interesting)

    by drivinghighway61 ( 812488 ) on Wednesday March 30, 2005 @02:01PM (#12090525) Homepage
    This is certainly good news for MySQL, but many open-source advocates forget about other open-source DBs like PostgreSQL [postgresql.org], which has had these features for a while. But competition is always good, and it's good to see MySQL stepping up its value.
  • by grahamsz ( 150076 ) on Wednesday March 30, 2005 @02:03PM (#12090547) Homepage Journal
    Seems like sqlite or hsqldb make more sense on the low end and as always there are better (though often more expensive) options on the high end.

    It's great for prototyping things, but i just can't imagine running something critical on it.
  • values (Score:2, Interesting)

    by maxjenius22 ( 560382 ) on Wednesday March 30, 2005 @02:08PM (#12090640)
    So it doesn't randomly pick a value when the user tries to insert something invalid???

    Why would I switch from PostgreSQL now?
  • by Daniel Dvorkin ( 106857 ) * on Wednesday March 30, 2005 @02:18PM (#12090755) Homepage Journal
    As someone who has been developing enterprise apps with MySQL for a while now, I'll answer this, even though I'm 99.44% sure you're trolling: what we've always done, so far, is put all the triggers in the application layer. Now we can make "real" triggers in the DB layer, but guess what? The logic is exactly the same.

    Given the widespread use of MySQL to run some very complex systems, I rather suspect that you, like most anti-MySQL trolls, have no idea of what the "typically skilled MySQL user" actually does. Yes, there are lots of people who pick it up because it's free, easy to use, and widely known who have no business doing any kind of DB work. There are also those of us -- a lot more than you think -- who make our living at it and know exactly what we're doing.
  • At what cost? (Score:4, Interesting)

    by Jhan ( 542783 ) on Wednesday March 30, 2005 @02:20PM (#12090785) Homepage
    So now MySQL is a "real DBE". Does that mean this new version is no longer 5-10 times faster than the "real DBE" (Informix) that we abandoned for the one reason that MySQL has extreme performance?

    I do hope all these new features are either off by default or easily turned off.
  • by russx2 ( 572301 ) on Wednesday March 30, 2005 @02:23PM (#12090828)
    From the article:

    "It [MySQL] accounted for 40 percent of open source database deployments, while Firebird and PostgreSQL accounted for 39 percent and 11 percent of deployments respectively."

    Are these stats really true? Despite being a firebird user myself, I'd always assumed postgresql was a much bigger, more widely used product.

    Unless of course the author is including *all* databases based on the Interbase code in that percentage?
  • by aweiland ( 237773 ) on Wednesday March 30, 2005 @02:24PM (#12090853)
    Some of the people making comments haven't really hit on one of interesting things in MySQL, the ability to use different table types.

    For instance you can't do transactions with MyISAM, but you can with InnoDB. You pick what you need.

    I think the question that needs to be asked is where in the mysql engine will these features be added? Into the core? Into the MyISAM tables? In a new table type (i.e. MyISAM2)?
  • well (Score:3, Interesting)

    by Sv-Manowar ( 772313 ) on Wednesday March 30, 2005 @02:29PM (#12090902) Homepage Journal
    this is great news for the open source database community, but i can't help but wonder if we shouldn't be more interested in PostGreSql instead, given it's more open license terms

    MySql a.b. have previously shown their willingness to change their license terms and this has manifested itself in issues with projects like PHP who notably have changed to pushing SQLite more heavily with PHP5.
  • by CDarklock ( 869868 ) on Wednesday March 30, 2005 @02:29PM (#12090905) Homepage Journal
    I've built three enterprise-class web systems on MySQL and I'm in the middle of building a fourth.

    In the early days, it was hard to work around the lack of stored procedures, triggers, and views... I was coming from an Informix background with some Oracle experience... but nobody I worked for wanted to license one of those for web stuff at the time. And now that MySQL is about to add the stuff I used to wish for, I actually don't really need it -- I've long ago gotten over the lack of these features.

    So I'm primarily going to use the 5.0 release as an excuse to demand a week or two of feature-freeze for hack cleanup, under the guise of migration testing.
  • by scorp1us ( 235526 ) on Wednesday March 30, 2005 @02:32PM (#12090945) Journal
    ...but legal. The community seems to have over-looked the license change from the 3.xx days. I should know. I had software that was permissible to be run on gratis-MySQL, but as of 4.0, the license changed. I now use PostgresSQL which I throughly advocate, not just because of the license, but because of the feature set and the anal developers.

    There where 3 reasons why MySQL got popular:
    * Free
    * PHP
    * Windows support

    Free has been removed because fo the license change. PHP is a non-issue, these days, and naitive Windows support is now in PostgreSQL 8.0.

    Now, we have a much more level playing feild. On brief analisys we have:
    * Easy replication on MySQL/ Not so easy on PostgreSQL (when only soncidering the free varietyfree)
    * Experimental/new features on MySQL, but throughly tested features on PostgreSQL.
    * Limited license on Mysql, BSD license on Postgres.

    Those three are, IMHO, the remainging differences pertinant to typical DBS selection.

    Then there are the addional features. I like the sandards-compliance and no gothcas (MySQL Timestamp) of PostgreSQL.

    Just my $0.02
  • this is advertorial (Score:3, Interesting)

    by SethJohnson ( 112166 ) on Wednesday March 30, 2005 @02:34PM (#12090975) Homepage Journal


    This blurb on Slashdot is an advertorial. There's absolutely no real meat to the ZDNet article. It's got one quote from a guy at mySQL mentioning three new features. The older slashdot story pointing to the changelog at mySQL [mysql.com] has way more information than this ZDnet piece. And it doesn't conveniently feature a big banner ad for SUN hardware.

    It was submitted from an anonymous reader. I am betting that anonymous reader is a sales guy at ZDnet looking to boost hit reports for their Sun banner ads. "I'll call those dorks at slashdot and pay them to link to a little pseudo story about mySQL."
  • by Anonymous Coward on Wednesday March 30, 2005 @02:40PM (#12091022)

    I'd say this was a little more pertinent [sql-info.de].

    mysql> INSERT INTO phantom2 VALUES (128);
    Query OK, 1 row affected (0.00 sec)

    mysql> SELECT * FROM phantom2;
    +-----+
    | id |
    +-----+
    | 127 |
    +-----+
    1 row in set (0.00 sec)
  • by mellon ( 7048 ) * on Wednesday March 30, 2005 @02:44PM (#12091084) Homepage
    One of the things that's a real problem for me with MySQL is the places where MySQL doesn't follow the SQL language standard. This means that MySQL scripts typically only run against MySQL. This is probably just ignorance on my part - perhaps they fixed this long ago, and people are just coding to the old standard - but does anybody know anything about this? I wasn't able to find anything about it in the press release.
  • Question (Score:3, Interesting)

    by The Spoonman ( 634311 ) on Wednesday March 30, 2005 @02:50PM (#12091178) Homepage
    What about bi-directional replication? I know, t'ain't easy, but is it easier now?
  • by hey! ( 33014 ) on Wednesday March 30, 2005 @03:00PM (#12091327) Homepage Journal
    This can be done in Oracle and I believe Postgres. Not only do they perform better than native stored procedure languages, they potentially allow you to take code that benefits from being in the database tier and make it portable.
  • by Anonymous Coward on Wednesday March 30, 2005 @03:06PM (#12091423)
    So I guess you've never heard of a wrapper. When a call is missing something that you need, you put a wrapper around it and do all calls through the wrapper. Guess what, no repeated code.
  • I guess you don't know the history here like the grandparent does. MySQL really promulgated a lot of disinformation.

    Here's what the MySQL docs (source: http://web.archive.org/web/20000619203550/http://w eb.mysql.com/Manual_chapter/manual_Compatibility.h tml [archive.org]) used to say about foreign keys, for instance:

    There are so many problems with FOREIGN KEYs that we don't know where to start:

    • Foreign keys make life very complicated, because the foreign key definitions must be stored in a database and implementing them would destroy the whole ``nice approach'' of using files that can be moved, copied and removed.
    • The speed impact is terrible for INSERT and UPDATE statements, and in this case almost all FOREIGN KEY checks are useless because you usually insert records in the right tables in the right order, anyway.
    • There is also a need to hold locks on many more tables when updating one table, because the side effects can cascade through the entire database. It's MUCH faster to delete records from one table first and subsequently delete them from the other tables.
    • You can no longer restore a table by doing a full delete from the table and then restoring all records (from a new source or from a backup).
    • If you have foreign keys you can't dump and restore tables unless you do so in a very specific order.
    • It's very easy to do ``allowed'' circular definitions that make the tables impossible to recreate each table with a single create statement, even if the definition works and is usable.

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

  • by pHDNgell ( 410691 ) on Wednesday March 30, 2005 @03:11PM (#12091492)
    Why does this stuff always get propagated? There are several table types in MySQL. If you want ACID, use InnoDB and not the default MyISAM:

    Isn't that what wikipedia was running when they had their database corruption due to a power outage that caused them to have to replay the whole thing from backups (minus whatever transactions were lost)?

    So it gives you transactions, possibly consistency. It doesn't seem to provide durability.

    Short of a block on a hard drive no longer being readable, I can't see how a power outage should make an ACID compliant database corrupt.
  • Re:Bugfest (Score:2, Interesting)

    by DogDude ( 805747 ) on Wednesday March 30, 2005 @03:13PM (#12091513)
    I agree. Especially with something as critical as database software, I can tell ya' that if the final version comes out, say, this summer, that I won't even consider looking at MYSQL for another few years.
  • by Anonymous Coward on Wednesday March 30, 2005 @03:22PM (#12091631)
    *shakes head*

    Putting data logic in the application is a problem that was (supposedly) solved in the 60s. Apparently some folks didn't get the memo..

    You wanna know what the problem with putting logic in the application is? Yup, you (hopefully) guessed it: there are very few systems where only ONE application is guaranteed to modify the data.

    Maybe your client goes in with a DB tool to quickly change a value. Maybe the summer hire writes a quick Ruby script to adjust some values. Maybe your client just wants a Java frontend to go with your web app.

    Are your constraints well-documented? Are you sure you got them right when you translated from Ruby to Java? Personally, I don't want to even *try*.

    I have plenty of "war stories" about this. I'm surprised you haven't run into problems. My first big programming project was an ecommerce database without referential integrity constraints. Sure enough, there was bad data in the DB.. order line-items without corresponding orders. The client had just gone in and deleted them by hand, and had been doing this for 5 YEARS. The problem? Author royalties were paid based on order line-items. So they had been overpaying their supplies, basically, for years.

    A bug in your code is easy to fix. A bug in your data means you've got a dependency graph starting from the moment the data entered the database, extending into the future. Who knows what other bad data was produced based on that one piece of bad data? How do you fix it? How do you rollback/replay ALL your data changes??

    You MySQL lovers can crow all you want. Frankly I don't know why you would pick a DB with less features when others are freely available with the same cost, but whatever. Until it's possible to build a system in MySQL that doesn't allow bad data, those of us who *really* know what we're doing won't touch it, even for throwaway projects (I've got plenty of war stories about prototypes that are still in production use too).

    On second though, considering how many consulting dollars I've made fixing broken crap, go right ahead... ;-)
  • by amram9999 ( 829761 ) on Wednesday March 30, 2005 @03:37PM (#12091881)
    If something isn't broke, why break it by upgrading? MySQL is constantly changing little details about how their DB works... take a look at a random page in their documentation and you will see notes like "in 4.x.x we changed this" all over the place. 5.0 sounds like it will be a very feature rich database (Yay, triggers!) but it will be a probably be a pain to upgrade. Little quirks that I've relied upon will no longer work that way. Maybe after this release, things will start to stabilize. Doubtful though.
  • by TheRealMindChild ( 743925 ) on Wednesday March 30, 2005 @03:42PM (#12091966) Homepage Journal
    Apples to rocks my friend.

    Oracle is slower then hooking up a Tab delimted file as a linked table through an access database. Oracle has never been speedy. Its been about being able to handle the load of millions of transactions a second.
  • MySQL - I love it! (Score:2, Interesting)

    by kilodelta ( 843627 ) on Wednesday March 30, 2005 @03:57PM (#12092195) Homepage
    We just upgraded to MySQL 4.1.1 - suits our needs. Fast, cheap and reliable.

    I would love to ditch our one critical MS-SQL server and convert it to MySQL but that one is heavily dependent upon triggers and stored procedures for two databases. Until MySQL 5 is up to snuff we won't even entertain transitioning those two.

    That being said, I note that the MySQL Migration Toolkit is very nice. Too bad you can't suck the data from an MS-SQL server yet. But give it time - someone will figure out how to do it.
  • by reverendslappy ( 672515 ) on Wednesday March 30, 2005 @04:03PM (#12092264)
    Amen! I've posted my criticisms of MySQL here before, only to be taken to task by the unwashed masses of MySQL "admins".

    The reality of the matter (that you articulated quite eloquently) is that MySQL has never been a true RDBMS due to it's lack of features. The aspect you mentioned of MySQL encouraging poor development habits is one that I hadn't thought to mention, though I deal with it on a daily basis.

    Far too often, I find myself assigned to clean up after several developers in another department here who create disasters of database-driven crapplications on MySQL without following the most basic tenets of database design (referential integrity, normalization, etc... If I had a dollar for every time I've come across one of these guys' big, honking, 74-column tables, followed by someone asking me "Why are there so many 'dupes' in this table?"...<deep breath>).

    For the longest time, I couldn't figure it out. Were they lazy? No, I had personally witnessed their work-ethic -- which was solid -- and they always got their deliverables in on time, spending lots of extra time in the office (there's a reason for that, of course...). Were they incompetent or unskilled or just dumb? No... All three of them always wrote very stable, elegant (albeit copious) application code. Although, with the shitty DBs they created, I guess they had to write a lot of application code -- lots and lots and lots of it -- to just make their stuff work. Anyway...

    Eventually, a position in my department opened up, and my one-table friends decided to apply. In my interviews with them, I discovered that before working here (where they're occasionally exposed to Oracle, Sybase, and SQL Server), they had experience with only one database platform. Take a guess what it was. Think hard...

    Needless to say, they didn't get the job (although I now have two of them writing application code ONLY... and they're pretty f'ing good, interestingly enough). Obviously, they're an extreme example, and I can't fairly attribute their shortcomings solely to using MySQL. But it certainly didn't help (I mean why bother creating a normalized schema when you can't ensure referential integrity at the DB level anyway, right?). Sure, they could have found a way to learn the skills somehow or they could have been more curious or driven to learn, and maybe they just aren't interested in DB stuff and maybe they shouldn't be being asked to do it, I dunno. But after seeing their resumes, I haven't hired one person -- not a single one -- who doesn't have database experience outside of MySQL. I just can't see a MySQL-only person fitting into a Oracle or Sybase or, heck, SQL Server world (yet, I guess).

    Anyway, rambling aside, I think the moral of the story is that using robust tools lends itself to building robust skills, particularly in the realm of RDBMSs. MySQL isn't evil and it isn't a bad little database platform for happy little applications, and I'm sure a ton of now very-skilled DBAs and developers might have gotten started using it. But a true RDBMS it has not been, for ten freakin' years. And more importantly, MySQL skills do not real DBAs make.

    Anyway, if it is in fact now a competitive product, I guess my collegues and I will have to stop jokingly calling it "Access for Programmers". But if it stacks up and (FINALLY) does what a lot of us need a DB to do, with the speed and stability it's already known for, I'll throw it behind one of my apps tomorrow. I've got my fingers crossed, but after 10 years of persistent let-downs, don't blame me for not holding my breath.
  • by Serapth ( 643581 ) on Wednesday March 30, 2005 @04:05PM (#12092306)
    I agree to some degree with what you are saying, *but*, I hold true to my origonal argument. To the typical end user, all the optimisations you make on the back end will be pretty much un-noticed. Unless you are returning obscenely large or complex data sets, the time spent on the database is overwhelmingly trivial compared to the latency from the network.

    I agree with you, the process is a serial one, but when optimizing anything, you spend the time where you get the biggest bang for your buck. Right now, the first big bottleneck is going to be the wire. You can control this to some degree buy buying a really big pipe, but thats it. You have no control over if your viewer is on a t3 or a 14.4 modem. The next big gain would probrably come from some form of caching system, or accelerator. After that, your biggest performance gain would probrably come from cleaning up the code size of whats being returned to the client( which sadly, most people still dont seem to do :( ). Lastly, you probrably get the next biggest bang optimizing your server side code to work quicker. Then, the databases performance comes into question

    The type of queries being done on most websites, just arent that intensive. Normally its straight out lookups, maybe a few cross table joins, etc. Very little analysis type operations happen in most sites, although granted, I imagine there are exceptions. We are talking minimal fractions of a second here.

    I guess my argument is, with all the other problems/bottlenecks, etc in the loop... the database backend is really quite far down the list. Im not saying there is no advantage to optimizing the database... im just saying its minimal compared to everything else. Granted, this argument applies to *most* sites. There are exceptions again... the googles and amazons of the world. Even then, its not so much the performance cost of the queries that comes into question, is purely site traffic volumes. With that massive amount of traffic, you need a highly scalable system at every level. But, most sites, arent google!

    As an asside, I have a similar background to you. In the mid 90's I worked for a company that made a product called Tango, which was a Cold Fusion-esque, web application server. It was slow... for the most part, the databases of the day... well... they were slow... Everything was basically just slow. Yet, in the end, where did we get our biggest bang to the buck for optimization? By minimizing the size of the HTML and images returned. By a huge margin. All the optimization in the world on the back and, and frankly, the end users still most likely wouldnt have noticed because... well, they still spent just as long waiting for the crap to download in the first place. This isnt in regards to small sites either... im talking fairly major Canadian online banks (mBanx) and such.
  • by LurkerXXX ( 667952 ) on Wednesday March 30, 2005 @04:06PM (#12092321)
    You've never had data corruption THAT YOU KNOW OF. The problem with it is that MySQL rarely throws an error, so the bad data going in goes in silently.

    This isn't data corruption that throws up a big flag, 'your database file is corrupted and you can no longer access it', it's sometime subtle anomylies in the data. Some of which can be very very bad if you are relying on the data to be good (such as dealing with money, or used in calcuations that you rely on, etc).

    I've often had MySQL folks told me they have never had data corruption. Until looking in detail at the real data. Then we've sometimes found it. All it takes is leaving out one tiny constraint check in your application you are writing.

    Just because you haven't spotted the bad data, doesn't mean it's not in there. That's why I don't trust MySQL. I want to know the database is keeping the data safe. I want real foreign key and other constraints. Really enforced, with errors thrown up when someone tries inserting bad data. Not just guessing that since I haven't spotted any bad data, there's none in there.

    If it's just for use in a blog, sure, who cares. But I generally work with databases where I actually care about the data. Postgres, Oracle, etc is the way to go if you really care about the data.

  • Re:well (Score:2, Interesting)

    by oliverthered ( 187439 ) <oliverthered@hotmail. c o m> on Wednesday March 30, 2005 @04:12PM (#12092429) Journal
    I think MySql should stick at what it's good at and not try to do something it isn't good at.

    Joe sixpack isn't going to use Oracle 9i for his blog, and your bank will never use MySQL for financial transactions.

    If anything MySQL should be cutting 'junk' so that it leans more on the SQLLite side of things instead of the PostGreSql side.
  • by As Seen On TV ( 857673 ) <asseen@gmail.com> on Wednesday March 30, 2005 @04:37PM (#12092799)
    Do you know the story of the software that runs the launch of the space shuttle? I read an article about it in Infoworld years ago. I don't guess there's a copy on line.

    Short version: This software, which is maintained by a team of fewer than 20 people, has never failed in the field. It's multiply redundant, but those redundancies have never, to date, been necessary. It works perfectly all the time.

    From the time that the first line of code was written back at Lockheed in the late 1970s to the time at the article I'm telling you about was written (1996 or so) a grand total of exactly 17 bugs was found in unit testing.

    One member of the team was quoted as saying, "We don't work late. We know that if we work overtime and get tired, we might introduce a mistake. If we introduce a mistake, somebody that we go to meetings with every week will die."

    (That's me paraphrasing, obviously, but the "somebody will die" wording is a quote. That's the kind of thing that stays with you, you know?)

    When you consider that a huge amount of computer code being written today is used in things like airplane avionics systems, car and truck engines, life-support machines and, yes, space ships, you realize that this whole "we're not perfect, we rely on users to send us bug reports" attitude is laughable in the extreme.

    You don't get a bug report when the software that controls the flaps on a 777 fails. You hear about it on the news.
  • ... or Firebird with safe-write enabled. There's no appreciable start-up cost even if your db server lost power in the middle of a large transaction. It will reclaim "garbage" space during normal activity as it discovers areas that aren't in use because their transaction got rolled back by the power failure. Handy. (Firebird and PostgreSQL are extremely similar in terms of transactional capabilities; the big difference was SWEEP vs. VACUUM, which apparently Pg took care of in 8.0?)
  • Doesn't "Vacuum" now run without having to take the database offline? As I understand it, that was what was keeping Pg from being truly 24x7. "Sweep" in firebird runs as a background process and -might- slow down the server while it's running, but doesn't prevent anything from happening. I thought that's what Pg had switched to?
  • by Daniel Phillips ( 238627 ) on Wednesday March 30, 2005 @11:32PM (#12096819)
    Without proper ACID compliance, everything else is decoration. The recent failure of one of the Wikipedia MySQL servers to start up again after a power failure proves beyond a reasonable doubt that MySQL is not ACID compliant.

    (Was the corruption due to a disk lying about cache flush/disable? Easy, test the disk. If it doesn't lie, then MySQL was the culprit.)

"Protozoa are small, and bacteria are small, but viruses are smaller than the both put together."

Working...