Hacker News new | past | comments | ask | show | jobs | submit login
State of the Postgres project (endpoint.com)
70 points by blasdel on Jan 4, 2010 | hide | past | web | favorite | 25 comments

As a long time user of both PostgreSQL and MySQL, I can't begin to compliment PostgreSQL enough. It runs just about everything in our company, from ticketing systems to an ERP system with over 1000 users...and it does so without flinching or making a fuss.

It's stored procedure support is very nice, and allows you to write procedures in the built in PGPSQL. However, if that syntax doesn't sit well with you, you can also write them in Tcl, or Perl, or PHP, or Ruby, or Java, or...you get the idea. Our ERP's stored procedures are all written in Java, for the record.

The stability has been incredible...the community support, wonderful.

And it's really, really free, to boot.

I haven't really faced a lot of the problems others have with MySQL, but that's probably because for the applications that have mattered, I've always gone back to PostgreSQL. And the whole commercial/non-commercial licensing FUD MySQL AB historically spread about when you actually had to buy a license just left a bad taste in my mouth. I'm ok with buying licenses and am happy to, but don't enjoy or appreciate that need being fabricated by sales staff.

I think the PostgreSQL project might become even more robust with the coming mass defection away from MySQL. Except for easy replication and the ability to explain it to a know-nothing manager, MySQL has nothing on Postgres these days.

Replication is coming in 8.5 :)

(and I think it's already in the Alpha)

The Hot Standby feature is in the recently-released PostgreSQL 8.5alpha3, and what it means is that you can have a read/write master and several read-only slaves; if the master goes down, you can start switch one of the slaves to be the new master without a restart.

For more information, see the development-version documentation:


Can you explain your comment about "mass defection away from MySQL"? Do you think that's something that's about to practically happen? Thanks.

We started making plans to migrate away to PostgreSQL when Oracle embarked on a clear strategy to buy/control MySQL by purchasing InnoDB, and then Sleepycat.

There were already plenty of technical justifications to abandon MySQL, but the potential of dealing with Oracle sealed the business case. From past experience, Oracle was not a company whose licensing, development, or business strategy we wanted to be beholden to.

With Oracle now (nearly) owning MySQL proper, the move seems correct. There's the potential that they'll improve on MySQL, but any significant improvements will eat at Oracle sales unless they're also countered with licensing changes or other revenue-boosting strategies -- such as splitting into enterprise/open source open/closed versions.

Better to use PostgreSQL where we don't need to pay client library licensing fees, and aren't locked to a vendor.

You don't need to license the client library anymore now that the BSD licensed libdrizzle exists. It's a clean room implementation of the client library written by Eric Day at Sun and is compatible with MySQL server versions >= 4.1.

You also had the option of using the very old public domain licensed version of the client library, provided you could find it. I believe that RedHat shipped it at one point.

BTW, Drizzle appears to be a very good database server. I am currently evaluating it under various workloads and it seems happy.

It hasn't shown any advantage over MySQL in the tests done so far beyond not belonging to Oracle.

And for new projects, I do prefer PostgreSQL.

I meant the comment mostly to be funny, but "much truth is said in jest". Yes, I think it will happen -- especially if a few of the important devs in the MySQL world get frustrated with the whole Cluster F---, make a change, and start to write about it. Quality wins, but only in the long run; it took forever for C to become the standard it rightly is, but it happened. The entire universe is finally waking up to what crap Java is, why not finally realize that MySQL has fewer features, less reliability, AND is more constrained Postgres?


ducks head

MySQL has nothing on Postgres these days.

Except for some engines you can choose from.

As far as I understand mySQL

- You have to choose engines

- Some features (e.g. ACID Transactions) don't work in some engines.

I'm not sure exactly why this is a feature. In PostgreSQL (and in most sane DB software)

- You don't have to choose engines

- All features work all the time. There's no posiblity of foolery like, say, beginning a transaction and then updating two tables, then finding that one of the tables will ignore the transaction but the other won't.

All features work all the time

That's the key. Even features which you may not need in particular scenario will add their overhead.

You might not need transactions now, but what if you need then later? If the speed difference between postgress and MySQL performance (what is that, 10%? a boundary case ) is going to kill your app, then get a 10% faster server.

In MySQL case: switch from MyISAM to InnoDB or Falcon (ALTER TABLE table ENGINE=Engine, that's it).

What if you don't need transactions in PG?

Let's not forget MySQL has engines like MEMORY, ARCHIVE, BLACKHOLE (not to mention third party engines).

If you don't need transactions in a DB engine (PG, Oracle, MS SQL, etc), then you don't use them.

I was trying to forget about MySQL and it's plethora of engines.

Since the end of 2000 (the 7.1 beta period), I'm an avid PostgreSQL user. All new projects I started were using PostgreSQL and I never had any issues with that configuration.

Meanwhile, MySQL, which I had running for various third-party products like Wordpress, required some maintenance here and then, corrupted on-disk table files (and indexes), produced invalid dumps that were not restorable (and no warnings about that fact) and annoyed me with the inferior command line tool (better by now).

One thing I wish PostgreSQL would add is to set a collation order on a specific index. Right now, in one of my applications, I can't rely on Postgres doing the sorting, forcing me to retrieve all rows and sort on the client side which is a) annoying and b) anything but fast.

But whereas earlier, we had to set LC_COLLATE at initdb-time, now we can do it at createdb time and who knows - maybe we can do it at create index time in the future? I certainly lack the skill to contribute this particular feature.

Used my Christmas holiday converting my personal database library from MySQL to Postgres; I have about 10 projects depending on it. I am still ironing out the small details of the process, but the Lisp ORMs make things easier.

Postgres, keep getting things right, please.

Used my Christmas holiday converting my personal database library from MySQL to Postgres


Found out the hard way that MySQL not only runs fast, but also fails just as fast.

And it also takes your data with it.

All databases need backups, but I don't trust MySQL not to need the restores too.

I am a big supporter of the PostgreSQL project, and I have been using it exclusively for my own projects (recently I started using SQLite for all the experimental ones) - but competition is a good thing and this schadenfreude about MySQL problems is not a mature thing.

Can't somebody (besides me) write an online mysql to postgres schema converter?

I doubt that an automatic schema conversion would really help you as some stuff just works too different between the two databases. An automatic migration can leave you with the false security of having ported your code successfully.

What I'd try is to feed the MySQL schema into postgres (after removing the awful ` quotes around field names) and see what happens.

In cases where postgres doesn't accept the MySQL schema dump, you will have to manually check what you are doing and fix it manually anyways (the exception being auto_increment which you can fix with an easy search and replace process).

Stuff like that "timestamp not null default '0000-00-00'" comes to mind for example. I wouldn't know whether I would drop the invalid default or both the not null and the invalid default - that pretty much depends on the application.

Relational databases are sooo 20th century...

Well exercised, mature and stable?

Applications are open for YC Winter 2020

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact