What is most valuable?
PostgreSQL, especially the latest versions, comes with a very rich set of server side programming tools, while providing speed, data consistency and the transaction's coherence.
This is a very wide answer, but this large environment is providing fast solutions to various needs and I see this the main power.
How has it helped my organization?
I have a quick example about how it reduced the amount of backend code and also improved the application's performance. When you are in a scenario where your application has an input, and based on that, you have to do several back and forth exchanges with the database to get more information or do data changes, you can do that transactionally by using a stored procedure.
Some may say that this puts logic in the database, and yes it does, but it's the most efficient way to get the right output. By exploiting the PL/PgSQL capabilities it can be done and maintained more efficiently than usual backend code.
Another reason for improvement is that PL/PgSQL is a type safe language and this reduces considerably the amount of errors and even the functional flow of the application. Stored procedures are transactional, so either everything goes well, or an error happens.
What needs improvement?
Starting with v9 it can be seen an intensive activity to bring more features, more performance or productivity. I would like to see it be more reliable, and easier if possible, to make PostgreSQL clusters - more machines working together as a single instance .Providing an autonomous solution to share data across machines or replicate when it's needed. I would like to see horizontal scaling, up and down, made easier, and if something happens (I've rarely encounter cases after version 8), easier recovery from database general failure.
For how long have I used the solution?
I have been using PostgreSQL from v7.2 through v9.4, over more than decade. I have deployed it on both Linux and Windows machines.
My first interaction was in October 2002 and since then I've continued to use it for various applications or services, varying from a few tens of thousands of records per table to hundreds of millions and more complex deployments.
What was my experience with deployment of the solution?
The source for Linux machines were usually ("usually" because in the beginning you had to compile certain versions yourself, especially for custom setups) the operating system's repositories and for Windows the packages prepared on the official PostgreSQL website.
What do I think about the stability of the solution?
I've experienced stability issues on versions 7 and 8, but setup properly none (in my case) on version 9.
What do I think about the scalability of the solution?
Database mirroring was very impressive five to seven years ago, and since then many things have changed. At that time, horizontal scalability wasn't mature enough and we preferred to manage multiple instances independently, something that is going on today. One of my next projects is to test the limits of todays solutions for PostgreSQL clusters.
How are customer service and technical support?
First of all I think PostgreSQL's documentation is very rich (still missing more complex examples or aspects) and provides a lot of answers. Then you may find a large community and forums. And more professional people able to help.
I've always followed this path before calling a certain customer service or support, of course with the cost of investing a lot of personal time to understand things and apply measures. But this was a personal curiosity and pleasure.
Which solution did I use previously and why did I switch?
I've used a larger set of databases (including the most well-known and a few more exotic) and setups. Definitively PostgreSQL is a serious contender at the top of the list. I chose it because it's fast, reliable, rich in functionality, and it has no commercial costs for its acquisition.
How was the initial setup?
Starting a simple database is straightforward, but when it comes to set up, machines for heavy duty operations, read or write, there is a consistent learning curve to take into consideration.
PostgreSQL is a complex database, but once your start mastering its features you discover that things work.
What about the implementation team?
I have always implemented in-house and sometimes I've looked around for vendor sources just to understand with what they come more.
Definitiely they help reduce the learning curve and there are promises for richer scalability options.
What was our ROI?
In the cases I've seen ROI was very good and it touched visible aspects from reduced ETA of developed applications, to better performance, easier maintenance and faster support.
What's my experience with pricing, setup cost, and licensing?
The investment was in proper hardware and learning curve to master the database. Charging for expertise to deploy PostgreSQL depends on the expected setup, but in all cases, my choice would be to include a database specialist as early as possible within the development team.
The reason is that pure developers tend to rely on database power, making poorly optimized queries or choosing bad structures that explode later. The data warehouse team then have to clean it up, causing a loss for everyone.
What other advice do I have?
This is a very good product, and I'm very pleased, especially with the latest versions. I haven't found the perfect database yet, but definitively PostgreSQL is a candidate to consider, especially if you take into account that comes for free and is open source.
I had many debates about PostgreSQL and I've never seen yet someone getting to know it and complaining about it. It simply helps and works, but you have to be good at it. Going for commercial solutions might bring serious costs and a feeling of confidence, but this database is not only for try or start, it's reliable and well done.