MySQL Moves to Prime Time
MagLev writes "MySQL, especially version 5.0, is popping up on the radar screens of database gurus who built their reputations and book sales using other SQL databases. Ken North, who did those ODBC performance benchmarks for Oracle, Sybase, and DB2, wrote a recent article about MySQL 5.0. The article profiles mission critical database software and discusses how well MySQL 5.0 fits the profile. It gives good marks to MySQL, except for Java and XML integration."
What time and what channel?
The article looks pretty good, I haven't read all of it, but it seems to point out some strong points in mysql.
I might have to check it out then -- thanks for the info.
Try not. Do or do not, there is no try.
-- Dr. Spock, stardate 2822-3.
OSS can compete with commercial offerings, it just usually takes more time to mature. Now, I'd expect to see a burgeoning market for MySQL support companies or companies offering database services and supports based on customized OSS MySQL sources. I use MySQL for websites and such, it's a great little database but I had no idea how much it scaled: MySQL has a demonstrated capacity for managing very large databases. Mytrix, Inc. maintains an extensive collection of Internet statistics in a one terabyte (1 TB) data warehouse that contains 20 billion rows of data. Sabre Holdings runs the oldest and largest online travel reservation system. It replicates 10-60 gigabytes per day from its master database to a MySQL server farm. The MySQL databases are used to support a shopping application that can accommodate a million fare changes per day.
Might we see an end -- or at least pause -- in the constant "MySQL sucks"-oriented comments/blog entries/ etc?
My turnips listen for the soft cry of your love
I thought everyone was just in love with Java and XML?
Linux Friendly since, like awhile.
'prime time' enough for Sun.
MySQL is free, that's a pretty hefty plus for many applications. ... though it might not be the best choice for an enterprise wide solution just yet...
:)
Will it dethrone any of the biggies? Not for a long time and not without improvement.
We're not talking the timescale for Linux to take ground in the desktop war, since databases are already technical... there isn't that 'learning curve' from the user (well, there is, but the 'user' shouldn't be as terrified as a Windows user switching to Linux)...
MoM++ - A Classic Expanded - [Master of Magic 1.5]
http://mompp.sourceforge.net/
(for the lazy)
* capacity for very large databases
* stored procedures
* triggers
* named-updateable views
* server-side cursors
* type enhancements
* standards-compliant metadata (INFORMATION_SCHEMA)
* XA-style distributed transactions
* hot backups.
As a developer who went from Open Source (5 years) to .NET programming, the only thing I *really* missed was working with MySQL. Fast, light, stable, and easy to work with. With all the new version 5 features, plus the help of adapters like ByteFX , MySQL is now part of a valid enterprise solution to .NET developers (IMHO).
MySQL days are over. Let YourSQL be PostgreSQL. Huh! Sun will choose PostgreSQL
Without support for security roles, MySQL isn't ready for the prime time, at least not in the enterprise space.
One thing you must remember about, when considering MySQL. It's a relational database, all right, but it doesn't really support SQL.
It supports most of SQL syntax, so SQL gurus will find it easy to learn. Most of basic SQL stuff works. But more advanced constructs like nested queries are either unsupported or terribly unoptimal, and some SQL features are there just for compatiblity sake but shouldn't be used at all. Instead you should learn and use a bunch of MySQLisms that aren't found anywhere else and do the same thing, much better (faster, safer, bug-free). So if you have a database app and ponder what database to integrate it with, choosing MySQL means more than plain tweaks. It may mean deep hacks. MySQL is devilishly fast when it comes to simple queries. Few databases can beat it in this domain. But it comes with a cost, shortcuts taken prolonging/breaking many other tasks. So choosing MySQL is a dangerous choice - it's a lock-in.
45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
so it only lacks in the java and xml portions? thats great... its not like java and xml are two of the fav buzz words in business or antyhing...
...is for MySQL AB, the company behind the database. They have recently entered a partnership with SCO and have thereby stabbed the Free Software community in the back.
Obviously it doesn't speak to the technical merits of the software, but one thing we in the FOSS community have learned is that there is more to evaluating software than how well it performs a specific function.
I'm mostly just the digital plumber in my firm, but about a year and a half ago we were in a situation where it was time to migrate our production servers off of SQL Server 7 to "something else." The "something else" needed to be Linux friendly since we were phasing out M$ in our production environment in general. So we hired 2 former Oracle employees and expected them to tell us that Oracle was the answer. After about a month of nosing through our existing code, we were given a menu of options with their preference being postgresql. Mysql didn't make the cut because it lacked "important features" and wasn't "sql compliant", lacked "triggers", and something about "locking" which escapes me at the moment. I don't know a database from a hole in the ground, but that was our experience. We've been using Postgresql with RHEL 3 and RHEL 4 without incident. Very good for us...not so good for Mr. Ellison and Mr. Gates. Cheers,
So the perl tool come with MySQL 4.x, mysqlhotcopy isn't "hot copy"? What's so "hot" about the new "hot copy"?
"Don't let fools fool you. They are the clever ones."
Postgres is Free, MySQL is tied to a silly dual license (viral GPL and commercial), neither of which is as Free as the 3-clause BSD.
Video Phone Blogs send video messages straight to the web.
MySQL still sucks. Just a little less.
Postgres isn't available on 80% of web hosting firms and 90% of off-the shelf web scripts (that require a DBMS). (I wish it was)
Can you use transactions, and have referential integrity and fulltext indexing on the same table yet?
Does anyone know if MAXDB ever helped improve MYSQL in any way ?
Actually, I have wondered if MAXDB will ever have a place, with the way MYSQL has been evolving.
I used to love MySQL back in the hayday, but then they changed their license model, thus it was "good night sweet prince".
Most other decent databases use something similar to LGPL for use of their libraries, thus there is no need to disclose your source code in an application that uses the database. This is rather a critical feature identified by almost all database vendors. Even Microsoft SQL has an LGPL-like license that doesnt mean you have to share your code.
Once MySQL was reaching critical mass, they decided to change the rules and restrict the license. PHP and others revolted and dumped MySQL for SQLite as the default database for PHP 5. Some could argue it was due to library mixup hell, with multiple versions of libraries on the system, but we all know the main reason was behind the license.
MySQL got a bit scared and made this silly license exception to the top 20 FOSS projects (don't quote me on that, recalled from memory) so they could be LPGL.
In the process I moved all my code to PostgreSQL and havent looked back.
If you're just downloading and using the software, BSD and GPL are *identical* (because you can ignore them both). Talk about how un-relational MySQL is, or how it gets in the way of a DBMS' fundamental purpose (data integrity) with it's bizarre misfeatures, but don't spread FUD about the GPL. 'kay?
Regarding the compliance of MySQL to SQL standards and how that may affect an eventual migration to another database, all I can comment on is my own experience. In 20 years of software development, I've only been involved with, or seen, two database migrations from one product to another. Both were from SQL-Server to MySQL (on Linux). In my experience, I have found SQL-Server and Oracle to be more "locked in" and proprietary in their implementations than MySQL, and have found more applications and programming languages to support MySQL more than any other RDBMS save only MS-Access. Until 5.0, it's not been what I would consider "enterprise" because of it's lack of stored procedures and triggers, etc. but now that 5 is here, I think it can compete with the big boys.
FULL OUTER JOIN
MySQL, especially version 5.0, is popping up on the radar screens of database gurus who built their reputations and book sales using other SQL databases. Ken North, who did those ODBC performance benchmarks for Oracle, Sybase, and DB2, wrote a recent article about MySQL 5.0.
Jesus, dude, if you're going to submit your own stuff at least try to hide it a bit better. This is over the top obvious to anyone with half-a-brain or more, and who's tried to spam Slashdot.
What boggles my mind is that so many people continue to be the QA department for MySQL. Why not get busy and build your $40m Internet flip project on a database that simply works. Are you a database R&D company or a software products company? You've waited years for MySQL to get features that simply should have been put there in the first place, read ACID. Yes yes, mysql is fast. It can return partial result sets based on silent index corruption faster than any other database. Wonderful.
So the story here is "someone wrote an article about MySQL 5"?
Try creating or dropping an index on a large mysql table sometime (a common requirement). It will lock the table, copy all rows to a temporary table, recreate the original and copy them back.
Even with relatively I/O beefy machines this means hours of production outage for tables with just millions of rows. A nightmare for any critical application.
I've used MySQL for a year after Sybase, Oracle and SQL Server and would definitely agree that optimisation for anything but the most trivial queries generally sucks. Personally, I would never choose it for any serious, complex transactional application.
What in the hell is "postgre"? Do you mean "PostgreSQL"? No such thing as "postgre". It's pronounced "post gres cue ell". Or "Postgres" for short, if you really wanna leave off two letters.
I love mysql, but it is lacking many fulltext searching features found in oracle such as stemming and word proximity just to mention a couple. Oracle is far more advanced than MySQL when it comes to fulltext searching. In addtion the InnoDB engine does not have any fulltext searching capabilities at all.
This is my only gripe about MySQL. Otherwise I love it.
The article profiles mission critical database software and discusses how well MySQL 5.0 fits the profile.
I love MySQL - I've built my technical solutions around it for the past 5 years. However, until it's released for PRODUCTION use you can't call it "MISSION-CRITICAL".
See http://dev.mysql.com/doc/mysql/en/choosing-version .html
As somebody who maintains the database abstraction layer for a very complex enterprise application platform that runs in Oracle, SQL Server, and DB2 (the latter of which I was the primary porter), I don't think you're right at all on this point. It is possible to go really, really far by using nothing but SQL standard features, and factoring common features with different syntax into a pretty thin database abstraction layer.
First of all, you're mislabeling what you describe as "security" (which properly refers to controlling access to information); the term you have in mind is data integrity (which refers to protecting data from invalid inserts from authorized parties).
Second, constraints != stored procedures. You can add constraints to a schema without having to write a single stored procedure.
The trick to maintaining cross-database compatibility is to avoid requiring behaviors that are only implemented in one database (you may only use such behaviors optionally), and never ever hardcoding database-specific SQL syntax into any part of your application; instead of the latter, you delegate construction of database-specific SQL statements to a software component that knows how to translate your request to the database you're connected to.
I've read the article, am familiar with the product, and am also familiar with data warehousing. This is just propaganda.
> MySQL has a demonstrated capacity for managing very large databases. Mytrix,
> Inc. maintains an extensive collection of Internet statistics in a one
> terabyte (1 TB) data warehouse that contains 20 billion rows of data.
MySQL is a horrible product for warehousing: no query parallelism, no partitioning, primitive memory management, primitive optimizer, etc, etc. 20 Billion rows in a single table? What would mysql do with that? Any typical warehousing queries would take hours to come back. More likely either the database owners are just logging data someplace cheap, or they are creating hundreds of much smaller tables.
> It replicates 10-60 gigabytes per day from its master database to a MySQL server farm.
Ah, a 'server farm'. So, the 20 billion rows are probably spread across dozens of mysql servers. This explains it all. Even SQL Server can do better than that.
> The MySQL databases are used to support a shopping application that can accommodate a million fare changes per day.
Yeah, I think db2's most recent benchmark was for something like 3 million transactions a minute.
This is little more than an advertisement for mysql. A little poking around would probably show that he's on the mysql payroll.
MySQL is good for a very limited subset of projects, namely stupid web applications. MyISAM tables don't even support referential integrity! MySQL is also good for getting the hang of SQL queries, but anybody who has used databases for more than a year should "graduate" on to something a little more mature... enter PostgreSQL.
While PostgreSQL doesn't offer the insane (but inherently flawed) performance of MySQL, it is a standards compliant, free as in speech, database system. The windows version is rediculously simple to set up, and it opens the doors to things that MySQL is only promising at this point.
Friends don't let friends use MySQL!
Oh, a lesson in history from Mr. I'm my own grandpa.
As usual, little of MySQL, as well as most other DBMSs, properly supports the relational model, according to Chris Date and others.
It's nice to see MySQL getting stuff other DBMSs have had for years, like triggers and stored procedures, but for uses other than a replacement for file managers like Access and for DB-backed Web sites, go with PostgreSQL or Firebird or others with a little more power. Messing with database designs for mission-critical needs can land you in hot water fast with a product that doesn't support even the basics adequately.
Richard Steven Hack - This sig is TOO GODDAMN SHORT TO DO ANYTHING USEFUL WITH! MORONS!
Postgres isn't available on 80% of web hosting firms and 90% of off-the shelf web scripts (that require a DBMS). (I wish it was)
I haven't seen a lot of web sites that are on a shared server with shared scripts that needed much more than MySQL already offers. MySQL does fine for blogs, shopping carts, etc. That's all *very* basic stuff, most of which MS Access could handle if done correctly.
Actually, "Postgres" is was a precursor to "PostgreSQL". The database started as a university research project called Ingress. A follow-on version was called Postgres (i.e., Post-Ingress). SQL support was added later; thus PostgreSQL (Postgres + SQL).
cpeterso
Having said that, anyone who says that MySQL are ready for 'prime time' are clearly deluded. You can have a database server with unbelievable speed, features, security and stability, and it doesn't mean a damned thing if you don't have client libraries ready.
MySQL's client libraries are appauling. MyODBC, their ODBC connector, has been one big fuckup after another for the past 2 years. It's a minefield of:
Rock up to a MySQL mailing list, and the most common questions is about client libraries and the 'new' authentication system. The problem is that this authentication system is no longer new - it's old. It's many years old. Why haven't the client libraries been updated? The error message suggests that users "upgrade their client libraries", but upgrade to WHAT? Perhaps the error should read:
I for one would prefer to see some actual client-side support for 4.1.x before people start declaring 5.0.x 'ready for prime time'. You can't use 5.0.x features with 4.0.x libraries.
Has anyone checked out the GUI admin tools? These are also a long chain of distasters. MySQL seem to spend 18 months getting a GUI looking promising, if a little buggy, and then abandon the project. What happened to mysqlcc? What's happening with Administrator / Query Browser? Critical bugs reported months ago have gone completely untouched. For example, you can't edit tables with a primary key, because Administrator doesn't recognise the primary key, and strips it out of the table when you click 'apply'. Cool! Sounds ready for prime time to me! When will MySQL add support for primary keys to their products?
Yes, I'm stirring here. But none of the above is in the slightest untrue. MySQL have lost their focus. With so much attention being paid to a 5.0.x release, everything else is suffering badly.
I'm agnostic with a preference for Postgres over MySQL but your comment on how vocal the MySQL community is in comparison to the Postgres community is wrong.
Hit the back button a little and take a look for yourself. Any mention of MySQL brings out the Postgres community to talk about MySQL's known short-comings with a passion. It's not as bad as the Linux commentary on the Microsoft articles but it blows the Linux commentary on the BSD articles out of the water!
One thing that annoys me about MySQL is the way OS programmers drop it into nearly every project that needs to store something in a structured, but not complicated or relational way. I don't like the new licensing or the SCO deal either.
As an early adopter of Postgresql (I even made a port to Windows back in '97 sometime) Postgresql seems to be the way to go if you want free. It supports a lot of stuff you would expect to be there in a professional RDBMS. We were able to port our app from Oracle to Postgresql and a lot of the stuff mapped over. My boss was happy no longer paying Oracle licenses anyway.
If you are doing Java and want some simple SQL/RDBMS support try HSQLDB.
26 million rows = broken MySQL system.
It just doesn't cope. It's fine if you've got no data to speak of; it's great when the sizes of what it's working with is small.
IT TAKES 24 HOURS OF UNWRITABILITY TO MAKE A DAMN BACKUP, FOLKS.
MySQL was the biggest mistake I ever made. I had the option of choosing Postgres on an older version of the software, or MySQL on the latest, and I've been regretting it ever since.
The fact is this: I've used it for stuff when the amounts of data are small, and it's brilliant - but if you need to keep a lot of information, you're screwed - run, don't walk, to the nearest vendor and get something decent, because MySQL just can't cut it. It's missing too much in too many places.
Now, I haven't used 5. I'll have to, because 4 sucks, and 5 can't be worse - I can only hope that 5 gets rid of the worst of my problems; it will probably stay slow and unresponsive, and continue to take an hour to generate a report, but I can at least pray that perhaps, if I'm lucky, I can get a backup out of it without taking down the system.
No matter how good you think it is; no matter how fast you think it might be... don't pretend it scales up to the kinds of loads the commercial vendors can handle. There's a reason the big boys cost big money, and despite popular opinion, it's not all just leeching money out of your pocket. MySQL doesn't do big well.
-- A mind is a terrible thing.
I remember the days of Slackware and Linux version 1.x kernels, everyone said it was a joke and I thought it was a great learning tool. Then came version 2.0,2.2 kernels and everyone said it was a toy and not a real Unix. I felt it needed multitasking and a better filesystem. But in 2000, it was almost ready for primetime. Now its everywhere.
I remember the blah blah blah arguments regarding SGI workstation graphic superiority, and Solaris server reliability.
Now Mysql is still not primetime, but guess what, someone in college can learn it for free and use it for free.
And I always felt that Linux wasn't that big a cost savings over commercial Unix. But Oracle costs big $$$ compared to Mysql. I would definitly use mysql and php for an application one stop below Enterprise level software development. And the tide is rising.
WhatMeWorry
Why is PostgreSQL not as well-known/popular as mySQL? Whenever you hear of an OSS database, it's almost always mySQL, mySQL, mySQL. Especially on Slashdot. Hoenstly, I don't get it, it's not very good now, it's been even worse in the past; why is it so popular if it's that much worse than PostgreSQL? DB lock-in, momentum? Seriously???
== Jez ==
Do you miss Firefox? Try Pale Moon.
400MB, 1 million records does not make a data warehouse project. 400MB can run 100% in a servers memory and hence doesn't need any complex logic to run fast. Sequential scans on an Opteron could easily rip through 400MB in microseconds -- any DB server could process that even without indexes.
When people say data warehouse, they usually mean 100GB minimum, often in the terabytes, and billions of rows. When dealing with data in this scale, the query optimizer becomes paramount because there's no way you're fitting the entire DB in memory.
mysql basically tries to insist (with a few special exceptions for things like php that are so big they don't dare fuck them over) that if you build your app to use mysql you either havfe to GPL it or pay them.
they do this by making the client access libraries GPL. whether linking against a GPL lib dynamically brings your app under the gpl is not very clear but there are enough people saying that it does that most would rather not take the risk.
theres also the issue of what distribution is, is distributing within a company enough to count?
note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
MySQL is owned by a company, MySQL AB. PostgreSQL is an all-volunteer organization, sort of like Debian is to Linux. Sure, there are a few companies that work with PostgreSQL, such as Command Prompt, but they don't control the direction of PostgreSQL. MySQL AB controls all aspects of the MySQL database. Plus, being a company, they have the money to promote it.
This is one of the reasons why it is so much more popular than PostgreSQL. Another reason is that around the time of PHP taking off, 1998 or 1999, MySQL was emerging, while PostgreSQL was still in version 6.x. PostgreSQL was going through a complete code cleanup and rewrite so it was optimized at all. Therefore it performed much slower than MySQL. It has since closed that gap, while being a more robust database. PostgreSQL and MySQL actually took different development routes. PostgreSQL wanted to add the features to make it a world class database and optimize it and add speed later, while MySQL went for speed first and is now trying to add the features.
MySQL has always reminded me of how Microsoft works. Make it just good enough for the masses and then try to add enough to it to please the experts in the field.
At first I thought that scox was just spinning, as scox so often does. I figured scox was calling basic mysql being supported on scox's OS a business relationship.
Then I see the announcement of the business partnership proudly displayed on mysql ab's website.
Disgraceful.
Let me also add that MySQL had support for Windows long before PostgreSQL. This is another reason for its success over PostgreSQL.
Always the same, MySQL sucks because it lacks the feature, or doesn't do well with a brazillion records. Unless you work for NASA or some such, why the hell do you have a table that big? STOP LOGGING APACHE WITH MYSQL. Oh wait, I've done that with no trouble using MySQL.
I'm a good programmer. I unit test, I regression test. I alpha, I beta, I gamma. I dig hip MVCrack and n-teir joints. I believe in a world where my data layer hold only data, and logic live in it's own house.
So why does everyone tell me I should put logic in my data layer? Even the idea of transactions... letting my data layer tell me it's all okay, makes me shiver. How does it know it's all okay? Because I sent it a float, string and zipcode? I get the same feeling in my tummy when I see perl code using a regex to verify user input.
Am I the only one who sees a select joining a table 3 times over, a sub-select, a stored procedure and a group by all in one statment and thinks, we should look at the schema and code and see where we can fix this?
Don't get me wrong, I think Oracle is pretty neat. I just think we have these academics arguing their vision of a database to actual developers, and we live on different planets. (academics are like life on mars, we think they are living things, but have no proof yet).
I haven't tried sqlite myself. But I think it looks promising.
When the use of a PreparedStatement in a loop is noticeably slower than a Statement, you know something is wrong.
You might want to read up on the GPL which only affects you if you distribute the code in question. You can take a GPL app and screw with it until the cows come home within your own company. Distribution referrs to the level where the development happens. If I do it as an individual developer, I cannot give it to other individuals without the GPL. As a company, I cannot give it to those outside the company. If you're a company that simply wants to _use_ GPL applications, you are pretty much unrestricted in what you can do with them. I think if more companies realized this, they'd be more friendly to the licence.
The traditional GPL response is no, but this is not in line with copyright law. Quick, buy software on a corporate credit card and give copies to everyone in your agency.
The "internal distribution" distinction is in the GPL commentary, but not in the GPL itself. The FSF would be estopped by it from going after people who distribute internally, but as far as I know nobody else who distributes under the GPL would be, as long as they didn't make a similiar statement.
Every time a MySQL post appears on /., the DB purists gleefully dump cold water (or boiling oil) all over the uninformed masses who continue to use MySQL despite the sage advice of the technical elite. I am the sole IS guy for a small wholesale business (25 heads, $10M sales). I have used homegrown LAMP apps for the bulk of our business processes since arriving at the company 5 years ago. MySQL has been the backend since day one, and has performed flawlessly.
"But you only have a few GB of data" the purists decry. To them I reply, "That insignificant amount of data fuels $10 million a year for the economy and makes a paycheck for 25 families, all for the low cost of nothing".
Your customer doesn't care what DB you use. The only thing they care about is the cost/delivery/quality of your company's end product. Yes, MySQL is the bicycle of DBs, but if all you need is a bicycle, why force your company to buy a car. If your requirements grow... get a fleet of bicycles.
The moral of the story is that the bottom line IS the bottom line.
Yeah to Sum up : small websites (small data), great - mySQL is easy and quick (Linux Apache MysQL and PhP works a treat) Anything mission critical .. nah. prefer the nice warm MS management tools, finer grained locking, easy backup / restore, parrallelism... yada yada.. worth spending the money on ..really it is.
less headaches with a proper RDBMS i tell yas
Do you know about relations between GNOME and Sun? I think this could be something like that one. If Sun choose PostgreSQL, it will help it to grow and become better, because they don't want to be far from ``mainstream''.
>> is never going to be cheaper than
Sabre according to the MySQL site: "estimated a 40% TCO savings when budgeting for the $100 million project. In many cases, the ongoing TCO savings are expected to be up to 80% - twice what was estimated".
Any corporate IT manager who isn't interested in the prospect of saving $40 million in costs and improving results through open source seems quite likely to find their company out-competed by those who do.
My own background is for a little place which is now serving about one in every thousand web pages viewed in Alexa's sample; and with some database servers down still showed billion query per day capability on a handful of MySQL database servers. About 3,500 pages per second (bad Slashdotting is about 600 pages per second). A few hundred gigabytes of compressed data, in the terrabyte range without.
The worlds in the process of changing and those who want to keep up need to be moving fast.
Unless the vulcans can see some logic in this, I'm not sure that the Enterprise will be MySql'ing for a while. That said, I've often advocated and used MySQL in large organisations. It's something which you can get away with for anicilary applications - and to be honest, I've used MySQL through Java, without any issues. Further, shouldn't the XML layer be higher up the hierarchy, being interfaced with the DB further down your code tree? Perhaps I'm still flying around with Captain Archer and don't really get why MySQL is poor on Java and XML integration?