Slashdot videos: Now with more Slashdot!

View

Discuss

Share

We've improved Slashdot's video section; now you can view our video interviews, product close-ups and site visits with all the usual Slashdot options to comment, share, etc. No more walled garden! It's a work in progress -- we hope you'll check it out (Learn more about the recent updates).

Gary Pendergast writes "Monty Widenius, the 'father' of MySQL, has created the the Open Database Alliance, with the aim of becoming the industry hub for the MySQL open source database. He wants to unify all MySQL-related development and services, providing a potential solution to the fragmentation and uncertainty facing the communities, businesses and technical experts involved with MySQL, following the news of the Oracle acquisition of Sun." Related to this, an anonymous reader writes that "MySQL has announced a project to refactor MySQL to be a more Drizzle-like database." Update: 05/14 20:50 GMT by T: Original headline implied that this was a project of Sun, but (thanks to the open source nature of MySQL) it's actually Monty Widenius — no longer with Sun — leading this effort.

In the process, you may have to learn a bit about how databases are actually supposed to work, but that's probably good for you.

That actually sounds like it plays into one of the MySQL talking points a little bit, so I want to assure all the MySQL+PHP developers out there that you won't have to - you might anyway, but you won't have to.

Perhaps it's time that this approach should be realized, instead of just joked about. This would allow people to to use the mysql api for their applications that require it, while providing a path to start using postgresql in the future.

You also get more flexibility; want to replicate your "current" tables but keep your "history" tables only on the master? Want to chain slaves to slaves instead of all slaves to one master? Want a special search database (you can have transactions and fulltext search at the same time) that only contains the ts_vector (fulltext search index) tables? Slony lets you do all of those.

Postgres is very much lacking a simple replication solution. If you're in the cloud, it's far more likely you're going to have many many smaller database spread across many machines. You need to be able to bring up groups of 3 (minimum) machines that cluster an entire database quickly and easily. You don't need all the flexibility of Slony, and you certainly don't need it's administration headaches.

I believe the PostgreSQL devs themselves have said as much (officially, on their site). They've also said that the reason for this situation is that the project had previously taken the stance that it should not include its own replication, but should instead allow third-parties to implement replication as they see fit.

However, they've now said that, since this hasn't worked so well in practice, the next version of PostgreSQL WILL include direct,

However, they've now said that, since this hasn't worked so well in practice, the next version of PostgreSQL WILL include direct, built-in support for basic replication, as well as making sure that heavyweight, third-party replication solutions are still supported.

Well, wake me when it's there. MySQL still gets bashed for its historical lack of transactions, so if Postgres wants credit for something, it can at least implement it. Last I checked, it was supposed to be in 8.4, then it wasn't, then it was supposed to be in 8.5, and if memory serves, it's slipping again.

We ported our DB to Postgres and never regretted it. MySQL is good for read only apps (such as web applications) but it isn't well suited to transaction oriented apps. Postgresql is faster and more reliable.

It's got transactions, and has had for quite some time, depending which backend you use. Integrity validations can mean a lot of different things, but it's got quite a few of them, especially since 5.x. It also supports several different backends, not just the old table formats it did ten years ago.

None of these things are part of the definitions of an RDBMS anyway (except perhaps the table thing, but even that is splitting hairs) - they're just standard features most RDBMS

It is a database development company which has no solution to fill MySQL'es place if I haven't mistaken.

Oracle has a number of lighter DB products, including Oracle Express Edition (XE) which is free (as in beer). They don't have anything (that I know of) that does the same kind of multi-backend thing that MySQL does, but certainly they have a number of products whose market niches at least overlap with that of MySQL.

(Also, Oracle is a lot more than a database development company and has certainly been more aggressively pushing into other areas; I suspect that their acquisition of Sun was more focussed on the non-MySQL parts of Sun than on MySQL.)

They don't have anything (that I know of) that does the same kind of multi-backend thing that MySQL doesRegular Oracle tables and index-organized tables have completely different physical implementations, and bitmap indexes have a completely different physical implementation from regular indexes. They're all ACID, though.

