What is our primary use case?
I use PostgreSQL on-premises to store monitoring data collected by Zabbix Server.
I wanted a database engine that could handle an ingress of a thousand real-time values per second, delete old items without affecting performance, and handle hundreds of user queries at all times.
The solution had to support high compression and time series data while maintaining data integrity and performance.
I wanted the database engine to be easy to tune, secure, and set up.
PostgreSQL matched those requirements and has regular updates and plenty of official and community support resources.
How has it helped my organization?
PostgreSQL greatly improved our monitoring solutions data storage, performance, compression, and processing. Our monitoring solutions run efficiently with little maintenance.
The availability, stability, and reliability of our monitoring solutions greatly improved because the database engine scales out well, is easy to tune, easy to upgrade and manage, and supports extensions and plugins for specific use cases. One such plugin is TimescaleDB and it has proved greatly beneficial for time-series data storage and automatic partitioning of the database.The upgrade of the database has been great too, from 12 to 13 to version 14.
What is most valuable?
The most valuable feature is support for the Timescale DB extension. We managed to reduce the storage space needed to 10% of the original size, without affecting data integrity, and we significantly improved the performance.
The database engine is easy to manage, the tuning is friendly, and the integration with supported extensions is friendly too.
The database engine is free and open-source, too. Since we did everything internally, it has greatly reduced the costs of setting up our systems.
It also supports diverse kinds of replication, which is crucial for a high availability environment that we plan to set in the near future.
What needs improvement?
PostgreSQL uses high memory compared to its counterparts when a highly demanding workload with many database connections is in use, especially one that makes many concurrent connections to the database.
Like many other databases, the tuning is manual through a configuration file. It would be useful if the database engine could detect the specifications of the machine in which it is installed and so bring some levels of auto-tuning.
PostgreSQL replication support isn't so straightforward for multi-sources and master replicas. It will be great if native support of those replication modes become available in the future.
For how long have I used the solution?
I have been using PostgreSQL for more than four years.
What do I think about the stability of the solution?
Stability-wise, I have a great impression.
What do I think about the scalability of the solution?
How are customer service and support?
We haven't used the official support but judging from the available resources on the website and other outlets it seems their support is good.
How would you rate customer service and support?
Which solution did I use previously and why did I switch?
I used other database management systems (MySQL and its variant MariaDB) for my NMS applications before moving to PostgreSQL. I had some optimization issues on MySQL and MariaDB and decided to switch to PostgreSQL, mainly for the TimescaleDB extension support provided on PostgreSQL and which my application natively support including automatic database partitioning and compression. TimescaleDB proved to be helpful since I mostly deal with time series data and the TimescaleDB hypertables improved my applications perfomance greatly.
How was the initial setup?
The initial setup was straightforward, although it needed time to get everything well-tuned.
What about the implementation team?
What was our ROI?
What's my experience with pricing, setup cost, and licensing?
PostgreSQL is free and open-source, so if capable admins are available then the setup cost can be negligible. We use internal resources, so it was completely free for us. One can choose the available official support too.
Which other solutions did I evaluate?
I evaluated other options including MySQL and its variant MariaDB & Percona Server for MySQL, Oracle DB, and SQLite.
What other advice do I have?
For anybody who is considering this solution, my advice is that it is better to do enough research on the specific database engine requirements.
I highly recommend PostgreSQL with TimescaleDB extension for time-series data.
Which deployment model are you using for this solution?
On-premises
Disclosure: I am a real user, and this review is based on my own experience and opinions.
Very interesting Liliana. Thanks!