PostgreSQL is known to have a very holistic approach to robustness and data integrity which is reflected by it being fully ACID compliant.
PostgreSQL has always been strict about making sure data is valid before allowing it into the database, and there is no way for a client to bypass those checks.
JSON data can be stored as a column with optional indexes. In 9.4 (upcoming at the time of this writing), JSONB will be a binary version of JSON that will save space. It's like the best of the NO-SQL world without having to give up ACID and Relationships. This means that cascading deletes can be done in a single Transaction across multiple JSON documents.
Postgres is highly extendable programmatically through custom procedures that are called "stored procedures". These functions give you the ability to simplify the execution of repeated and/or complex operations.
Because of it's popularity and regardless of it's extremely powerful features, Postgres has a lot of third-party apps and tools that make it easy to develop and manage applications built with it.
PostgreSQL is known to have a very holistic approach to robustness and data integrity which is reflected by it being fully ACID compliant.
PostgreSQL has always been strict about making sure data is valid before allowing it into the database, and there is no way for a client to bypass those checks.
Depending on your requirements, ACID compliance might be important.
PostgreSQL performance increases with each release, this is also proven by many benchmark tests.
Notable performance features include:
As PostgreSQL only supports one storage engine, it has been able to integrate and optimise it and with the rest of the database. This has resulted in multiple benefits such as the ability to allow different transaction types to co-exist efficiently without the need to select storage engine types once for each table ahead of time.
On the fly data compression resulting in less IO required for reading.
Asynchronous + synchronous Replication.
PostgreSQL supports a asynchronous API for use by client applications. It is reported to increase performance by up to 40% and is not supported by MySQL.
Designed to scale very well with large numbers of cores at high concurrency levels.
CTE (Common Table Expression), is a feature that lets you define temporary tables that exist just for one query. Think variables, but for sub queries. Very useful for structuring complex queries in a more comprehensible way.
Postgres supports popular languages for coding stored procedures, such as Perl and Python. So, you can fairly easy transform just DB-server to reliable Service with complex business logic.
Mysql has always been faster than Postgres but when the creators of MySQL sold it to Oracle and then continued development on a fork called MariaDB, they surpassed Oracle who didn't maintain MySQL for over a year and improved it well beyond what Oracle currently has done.
MariaDB/Mysql has enormous flexibility in that it enables you to swap out engines for your needs, it autoincrements and send back key with INSERTS. It takes into consideration alot of basic concerns that may not be ACID compliant but are more in line with day-to-day business logic and modern api development.
MariaDB has dynamic column support which allows for some NoSQL type functionality. So one database interface can provide both SQL and NoSQL for different software development needs.
All development decisions for MariaDB can be reviewed and debated on a public mailing list or in the public bug tracker. Contributing to MariaDB is easy and the patch flow is fully transparent and public. But it's not all about the code contribution either - MariaDB also has very active documentation efforts and other related things that help developers in their day-to-day database administration.
When you are trying to do something in MySQL and something goes wrong it will simply give you an error message with an error code. WHich does not say much about what went wrong unless you look it up online. This can be a little cumbersome during development.
Because of it's popularity there are a lot of tutorials and guides out there that help developers install and work with MySQL. The installation process itself is not very hard and there are multiple powerful GUI tools that make it extremely easy to work with MySQL for a beginner.
Since MySQL is one of the most popular relational databases, maybe the most popular, there exist many third-party tools and applications that help developers to use MySQL in their development.