Just figured I'd bring up here that since they've stated they plan to keep SPARC R&D going, maybe one of their big goals is to retain processor independence, while also leveraging an architecture that better coincides with their probable workloads (Sun's biggest feature has always been IO throughput and reliability and with their highly multithreaded chips they would seem to mesh well for the large scale databases that they'll be pushing.)

OK but none of the products gets hit because MySQL exists right? So, is there any reason other than insanity to undermine/conspire/kill MySQL? They act like there is fire in house and Oracle is the mad guy who started it. Did any of these people attempted to contact Oracle a single time relating to the future and independence of MySQL development?

Guess what will small companies choose if there is image of a chaos/forking rather than a known brand like Oracle when they hear MySQL name? Do you know the evil m

Since they have overlapping niches, probably some of Oracle's products, particularly at the low end, take a hit from MySQL. Since even their free low-end products are designed to be compatible with and provide an upgrade path to their pricier DB offerings while its probably as easy to go from MySQL to PostgreSQL-based EnterpriseDB, DB2, or MS SQL as from MySQL to Oracle, their certainly might be reasons why they'd rather, over the long term, e

As a former Amiga user and one of OS/2 Victims, I really know that complex very well. It could be the reason why I think twice before bad mouthing any other company rather than the product/code in question itself.

Its never what you think of the state of today, its what you think it'll be like tomorrow. As a result, no-one cares that Oracle bought MySQL, they care what Oracle will do with it - and a lack of vocal support usually means no interest in it.

As a result, the fork is a very pragmatic solution, get it forked today, get some impetus and media interest in it, and either Oracle will come out and confirm its continued support; or you'll know where to go to get MySQLv2.

For apps that need basic SQL functionality and aren't particularly-high load, I use SQLite. For app that need advanced SQL or high load, I use Postgres. I can't imagine a scenario when I would chose to use MySQL (or MS SQL, for that matter).

Many of us MySQL users see your Postgres question the same way: why use Postgres? There's 10 users of Postgres, and if I randomly toss both names into a room, I don't have to explain what MySQL is. Hell, half think I said "postfix" and leave the room.

What's MS SQL? OK, I'm kidding, but it makes me wonder if you've checked MySQL lately. I haven't had a reason to check Postgres, so I maybe just-as-satisfied with MySQL as you are with Postgres.

I didn't ask if it worked. I asked in what scenario it would be a superior option (to the well-informed application architect, of course). The only real reason you gave is that you don't know much about Postgres. That means you're not really qualified to answer the question.

Does it scale better? Does it have better security? Is it easier to manage in some way? Is there a killer feature its two closest competitors lack? Those might be actual answers to the question. "I don't know much about it" is not an answer.

It's certainly commonly perceived that Postgres will scale better, and that it has a rather complete featureset. If this is indeed the case, I can't see a reason to select MySQL for a new project. Why limit yourself?

People like you are undermining the industry. You straddle around claiming to be a database developer with x years under the belt, but you are in fact putting your clients data in grave danger and when shit finally hits the fan on your mysql installation you are going to wish you listened to the people who knew better.

For a price there is always someone who knows better. Evidently you know better, but who are you? Where are you? How much do you charge? Where were you to inform us that our choices were wrong before we made them?

The vast majority of us are not sitting back in our leather recliner supplied by our fortune 500 overlord reflecting on how to shave a few CPU cycles off a query, we don't have a team of DBA's we can turn to during the planning and implementation stages. At best we have a handful of guys and girls

Our app is one that has a pre-populated read-only database (that is, we never do updates, only selects). The database has only a single client and has to deal with bursts of activity that peak at 10's of queries per second. The load we put on the database is orders of magnitude away from what MySQL can handle. This what I meant when I said it works well enough. In fact, SQLite would probably even be a better choice.

Maybe I misread your post -- you were asking why we don't change from MySQL to Postgres, since MySQL is the default server in most cases.

You were also converting a question about MySQL into an argument of "Postgres vs MySQL"; I was trying to explain why we don't change to Postgres. See, change-to-Postgres is an important part: there's no obvious benefit that outweighs the cost of changing. The cost of changing is also the cost of changing all of our dependencies to use Postgres.

Fewer than offer MySQL, but enough that if PostgreSQL is the right DB choice for technical reasons, this just means you don't choose one of the hosting providers that don't support PostgreSQL, not that you choose MySQL.

(Assuming, of course, that you are building a web app where a discount shared hosting service is the right choice to start with; of course, not all apps for which a DB is needed are web apps, and not all web apps are those fo

I'm going to state something controversial, but for many applications security doesn't belong in the database, just like business logic. I would say this applies to most new web based applications developed today with ORM tools like Hibernate, but as always, there are exceptions.

MySQL's killer functionality is the ability to plug in different database engines. So, for example, MySQL can be both a transactional database with InnoDB and a column based database with Infobright.

I was actually involved in the decision at my business to switch from Postgresql to MySQL, and documentation ended up being the deciding factor. Now I've been using Postgresql personally and professionally for years, and I love the database, but two days with the documentation for the various clustering / replication sub-projects was enough to make my brain hemmorage. It's like they took legitimate documentation in some language, randomly truncated one sentence every other paragraph, and then ran the whole

> I asked in what scenario it would be a superior option (to the well-informed application architect, of course).

Of course because MySQL's root password comes empty so the Agile developers avoid losing their costly time waiting for the local database nerd configuring the permissions and bothering the team with more passwords to remember....

I'm with you on that - in the last 7 years, I've used PostgreSQL exclusively for projects that were under my control. I'm subscribed on the mailing lists, I know about all the misconceptions regarding performance, and I know that MySQL is nowhere near as reliable and professional as PG.

But since you asked: I'm still running MySQL on most of the servers, and the reason for that (the only reason) is third party support. When you're installing a web-based CMS, or bulletin board, or bug tracker, or gallery, or

Is sounds like you are saying that because it gets a lot of press causing a lot of people to know the name, then it must be the best database server out there. And it is more compatible and works better because of that? WTF? What the hell do you mean by compatible by the way?

More people know or knew how to program in Visual Basic than in Java or C or C++. Does that mean it is a better programming language and more compatible? You are going to tell me that what I just wrote doesn't make sense. And you would

Many of us MySQL users see your Postgres question the same way: why use Postgres?

Because MyISAM, which is what most MySQL users use, is not fucking ACID compliant.

Take a look [mysqlperformanceblog.com] at the potential problems. Take a look at recommended use cases: "Tables which contain read-only data, throw-away data, data which can be quickly re-generated." Are you bloody kidding me!?

I can't believe my eyes when I read questions (or posts) such as the above. Because it betrays your huge ignorance. Every man and his dog has heard of MySQL and is probably using it, true. But it's also true that most of them have no bloody idea of what ACID is or why it's desirable, or that MySQL with its MyISAM tables goes completely happy-go-lucky on the whole concept. These are the same people who probably don't bother using foreign keys, or have never even heard of transactions, or can't think why they'd need them.

Sure, MySQL offers InnoDB, which is supposed to rectify those issues. But how does it go about it, may I ask? Why, take a looksy [mysql.com]. It's an entire bloody SECTION of the manual, which goes to great lengths to explain all kinds of issues and exceptions to the rules and whatnot. Summary: "It locks rows like this, except if it's a full moon then you have to blink your left eye every five seconds, and if you're doing a particular SELECT you need to stand on one leg, except on Fridays when it's the right leg."

Now compare with the Postgres manual page describing their ACID implementation [postgresql.org]. It's a couple of pages, keeping things clear and simple, so that anybody can understand them.

Not to forget that if you want InnoDB you give up full text search capabilities. And you ask why we should use Postgres? Really?

MySQL has lowered the bar for complexity of use. But in doing so it has facilitated DB access to a whole bunch of people who don't have any idea what they're doing, or don't really care about data integrity. It's fast and it works most of the time so it's alright, yes? Yes, granted, nobody will care much if your personal blog goes tits up because of MySQL. But I expect people will care if a database in which data actually counts for something has problems. And in such cases I expect people will want a real database.

plus all the postgres zealots that come over to any mysql related article and praise pgsql make me vomit on a printed pgsql logo. ok, not really, but could you (the aforementioned zealots) please try to understand that your offense in mysql articles just makes people reluctant to even try pgsql.if you feel such a huge need to pitch two opensource databases, go to pgsql threads and claim how bad mysql is there - then at least you don't pollute mysql related discussions with something i would classify offtopi

This is one major reason why I refuse to use PostgreSQL: VACUUME [postgresql.org] for the fail.

Why the hell do we have to hand hold PostgreSQL to get it to clean up after its self? MySQL has no problem doing it on its own nor does any other databases that I know of require such an operation. Its also quite lame to run a dedicated daemon to monitor and tell PostgreSQL to clean up its mess. Another thing which was a past problem was the user permissions were just terribly implemented making it a complete joke to use for mu

"Fortunately, The Auto-Vacuum Daemon monitors table activity and performs VACUUMs when necessary. This eliminates the need for administrators to worry about disk space recovery in all but the most unusual cases."

You'll be glad to hear about the autovacuum [postgresql.org] built into PostgreSQL versions 8.1+. (Ok, so it's not on by default yet. One configuration switch.)

