When comparing RethinkDB vs PostgreSQL, the Slant community recommends PostgreSQL for most people. In the question“What are the best databases to use for Node.js applications?” PostgreSQL is ranked 1st while RethinkDB is ranked 2nd. The most important reason people chose PostgreSQL is:
PostgreSQL is known to have a very holistic approach to robustness and data integrity which is reflected by it being fully [ACID](https://en.wikipedia.org/wiki/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.
Ranked in these QuestionsQuestion Ranking
Pro Easy install
Only takes about 30 seconds to install. They also have a docker file for running it on AWS, Google Cloud or your own.
Pro Horizontal scalability
RethinkDB is scalable horizontally. It has support for sharding, parallel queries and MVCC concurrency.
Pro Changefeeds (change listeners)
You can listen to changes and trigger code based on these changes.
Pro Powerful query language
Pro Ease of cluster setup
You can directly tell it to shard/replicate and how many shards/replicas depending on the amount of nodes. Each node doesn't need anything except one other node's ip/port in the cluster to join and maybe the auth.
Pro CLI and web administration tools
RethinkDB has administration tools in both CLI and GUI (web app). You can view whats going on right away by going to localhost:8080. The data explorer allows you to run queries on the db.
Pro Auto master promotion
Unlike a lot of other databases where if the master is down the system is down, this one if the master is down someone else is made master so much more peer to peer.
Pro Fully ACID compliant
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.
Pro Strong community
PostgreSQL has a strong community backing it, with guides, tutorials and support for any kind of problem a developer may have.
Pro High performance
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.
Pro Support for JSON data type
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.
Pro Multiple node packages available
There are many packages (like Sequelize) that integrate deeply with the features Postgres offers.
Pro Actively developed
Regular fixes and features are released
Pro Support for geographic objects
PostgreSQL can be extended to have geographic object support through PostGIS and allows for location queries to be run through SQL.
Pro Support Perl and Python for coding stored procedures
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.
Con Cannot run queries from its CLI
Con No user accounts
This is just the database, you need to setup your own auth and user accounts (such as using Auth0).
Con Not suited for small apps
Because of it's complexity and power, it may be an overkill to use PostgreSQL in small applications that will not make use of it's full power.