>>1
very specific target audience
Porn host, huh?
>>5
Comments from that PgSQL vs MySQL review:
- "Mysql has some basic provisions for referential integrity and transactions/rollbacks." -- More like full transaction support with 4 different isolation levels plus row-level locking share mode and for update selection, with referential integrity checking supporting cascaded updates and deletes in the InnoDB engine. Other engines also support transactions; you might want to try newer or more experimental stuff such as solidDB or Falcon.
- MySQL stored procedures language as of today just plain sucks, it's a piece of crap. Postgres has fucking Python, also Perl and TCL, while you're stuck with that god awful "SQL with flow control" in MySQL, and have no functions outside the database (e.g. no filesystem access). You can't even raise fucking exceptions, so if you want to stop an operation from a trigger you have to provoke an error like dropping a table which doesn't exist. You can extend MySQL in three ways: MyPerl and MyLua, which allow you to write functions (with or without side effects) and SELECT output filters with Perl and Lua, but are supposed to be slow, and you can write them with C as well, which is very fast but complicated. Download the sauce, there's an example for a few functions and select procedures there, such as function SOUNDEX or procedure ANALYSE.
- It says Postgres has schemas, like MySQL didn't. MySQL has schemas. They are not associated with any user by default, but you can make it so with user permissions, as in Oracle.
- mysqladmin (and mysqlshow), save for mysqladmin shutdown, are just for pussies who don't know the actual queries performed, when they are as simple as SHOW PROCESSLIST, for example. MySQL has graphical tools for non-geeky people (Administrator and Query Browser) which allow click-click-click-lol editing of configuration, schemas, etc., all that crap.
- As for special features, MySQL also supports different storage engines, which allow for in-memory tables, compressed tables, or other databases developed by third parties.
- MySQL's InnoDB also features MVCC.
- ALTER TABLE: On MySQL, you can also change the storage engine, in case you want to compare with others.
- NLS: That's a lie, MySQL has great Unicode support, and in fact it has too much support for character sets. It only needed to support Unicode in UTF-8, and maybe UTF-16, but it goes and supports all kinds of character sets and encodings, which can be finegrained: there's a charcter set for the system (e.g. filesystem), then a default charset per server, default per schema, default per table, and even per column, so you can have a single table with different columns in different character sets, but as I said, all character sets are bullshit except for the one and only acceptable character set which is defined by ISO 10646 and semantically enhanced and specified by Unicode. In any case, all character sets come with great collation support for every language, as well as the Unicode Collation Algorithm which is the one you should be using.
- As for dates, MySQL has awesome timezone support with TIMESTAMP columns (you connect and set your time zone, then you can forget time zones ever existed: when you select you obtain all dates in your local time, and when you write you write all dates in your local time).
Also, the review missed very important features:
- Backups: MySQL is not too strong here, but a hot consistent export with InnoDB is possible (InnoDB physical hot backup is possible, but not for free). MyISAM consistent export or hot backup require locking. It has the binary log which logs changes to the database regardless of storage engine.
- Replication: MySQL is very strong here and has good replications support, which works great as a backup method and a way to infinitely (yes) scale reads. (Multi-master replication or circular replication won't work well though.) I've heard Postgres replication is a joke (a trigger hack, only replicates INSERT, UPDATE and DELETE, and breaks more often than /b gets posted to). Also, MySQL's replication is not ENTERPRISE, it's simple.
- Clustering. Clustering is an ENTERPRISE feature that will help your business maximize profits by reducing operation costs and increasing customer satisfaction thanks to its XML-based two-tier AJAX engine. MySQL's cluster is good for one application, and terrible for most, so don't touch it. There are commercial clusters but I've heard they aren't the bomb either. And I've heard Postgres is about the same, only without an official in-memory cluster like MySQL's.