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.
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.
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.
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.
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 ability to scale and with the portability that a single-file database gives you without losing much of the power and features that SQL gives developers, it's a great choice for testing applications and for the early stages of development when the workload and the data that needs to be stored is not that large.
An SQLite database is a single ordinary disk file that can be located anywhere in the directory hierarchy. It works by sending requests to a single file where all the data is kept instead of communicating with a hosted database which gives access to an interface by making use of sockets and ports. The file format used is also cross-platform, so can easily be migrated to various machines.
This makes SQLite extremely portable throughout different applications, all that's needed to transfer the whole database is to make a copy of the file.
SQLite is made to be extremely lightweight and portable, but it still uses SQL. However, some SQL features such as RIGHT OUTER JOIN and FOR EACH STATEMENT are missing.
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.
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.
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.