I could give you the good reasons for having VACUUM run separately, (Actually, it's often easier to know from outside when your database is going to be busy...), but in general I agree having to run VACUUM was a pain. I'm glad it's no longer needed.

Actually, VACUUM has been automatic for a few years now. The dedicated daemon has gone away too and been merged into the server process.

And sometimes it may make sense to manually scheduling VACUUM. For instance if you never delete from a table there's no need to bother trying to vacuum it. If you have a very high load, it may make sense to defer it until a low load time. It also makes sense to manually run it after making big changes to the database (like restoring a backup for instance).

For instance if you never delete from a table there's no need to bother trying to vacuum it.

Not quite. Because of the way postgres operates (MVCC) UPDATEs will result in space appearing in table structures too. With an MVCC based DB nothing is updated in-place (actually, in any good DB nothing is updated in-place, but with MVCC this is more obviously implied by any good description of how things work with multiple distinct transactions present). When a row is updated new version is added and the old version is removed when the transaction is complete and no other transactions might refer to the old copy. This has significant advantages for some use cases and loads, and some disadvantages in other

I imagine the intent is for database administrators to issue that command during scheduled maintenance windows. I agree that an "auto vacuum" feature would be preferable for many people. Is "auto vacuum" the major advantage of MySQL over Postgres, then?

I imagine the intent is for database administrators to issue that command during scheduled maintenance windows. I agree that an "auto vacuum" feature would be preferable for many people. Is "auto vacuum" the major advantage of MySQL over Postgres, then?

Before auto-vacuum, I'd say it was a big advantage. Anything that can cause you to lose all of your data is a big deal, and it used to be that if you didn't vacuum your postgres tables, you'd lose all of your data eventually. MySQL has no such vacuum requirement.

Nowadays, with auto-vacuum, I'd say that's no longer an advantage. And all of the distros that I've worked with have auto-vacuum enabled by default.

I can't imagine a scenario when I would chose to use MySQL (or MS SQL, for that matter).

I work for a Fortune 500 company. We use MySQL with J2EE and Hibernate in a production environment. Postgres would be our fall-back option if MySQL ever stopped doing the trick for us, but it scales well to thousands of users.

MySQL can easily be configured for use as a production-quality database. We also use Oracle and DB2 on an i5 for certain purposes, but our biggest app (in terms of company scope and $$) employs MySQL in the back-end.

OK, so MySQL is more easily configured than Postgres? I must say the DBs I've set up have done fine with default configurations, both Postgres and MySQL. But I'll take your word for it that configuration is easier for your apps, which I assume are higher load than the defaults of either will handle gracefully. That sounds like a legit reason.

WHY use MySQL? Gee, because it's well documented, it plays nicely with Perl and PHP, it's available on nearly every corporate hosting package, there's good documentation and websites, etc etc etc. You can't say the same for Postgres.

IME, you can pretty much say all of that for Postgres, Postgres "official" documentation and third-party "how-to" information, on the web, in dead trees, and otherwise, is as good, or better, than MySQL documentation (though the total volume is somewhat lower, the coverage and q

MySQL is not well documented. It's got horrible documentation. Granted, it's got lots of it (and everything is there somewhere), but it's all horrible: Specifics of syntax and usage are often spread through half-dozen pages for a single command, with no linkage between them in the HTML.

As for 'playing nicely'... You've obviously never tried to get the Perl DBI working with MySQL on RedHat. As far as I can tell, the process is 'Recompile it. All of it. Again.' I spent two weeks trying to get it to wor

MySQL is well documented so that all the bugs are turned into features:

Mein Broder: So, in MySQL, when you exceed the maximum size of a TEXT column, does it throw an exception, or does it just truncate the data to fit?

Me: Well, it being MySQL, it will probably do something differently on Tuesdays than it does on the vernal equinox... but it probably will throw an exception and bitch about how you suck at data planning. Which is the proper thing to do, because who would want their database silently truncating data?

Mein Broder: In this case, I'd actually prefer it, 'cause otherwise I'd have to programmatically truncate it myself. These data aren't really that important, and truncating would be acceptable. It would be nice if I could be a lazy programmer.

Me: I think you're out of luck. But let's take a look:

MySQL Manual -- If you assign a value to a BLOB or TEXT column that exceeds the column type's maximum length, the value is truncated to fit.

Me: Astounding. Your desire to be a lazy, shiftless programmer has been facilitated by other lazy, shiftless programmers who have built the world's most rickety database management system.

Heh. Yes, that was hard: The machine in question doesn't have access to CPAN.

And even then, the above just tries to download and compile the DBD. Which fails on many RedHat installs: You need to swizzle the build flags. Which gives it a chance of working, unless your build flags for Perl were wrong. Or the ones for MySQL. Or both.

Though he contributed a lot to MySQL, he is the one who benefited most from MySQL when it was sold to Sun. So, we as a community contributed to MySQL, he took all the contributions, packaged it nicely and sold to Sun for 1 billion USD. Now that his contract with Sun is over, he is there again asking community to contribute more but not for the original MySQL because he does't own it. He wants all of you to contribute for a clone that he is going to own so that he can make more money in future.

No one can, you got several companies having their greased fingers involved, you got several different licensing systems for the same code base and the original developers all split into new forked projects.

It was during MySQL AB's time that MySQL began a stange play with the community by first dropping official community binary builds, and then severely delaying source code releases as well (while supplying commercial clients with more stable and up to date releases).

It was again during MySQL AB's time when the announcement came that MySQL's source code base will start to "close down", by releasing many new features only commercially, and with no open source code. When Sun bought MySQL AB, they reversed those policies and stood behind MySQL being open, without exceptions.

Now Mr. Monty Widenius has taken the money Sun paid for MySQL AB, and used it to open a new company and an "Open" alliance which is "designed to become the industry hub for the MySQL open source database, including MySQL and derivative code, binaries, training, support, and other".

If even Mr. Widenius has noble intentions regarding MySQL, his past in MySQL AB and his current interaction with Sun/Oracle seem to leave another impression.

> So in OSS when you buy a product you don't really get too much do you?

I think they got a lot from it: Monty is completely hamstrung because he doesn't own a line of the code in his new "Open" database. Unless he rewrites from scratch he is stuck with GPL even if he wants to give his code to his own wife. And that also means that no serious commercial company can use it because even the drivers are GPL (*not* LGPL) which means as soon as you touch it even to open a connection your own product turns to GPL (unless you buy a license from Oracle).

IMHO, the first thing that needs to happen (and which should have happened years ago) is that the MySQL GPL drivers need to be clean-room rewritten so at least you can link non-GPL code with it. Until then I've got no interest in it and it loses to PostgreSQL before I even get to thinking about a technical comparison (and please note: I've got nothing against GPL in general, I just don't want it forced inside my own processes by my database).

If it's a fact can you point to some evidence of what Sun and Oracle (which doesn't yet own and control Sun/MySQL) have done that can be classified as a poor job that wasn't happening before Sun bought it?

When Sun bought it, the old MySQL AB execs were talking about keeping some new stuff closed but Sun made them open source it.

Some of the latest releases probably came out too early (according to Monty) but that's not any different than when MySQL AB was it's own entity.