What is our primary use case?
Currently, I'm doing a lot of source applications with Ruby on Rails, React, and mobile applications. PostgreSQL is my preferred database over MySQL. It's open-source and licenses are free, so it is excellent. The SQL queries are almost the same as MySQL.
What is most valuable?
Clustering is the number one feature. It is also open-source so it is free. It can also be clustered, to allow fault tolerance. MySQL has to be licensed, but PostgreSQL does all the same things. I have deployed both. You benefit from the way you use it.
What needs improvement?
It could be improved by using parallelization. We want distributed computing. Some databases handle huge volumes of data better, such as the NoSQL database, MongoDB which can handle 100 000, or a million people using the same data search. PostgreSQL is going to take longer to do this, but it is more structured, and unlike MongoDB data is less likely to be duplicated. Large volumes of data can be handled better in PostgreSQL if the queries are written well.
For how long have I used the solution?
I have been using PostgreSQL for about 2 years. I used to use version 9, about two years ago but right now I'm using version 10 or 12. I know how to create database functions. I know how to create relationships between data like primary keys and foreign keys etc.
What do I think about the stability of the solution?
I think PostgreSQL is more stable than MySQL.
What do I think about the scalability of the solution?
As an RDBMS, a relational database management system, it scales well.
How are customer service and technical support?
I have mainly used the Stack Overflow site for support, which is not technical support in particular. I have never been in a situation whereby I'm stuck and I have to go and ask PostgreSQL support.
How was the initial setup?
The difficulty of the initial setup depends on the application you are deploying the code to. It can be integrated with Docker to enable automation of this process. I put PostgreSQL in a Docker container and then I just collect it. It just works wherever I deploy it. It takes less than three minutes. I use a continuous integration process. The Docker orchestration engine such as Kubernetes or Docker Swarm can be used to integrate with it. I store the code in GitHub or GitLab and your code is always there. Depending on the technology you're using, some things change in your configuration.
What about the implementation team?
I have deployed them to Oracle recently. I've also deployed it in the cloud. There's really nothing special about the cloud, as long as I use the PostgreSQL machine I can deploy it anywhere. I want to deploy it on the Google cloud platform, and Amazon Web Services as these are well known virtual machines.
Which other solutions did I evaluate?
When it comes to pros, I would put MySQL and PostgreSQL in the same class. let's say I'm trying to write to the database and then the power went off. It will still keep the data integral. I don't have duplicated data, and data integrity is intact. With NoSQL databases I have to duplicate queries in case something like this happens I don't know whether my data is going to be integral in cases like a failure situation. PostgreSQL has the rollback function which remains integral. I cannot build a search engine using PostgreSQL, because that would be a very expensive hit on resources. Alternatively, with the ElasticSearch utility, and the use of load balancing, it is very easy to use. Elasticsearch returns substantial results and works in the background. I cannot do that with MySQL or PostgreSQL databases as that's actually a very expensive use of resources.
What other advice do I have?
My advice would be to use PostgreSQL instead of MySQL because of licensing issues. Another reason is that Oracle may remove MySQL soon or add substantial costs to using it It may even turn into something like MariaDB, and then you would need to know if MariaDB and MySQL work the same? PostgreSQL really works well. There are a lot of other databases around right now, but PostgreSQL is the most popular. It is not like a hammer and a nail situation whereby it is the only thing you have to use. If you need a relational database management system, go for PostgreSQL instead of MariaDB or MySQL, then use it side to side. Can also consider other engines out there, like other NoSQL engines, perhaps.
I would give it an 8 out of 10. PostgreSQL is not suitable for all types of applications, hence why I gave it an 8 instead of a 10.
Which deployment model are you using for this solution?
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Amazon Web Services (AWS)